# HG changeset patch # User Augie Fackler # Date 1225128832 18000 # Node ID af7ac6c03452523eeedc2fd9f50acb3bd3362ced # Parent 485ae93bc358efe9e041fa3f177e2ce565a7d71e Fix a bug with added files from outside branches/trunk/tags. diff --git a/hg_delta_editor.py b/hg_delta_editor.py --- a/hg_delta_editor.py +++ b/hg_delta_editor.py @@ -510,6 +510,9 @@ class HgChangeReceiver(delta.Editor): # TODO(augie) handle this better, actually mark a copy (from_file, from_branch) = self._path_and_branch_for_path(copyfrom_path) + if not from_file: + self.missing_plaintexts.add(path) + return ha = self.get_parent_revision(copyfrom_revision + 1, from_branch) ctx = self.repo.changectx(ha) diff --git a/tests/fixtures/file_renamed_in_from_outside_btt.svndump b/tests/fixtures/file_renamed_in_from_outside_btt.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/file_renamed_in_from_outside_btt.svndump @@ -0,0 +1,238 @@ +SVN-fs-dump-format-version: 2 + +UUID: df2126f7-00ab-4d49-b42c-7e981dde0bcf + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-10-07T22:49:12.059692Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 111 +Content-length: 111 + +K 7 +svn:log +V 11 +Empty dirs. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T22:49:41.118037Z +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: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add alpha +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T23:23:02.991743Z +PROPS-END + +Node-path: trunk/alpha +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 12 +Text-content-md5: 3c72ebf8bbd7fa88b1fdcee5398b5a17 +Content-length: 22 + +PROPS-END +file: alpha + + +Revision-number: 3 +Prop-content-length: 115 +Content-length: 115 + +K 7 +svn:log +V 15 +Add third_party +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-27T03:16:13.831333Z +PROPS-END + +Node-path: third_party +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: third_party/magic +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: third_party/magic/the_magic_software +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 7 +Text-content-md5: bc82cb068ef102a1f4e296992e5979ef +Content-length: 17 + +PROPS-END +magic! + + +Revision-number: 4 +Prop-content-length: 131 +Content-length: 131 + +K 7 +svn:log +V 31 +Copy magic in from third_party. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-27T03:16:32.737023Z +PROPS-END + +Node-path: trunk/magic +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 3 +Node-copyfrom-path: third_party/magic +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + +Revision-number: 5 +Prop-content-length: 132 +Content-length: 132 + +K 7 +svn:log +V 32 +making a file I can rename over. +K 10 +svn:author +V 5 +Augie +K 8 +svn:date +V 27 +2008-10-27T17:06:06.012783Z +PROPS-END + +Node-path: third_party/LICENSE.file +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 12 +Text-content-md5: 42b502668b588785b91cfea1a3fa834a +Content-length: 22 + +PROPS-END +A joke file + + +Revision-number: 6 +Prop-content-length: 149 +Content-length: 149 + +K 7 +svn:log +V 49 +Making a rename that might demonstrate a problem. +K 10 +svn:author +V 5 +Augie +K 8 +svn:date +V 27 +2008-10-27T17:06:32.785437Z +PROPS-END + +Node-path: third_party/LICENSE.file +Node-action: delete + + +Node-path: trunk/LICENSE.file +Node-kind: file +Node-action: add +Node-copyfrom-rev: 5 +Node-copyfrom-path: third_party/LICENSE.file +Text-copy-source-md5: 42b502668b588785b91cfea1a3fa834a +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + 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 @@ -104,6 +104,11 @@ class TestBasicRepoLayout(unittest.TestC 'c4e669a763a70f751c71d4534a34a65f398d71d4') self.assertEqual(len(repo.changelog), 2) + def test_file_renamed_in_from_outside_btt(self): + repo = self._load_fixture_and_fetch( + 'file_renamed_in_from_outside_btt.svndump') + self.assert_('LICENSE.file' in repo['tip']) + class TestStupidPull(unittest.TestCase): def setUp(self): self.oldwd = os.getcwd()