diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -147,7 +147,11 @@ class localrepository(repo.repository): if prevtags and prevtags[-1] != '\n': fp.write('\n') for name in names: - fp.write('%s %s\n' % (hex(node), munge and munge(name) or name)) + m = munge and munge(name) or name + if self._tagstypecache and name in self._tagstypecache: + old = self.tagscache.get(name, nullid) + fp.write('%s %s\n' % (hex(old), m)) + fp.write('%s %s\n' % (hex(node), m)) fp.close() prevtags = '' @@ -303,9 +307,8 @@ class localrepository(repo.repository): n = nh[0] if n != nullid: self.tagscache[k] = n - self._tagstypecache[k] = tagtypes[k] + self._tagstypecache[k] = tagtypes[k] self.tagscache['tip'] = self.changelog.tip() - return self.tagscache def tagtype(self, tagname): diff --git a/tests/test-1102 b/tests/test-1102 new file mode 100755 --- /dev/null +++ b/tests/test-1102 @@ -0,0 +1,16 @@ +#!/bin/sh + +rm -rf a +hg init a +cd a +echo a > a +hg ci -Am0 +hg tag t1 # 1 +hg tag --remove t1 # 2 + +hg co 1 +hg tag -r0 t1 +hg tags + + + diff --git a/tests/test-1102.out b/tests/test-1102.out new file mode 100644 --- /dev/null +++ b/tests/test-1102.out @@ -0,0 +1,4 @@ +adding a +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +tip 3:a49829c4fc11 +t1 0:f7b1eb17ad24 diff --git a/tests/test-tag.out b/tests/test-tag.out --- a/tests/test-tag.out +++ b/tests/test-tag.out @@ -36,7 +36,9 @@ 868cc8fbb43b754ad09fa109885d243fc49adae7 868cc8fbb43b754ad09fa109885d243fc49adae7 gawk 868cc8fbb43b754ad09fa109885d243fc49adae7 gorp 3807bcf62c5614cb6c16436b514d7764ca5f1631 gack +3807bcf62c5614cb6c16436b514d7764ca5f1631 gack 0000000000000000000000000000000000000000 gack +868cc8fbb43b754ad09fa109885d243fc49adae7 gorp 0000000000000000000000000000000000000000 gorp 3ecf002a1c572a2f3bb4e665417e60fca65bbd42 bleah1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved diff --git a/tests/test-tags.out b/tests/test-tags.out --- a/tests/test-tags.out +++ b/tests/test-tags.out @@ -45,16 +45,16 @@ 1 files updated, 0 files merged, 0 files created new head tip 4:36195b728445 bar 1:b204a97e6e8d -changeset: 5:57e1983b4a60 +changeset: 5:1f98c77278de tag: tip user: test date: Mon Jan 12 13:46:40 1970 +0000 summary: Removed tag bar -tip 5:57e1983b4a60 +tip 5:1f98c77278de % remove nonexistent tag abort: tag 'foobar' does not exist -changeset: 5:57e1983b4a60 +changeset: 5:1f98c77278de tag: tip user: test date: Mon Jan 12 13:46:40 1970 +0000