# HG changeset patch # User Max Bowsher # Date 1246727538 -3600 # Node ID 45df4d9320fa91d7e4f982673462c0bf05a8c2e9 # Parent ba65e97538d1cc39492e7d3cfaa9bd24cbe4c168 Fix 'parent dir of a branch is deleted' refactoring from 343da84. diff --git a/hgsubversion/svnmeta.py b/hgsubversion/svnmeta.py --- a/hgsubversion/svnmeta.py +++ b/hgsubversion/svnmeta.py @@ -393,7 +393,7 @@ class SVNMeta(object): if paths[p].action == 'D': for known in self.branches: if self.remotename(known).startswith(p): - self.current.closebranches.add(known) # case 5 + self.closebranches.add(known) # case 5 parent = self._determine_parent_branch( p, paths[p].copyfrom_path, paths[p].copyfrom_rev, revision.revnum) if not parent and paths[p].copyfrom_path: diff --git a/tests/fixtures/branch_delete_parent_dir.sh b/tests/fixtures/branch_delete_parent_dir.sh new file mode 100755 --- /dev/null +++ b/tests/fixtures/branch_delete_parent_dir.sh @@ -0,0 +1,26 @@ +#!/bin/sh +mkdir temp +cd temp +svnadmin create repo +svn co file://`pwd`/repo wc +cd wc +mkdir branches trunk tags +svn add * +svn ci -m 'btt' +echo foo > trunk/foo +svn add trunk/foo +svn ci -m 'add file' +svn up +svn cp trunk branches/dev_branch +svn ci -m 'branch' +svn up +svn rm branches +svn ci -m 'delete branches dir' +cd .. +cd .. +svnadmin dump temp/repo > branch_delete_parent_dir.svndump +echo +echo 'Complete.' +echo 'You probably want to clean up temp now.' +echo 'Dump in branch_delete_parent_dir.svndump' +exit 0 diff --git a/tests/fixtures/branch_delete_parent_dir.svndump b/tests/fixtures/branch_delete_parent_dir.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/branch_delete_parent_dir.svndump @@ -0,0 +1,137 @@ +SVN-fs-dump-format-version: 2 + +UUID: 60132d6f-a460-4b38-8ae6-633264894f73 + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2009-06-30T23:57:20.562207Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 101 +Content-length: 101 + +K 7 +svn:log +V 3 +btt +K 10 +svn:author +V 4 +maxb +K 8 +svn:date +V 27 +2009-06-30T23:57:21.078798Z +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: 106 +Content-length: 106 + +K 7 +svn:log +V 8 +add file +K 10 +svn:author +V 4 +maxb +K 8 +svn:date +V 27 +2009-06-30T23:57:22.098826Z +PROPS-END + +Node-path: trunk/foo +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 4 +Text-content-md5: d3b07384d113edec49eaa6238ad5ff00 +Text-content-sha1: f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 +Content-length: 14 + +PROPS-END +foo + + +Revision-number: 3 +Prop-content-length: 104 +Content-length: 104 + +K 7 +svn:log +V 6 +branch +K 10 +svn:author +V 4 +maxb +K 8 +svn:date +V 27 +2009-06-30T23:57:25.055724Z +PROPS-END + +Node-path: branches/dev_branch +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk + + +Revision-number: 4 +Prop-content-length: 118 +Content-length: 118 + +K 7 +svn:log +V 19 +delete branches dir +K 10 +svn:author +V 4 +maxb +K 8 +svn:date +V 27 +2009-06-30T23:57:27.072926Z +PROPS-END + +Node-path: branches +Node-action: delete + + diff --git a/tests/test_fetch_branches.py b/tests/test_fetch_branches.py --- a/tests/test_fetch_branches.py +++ b/tests/test_fetch_branches.py @@ -116,6 +116,12 @@ class TestFetchBranches(test_util.TestBa def test_branches_weird_moves_stupid(self): self.test_branches_weird_moves(True) + def test_branch_delete_parent_dir(self, stupid=False): + repo = self._load_fixture_and_fetch('branch_delete_parent_dir.svndump', + stupid) + self.assertEqual(node.hex(repo['tip'].node()), + '4108a81a82c7925d5551091165dc54c41b06a8a8') + def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchBranches), ]