changeset 389:a8811c84e3ee

tags: Fix an improper parent calculation.
author Augie Fackler <durin42@gmail.com>
date Mon, 01 Jun 2009 11:21:47 -0500
parents 5071b8511572
children afe93f14a361
files hgsubversion/hg_delta_editor.py tests/fixtures/tag_name_same_as_branch.sh tests/fixtures/tag_name_same_as_branch.svndump tests/test_tags.py
diffstat 4 files changed, 432 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgsubversion/hg_delta_editor.py
+++ b/hgsubversion/hg_delta_editor.py
@@ -563,7 +563,7 @@ class HgChangeReceiver(delta.Editor):
         for b, tags in branches.iteritems():
 
             # modify parent's .hgtags source
-            parent = self.repo[{None: 'default'}.get(b, b)]
+            parent = self.repo[self.get_parent_revision(rev.revnum, b)]
             if '.hgtags' not in parent:
                 src = ''
             else:
new file mode 100755
--- /dev/null
+++ b/tests/fixtures/tag_name_same_as_branch.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+mkdir temp
+cd temp
+svnadmin create repo
+REPOPATH="file://`pwd`/repo"
+svn co $REPOPATH wc
+cd wc
+mkdir -p branches/magic trunk tags
+svn add *
+svn ci -m 'btt'
+cd branches/magic
+for a in alpha beta gamma delta iota zeta eta theta ; do
+    echo $a > $a
+    svn add $a
+    svn ci -m "Add file $a"
+done
+cd ../..
+svn up
+svn cp $REPOPATH/branches/magic $REPOPATH/tags/magic -m 'Make magic tag'
+svn rm $REPOPATH/branches/magic/theta -m 'remove a file'
+svn cp $REPOPATH/branches/magic $REPOPATH/tags/magic2 -m 'Tag magic again'
+
+cd ../..
+svnadmin dump temp/repo > tag_name_same_as_branch.svndump
+echo
+echo 'Complete.'
+echo 'You probably want to clean up temp now.'
+echo 'Dump in tag_name_same_as_branch.svndump'
+exit 0
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/tag_name_same_as_branch.svndump
@@ -0,0 +1,388 @@
+SVN-fs-dump-format-version: 2
+
+UUID: 8ede5731-e772-49cc-a297-c19c9844b692
+
+Revision-number: 0
+Prop-content-length: 56
+Content-length: 56
+
+K 8
+svn:date
+V 27
+2009-06-01T16:09:33.850620Z
+PROPS-END
+
+Revision-number: 1
+Prop-content-length: 105
+Content-length: 105
+
+K 7
+svn:log
+V 3
+btt
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:34.084216Z
+PROPS-END
+
+Node-path: branches
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: branches/magic
+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: 117
+Content-length: 117
+
+K 7
+svn:log
+V 14
+Add file alpha
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:35.078795Z
+PROPS-END
+
+Node-path: branches/magic/alpha
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: 9f9f90dbe3e5ee1218c86b8839db1995
+Text-content-sha1: d046cd9b7ffb7661e449683313d41f6fc33e3130
+Content-length: 16
+
+PROPS-END
+alpha
+
+
+Revision-number: 3
+Prop-content-length: 116
+Content-length: 116
+
+K 7
+svn:log
+V 13
+Add file beta
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:36.385254Z
+PROPS-END
+
+Node-path: branches/magic/beta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 5
+Text-content-md5: f0cf2a92516045024a0c99147b28f05b
+Text-content-sha1: 6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
+Content-length: 15
+
+PROPS-END
+beta
+
+
+Revision-number: 4
+Prop-content-length: 117
+Content-length: 117
+
+K 7
+svn:log
+V 14
+Add file gamma
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:37.081077Z
+PROPS-END
+
+Node-path: branches/magic/gamma
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: 303febb9068384eca46b5b6516843b35
+Text-content-sha1: 37f385b028bf2f93a4b497ca9ff44eea63945b7f
+Content-length: 16
+
+PROPS-END
+gamma
+
+
+Revision-number: 5
+Prop-content-length: 117
+Content-length: 117
+
+K 7
+svn:log
+V 14
+Add file delta
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:38.071461Z
+PROPS-END
+
+Node-path: branches/magic/delta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: d2840cc81bc032bd1141b56687d0f93c
+Text-content-sha1: 4bd6315d6d7824c4e376847ca7d116738ad2f29a
+Content-length: 16
+
+PROPS-END
+delta
+
+
+Revision-number: 6
+Prop-content-length: 116
+Content-length: 116
+
+K 7
+svn:log
+V 13
+Add file iota
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:39.073363Z
+PROPS-END
+
+Node-path: branches/magic/iota
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 5
+Text-content-md5: ebcf3971120220589f1dfbf8d56e25b9
+Text-content-sha1: 47e9aceee5149402971cda8590e9b912c1b1053e
+Content-length: 15
+
+PROPS-END
+iota
+
+
+Revision-number: 7
+Prop-content-length: 116
+Content-length: 116
+
+K 7
+svn:log
+V 13
+Add file zeta
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:40.082055Z
+PROPS-END
+
+Node-path: branches/magic/zeta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 5
+Text-content-md5: 2db8f255a13ae1e49099d9dad57b4a37
+Text-content-sha1: 2c5ea36ead157ee3089bcd883f26ea2c899b2521
+Content-length: 15
+
+PROPS-END
+zeta
+
+
+Revision-number: 8
+Prop-content-length: 115
+Content-length: 115
+
+K 7
+svn:log
+V 12
+Add file eta
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:41.072675Z
+PROPS-END
+
+Node-path: branches/magic/eta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 4
+Text-content-md5: 655d1abbe3e97298b0948ba964ad2522
+Text-content-sha1: 3c106a7ec1fe510152eebcf2cc76e135cca63f62
+Content-length: 14
+
+PROPS-END
+eta
+
+
+Revision-number: 9
+Prop-content-length: 117
+Content-length: 117
+
+K 7
+svn:log
+V 14
+Add file theta
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:42.080715Z
+PROPS-END
+
+Node-path: branches/magic/theta
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 6
+Text-content-md5: 9485edf7b8ec0fdf0bc3bdb9d5fc6c28
+Text-content-sha1: dde607ddc995205a6a521f47511bd04fa506e286
+Content-length: 16
+
+PROPS-END
+theta
+
+
+Revision-number: 10
+Prop-content-length: 117
+Content-length: 117
+
+K 7
+svn:log
+V 14
+Make magic tag
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:44.048672Z
+PROPS-END
+
+Node-path: tags/magic
+Node-kind: dir
+Node-action: add
+Node-copyfrom-rev: 9
+Node-copyfrom-path: branches/magic
+
+
+Revision-number: 11
+Prop-content-length: 116
+Content-length: 116
+
+K 7
+svn:log
+V 13
+remove a file
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:44.080801Z
+PROPS-END
+
+Node-path: branches/magic/theta
+Node-action: delete
+
+
+Revision-number: 12
+Prop-content-length: 118
+Content-length: 118
+
+K 7
+svn:log
+V 15
+Tag magic again
+K 10
+svn:author
+V 8
+afackler
+K 8
+svn:date
+V 27
+2009-06-01T16:09:44.115205Z
+PROPS-END
+
+Node-path: tags/magic2
+Node-kind: dir
+Node-action: add
+Node-copyfrom-rev: 11
+Node-copyfrom-path: branches/magic
+
+
--- a/tests/test_tags.py
+++ b/tests/test_tags.py
@@ -87,5 +87,19 @@ class TestTags(test_util.TestBase):
              })
 
 
+    def test_tags_in_unusual_location(self):
+        repo = self._load_fixture_and_fetch('tag_name_same_as_branch.svndump')
+        self.assertEqual(len(repo.heads()), 1)
+        branches = set(repo[h].extra()['branch']
+                       for h in repo.heads(closed=False))
+        self.assertEqual(branches, set(['magic', ]))
+        tags = repo.tags()
+        del tags['tip']
+        self.assertEqual(
+            tags,
+            {'magic': '\xa2b\xb9\x03\xc6\xbd\x903\x95\xf5\x0f\x94\xcey\xc4E\xfaE6\xaa',
+             'magic2': '\xa3\xa2D\x86aM\xc0v\xb9\xb0\x18\x14\xad\xacwBUi}\xe2',
+             })
+
 def suite():
     return unittest.TestLoader().loadTestsFromTestCase(TestTags)