Cope with date-less revisions.

This commit is contained in:
Dirkjan Ochtman 2009-04-08 13:07:23 +02:00
parent 11da64944a
commit 34a1dfc322
4 changed files with 153 additions and 4 deletions

View File

@ -586,8 +586,8 @@ def stupid_svn_server_pull_rev(ui, svn, hg_editor, r):
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)]

View File

@ -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:

133
tests/fixtures/test_no_dates.svndump vendored Normal file
View File

@ -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

View File

@ -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()),