Mercurial > hgsubversion
changeset 237:c90cfa665b81
Cope with date-less revisions.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Wed, 08 Apr 2009 13:07:23 +0200 |
parents | c34abd2448b7 |
children | e8b3ca865f93 |
files | fetch_command.py hg_delta_editor.py tests/fixtures/test_no_dates.svndump tests/test_fetch_command.py |
diffstat | 4 files changed, 153 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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)]
--- 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:
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 + +
--- 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()),