changeset 136:cf6fe8457570

Fix an apparent regression where branch name didn't get properly stored for commits forced on empty branches.
author Augie Fackler <durin42@gmail.com>
date Thu, 11 Dec 2008 17:34:33 -0600
parents e33c7a4bcebb
children 904a4b08f70f
files hg_delta_editor.py tests/fixtures/branch_prop_edit.sh tests/fixtures/branch_prop_edit.svndump tests/test_fetch_command.py
diffstat 4 files changed, 248 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/hg_delta_editor.py
+++ b/hg_delta_editor.py
@@ -354,7 +354,6 @@ class HgChangeReceiver(delta.Editor):
             if b not in branch_batches:
                 branch_batches[b] = []
             branch_batches[b].append((p, f))
-
         for branch, files in branch_batches.iteritems():
             if branch in self.commit_branches_empty and files:
                 del self.commit_branches_empty[branch]
@@ -434,20 +433,16 @@ class HgChangeReceiver(delta.Editor):
             parent_ctx = self.repo.changectx(ha)
             def del_all_files(*args):
                 raise IOError
-            extra = {}
-            if parent_ctx.children():
-                # Target isn't an active head, no need to do things to it.
-                continue
-            if branch in self.branches_to_delete:
-                extra['branch'] = 'closed-branch'
-            # True here means nuke all files
-            files = []
+           # True here meant nuke all files, shouldn't happen with branch closing
             if self.commit_branches_empty[branch]:
-                files = parent_ctx.manifest().keys()
+               assert False, 'Got asked to commit non-closed branch as empty with no files. Please report this issue.'
+            extra = {}
+            if branch:
+                extra['branch'] = branch
             current_ctx = context.memctx(self.repo,
                                          (ha, node.nullid),
                                          rev.message or ' ',
-                                         files,
+                                         [],
                                          del_all_files,
                                          '%s%s' % (rev.author,
                                                    self.author_host),
new file mode 100755
--- /dev/null
+++ b/tests/fixtures/branch_prop_edit.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+mkdir temp
+cd temp
+svnadmin create repo
+svn co file://`pwd`/repo wc
+cd wc
+mkdir branches trunk
+svn add *
+svn ci -m 'branches trunk'
+svn up
+
+cd trunk
+for a in alpha beta gamma ; do
+    echo $a > $a
+    svn add $a
+done
+svn ci -m 'Files.'
+cd ..
+svn up
+
+svn cp trunk branches/dev_branch
+svn ci -m 'make a branch'
+svn up
+
+cd branches/dev_branch
+echo epsilon > epsilon
+svn add epsilon
+svn ci -m 'Add a file on the branch.'
+svn up
+cd ../..
+
+cd branches/dev_branch
+svn ps 'svn:ignore' 'delta' .
+svn ci -m 'Commit bogus propchange.'
+svn up
+cd ../../..
+
+pwd
+svnadmin dump repo > ../branch_prop_edit.svndump
+cd ..
+echo 'Dump created in branch_prop_edit.svndump. You can probably delete temp.'
+exit 0
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/branch_prop_edit.svndump
@@ -0,0 +1,191 @@
+SVN-fs-dump-format-version: 2
+
+UUID: ab14e60b-7e4b-473f-980a-26ace458a00f
+
+Revision-number: 0
+Prop-content-length: 56
+Content-length: 56
+
+K 8
+svn:date
+V 27
+2008-12-12T00:18:13.309956Z
+PROPS-END
+
+Revision-number: 1
+Prop-content-length: 114
+Content-length: 114
+
+K 7
+svn:log
+V 14
+branches trunk
+K 10
+svn:author
+V 5
+durin
+K 8
+svn:date
+V 27
+2008-12-12T00:18:14.083854Z
+PROPS-END
+
+Node-path: branches
+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: 105
+Content-length: 105
+
+K 7
+svn:log
+V 6
+Files.
+K 10
+svn:author
+V 5
+durin
+K 8
+svn:date
+V 27
+2008-12-12T00:18:16.270290Z
+PROPS-END
+
+Node-path: trunk/alpha
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: 9f9f90dbe3e5ee1218c86b8839db1995
+Content-length: 16
+
+PROPS-END
+alpha
+
+
+Node-path: trunk/beta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 5
+Text-content-md5: f0cf2a92516045024a0c99147b28f05b
+Content-length: 15
+
+PROPS-END
+beta
+
+
+Node-path: trunk/gamma
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: 303febb9068384eca46b5b6516843b35
+Content-length: 16
+
+PROPS-END
+gamma
+
+
+Revision-number: 3
+Prop-content-length: 113
+Content-length: 113
+
+K 7
+svn:log
+V 13
+make a branch
+K 10
+svn:author
+V 5
+durin
+K 8
+svn:date
+V 27
+2008-12-12T00:18:19.069446Z
+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: 125
+Content-length: 125
+
+K 7
+svn:log
+V 25
+Add a file on the branch.
+K 10
+svn:author
+V 5
+durin
+K 8
+svn:date
+V 27
+2008-12-12T00:18:21.088611Z
+PROPS-END
+
+Node-path: branches/dev_branch/epsilon
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 8
+Text-content-md5: c40719840583e3f3e6744c02828d7cd9
+Content-length: 18
+
+PROPS-END
+epsilon
+
+
+Revision-number: 5
+Prop-content-length: 124
+Content-length: 124
+
+K 7
+svn:log
+V 24
+Commit bogus propchange.
+K 10
+svn:author
+V 5
+durin
+K 8
+svn:date
+V 27
+2008-12-12T00:18:23.078263Z
+PROPS-END
+
+Node-path: branches/dev_branch
+Node-kind: dir
+Node-action: change
+Prop-content-length: 37
+Content-length: 37
+
+K 10
+svn:ignore
+V 6
+delta
+
+PROPS-END
+
+
--- a/tests/test_fetch_command.py
+++ b/tests/test_fetch_command.py
@@ -117,6 +117,15 @@ class TestBasicRepoLayout(test_util.Test
         self.assertEqual(node.hex(repo['tip'].node()),
                          '9cf09e6ff7fa938188c3bcc9dd87abd7842c080c')
 
+    def test_propedit_with_nothing_else(self, stupid=False):
+        repo = self._load_fixture_and_fetch('branch_prop_edit.svndump',
+                                            stupid=stupid)
+        self.assertEqual(repo['tip'].description(), 'Commit bogus propchange.')
+        self.assertEqual(repo['tip'].branch(), 'dev_branch')
+
+    def test_propedit_with_nothing_else_stupid(self):
+        self.test_propedit_with_nothing_else(stupid=True)
+
 
 class TestStupidPull(test_util.TestBase):
     def test_stupid(self):