changeset 473:45df4d9320fa

Fix 'parent dir of a branch is deleted' refactoring from 343da84.
author Max Bowsher <maxb@f2s.com>
date Sat, 04 Jul 2009 18:12:18 +0100
parents ba65e97538d1
children 63cb630d667d
files hgsubversion/svnmeta.py tests/fixtures/branch_delete_parent_dir.sh tests/fixtures/branch_delete_parent_dir.svndump tests/test_fetch_branches.py
diffstat 4 files changed, 170 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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:
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
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
+
+
--- 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),
           ]