# HG changeset patch # User Dirkjan Ochtman # Date 1239188843 -7200 # Node ID c90cfa665b8190a24eea6f7abe08baf4ec558817 # Parent c34abd2448b7d67bb76fb7dd8e85542f645eb773 Cope with date-less revisions. diff --git a/fetch_command.py b/fetch_command.py --- a/fetch_command.py +++ b/fetch_command.py @@ -586,8 +586,8 @@ def stupid_svn_server_pull_rev(ui, svn, break if not is_closed: deleted_branches[branch] = branchtip - date = r.date.replace('T', ' ').replace('Z', '').split('.')[0] - date += ' -0000' + + date = hg_editor.fixdate(r.date) check_deleted_branches = set() for b in branches: parentctx = hg_editor.repo[hg_editor.get_parent_revision(r.revnum, b)] diff --git a/hg_delta_editor.py b/hg_delta_editor.py --- a/hg_delta_editor.py +++ b/hg_delta_editor.py @@ -129,11 +129,22 @@ class HgChangeReceiver(delta.Editor): self.readauthors(authors) if self.authors: self.writeauthors() + + self.lastdate = '1970-01-01 00:00:00' self.includepaths = {} self.excludepaths = {} if filemap and os.path.exists(filemap): self.readfilemap(filemap) + def fixdate(self, date): + if date is not None: + date = date.replace('T', ' ').replace('Z', '').split('.')[0] + date += ' -0000' + self.lastdate = date + else: + date = self.lastdate + return date + def __setup_repo(self, repo_path): """Verify the repo is going to work out for us. @@ -573,8 +584,7 @@ class HgChangeReceiver(delta.Editor): files_to_commit.sort() branch_batches = {} rev = self.current_rev - date = rev.date.replace('T', ' ').replace('Z', '').split('.')[0] - date += ' -0000' + date = self.fixdate(rev.date) # build up the branches that have files on them for f in files_to_commit: diff --git a/tests/fixtures/test_no_dates.svndump b/tests/fixtures/test_no_dates.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/test_no_dates.svndump @@ -0,0 +1,133 @@ +SVN-fs-dump-format-version: 2 + +UUID: 3b9ee152-ff20-493a-9d97-5d739715df90 + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2009-04-08T10:33:20.055686Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 55 +Content-length: 55 + +K 7 +svn:log +V 4 +init +K 10 +svn:author +V 3 +djc +PROPS-END + +Node-path: branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: tags +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: trunk +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Revision-number: 2 +Prop-content-length: 56 +Content-length: 56 + +K 7 +svn:log +V 5 +add a +K 10 +svn:author +V 3 +djc +PROPS-END + +Node-path: trunk/a +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 2 +Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3 +Content-length: 12 + +PROPS-END +a + + +Revision-number: 3 +Prop-content-length: 98 +Content-length: 98 + +K 7 +svn:log +V 1 +b +K 10 +svn:author +V 3 +djc +K 8 +svn:date +V 27 +2009-04-08T10:35:21.843827Z +PROPS-END + +Node-path: trunk/a +Node-kind: file +Node-action: change +Text-content-length: 3 +Text-content-md5: daa8075d6ac5ff8d0c6d4650adb4ef29 +Content-length: 3 + +ab + + +Revision-number: 4 +Prop-content-length: 52 +Content-length: 52 + +K 7 +svn:log +V 1 +c +K 10 +svn:author +V 3 +djc +PROPS-END + +Node-path: trunk/a +Node-kind: file +Node-action: change +Text-content-length: 4 +Text-content-md5: 0bee89b07a248e27c83fc3d5951213c1 +Content-length: 4 + +abc + + diff --git a/tests/test_fetch_command.py b/tests/test_fetch_command.py --- a/tests/test_fetch_command.py +++ b/tests/test_fetch_command.py @@ -8,6 +8,12 @@ import test_util class TestBasicRepoLayout(test_util.TestBase): + + def test_no_dates(self): + repo = self._load_fixture_and_fetch('test_no_dates.svndump') + self.assertEqual(repo[0].date(), (-3600.0, -3600)) + self.assertEqual(repo[1].date(), repo[2].date()) + def test_fresh_fetch_single_rev(self): repo = self._load_fixture_and_fetch('single_rev.svndump') self.assertEqual(node.hex(repo['tip'].node()),