[PATCH] hgconvert: preserve revision timestamps from hg to svn

Florent Angebault florent.angebault at free.fr
Fri Jul 12 10:52:54 CDT 2013


# HG changeset patch
# User Florent Angebault <florent.angebault at free.fr>
# Date 1373641599 -7200
#      Fri Jul 12 17:06:39 2013 +0200
# Node ID 5834870243cb49bb1c31554bced1fd5b09b4850c
# Parent  41c4bdd1d585a9196bd6c668fd9fce5e67a1028a
hgconvert: preserve revision timestamps from hg to svn

diff --git a/hgext/convert/subversion.py b/hgext/convert/subversion.py
--- a/hgext/convert/subversion.py
+++ b/hgext/convert/subversion.py
@@ -2,7 +2,7 @@
 #
 # Copyright(C) 2007 Daniel Holth et al
 
-import os, re, sys, tempfile, urllib, urllib2, xml.dom.minidom
+import os, re, sys, tempfile, urllib, urllib2, xml.dom.minidom, dateutil.parser
 import cPickle as pickle
 
 from mercurial import strutil, scmutil, util, encoding
@@ -992,6 +992,7 @@
 ACTION="$5"
 
 if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
+if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:date" ]; then exit 0; fi
 if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi
 if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi
 
@@ -1242,6 +1243,11 @@
             if commit.branch and commit.branch != 'default':
                 self.run('propset', 'hg:convert-branch', commit.branch,
                          revprop=True, revision=rev)
+            if commit.date:
+                date = dateutil.parser.parse(commit.date)
+                self.run('propset', 'svn:date',
+                         date.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
+                         revprop=True, revision=rev)
             for parent in parents:
                 self.addchild(parent, rev)
             return self.revid(rev)


More information about the Mercurial-devel mailing list