# HG changeset patch # User Alexis S. L. Carvalho # Date 1180927613 10800 # Node ID 22ebd6ee567226fa4d72b7ddeb56270c77c1d516 # Parent b79cdb7f05979bd6c008bf06e3125509a1f55345# Parent 7605da1c3b5cc2551826821c0c2bc6131a584612 merge with crew-stable diff --git a/hgext/hbisect.py b/hgext/hbisect.py --- a/hgext/hbisect.py +++ b/hgext/hbisect.py @@ -136,7 +136,7 @@ class bisect(object): return d if head in stop: - raise util.Abort(_("Unconsistent state, %s:%s is good and bad") + raise util.Abort(_("Inconsistent state, %s:%s is good and bad") % (cl.rev(head), hg.short(head))) n_child = num_children(head) for i in xrange(cl.rev(head)+1): diff --git a/mercurial/hgweb/wsgicgi.py b/mercurial/hgweb/wsgicgi.py --- a/mercurial/hgweb/wsgicgi.py +++ b/mercurial/hgweb/wsgicgi.py @@ -12,6 +12,7 @@ import os, sys from mercurial import util def launch(application): + util.set_binary(sys.stdin) util.set_binary(sys.stdout) environ = dict(os.environ.items()) diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -303,7 +303,7 @@ class localrepository(repo.repository): if bn != an and an in bh and \ (bn not in ah or len(bh) > len(ah)): an = bn - ah.append([n for n in bh if n not in ah]) + ah.extend([n for n in bh if n not in ah]) globaltags[k] = an, ah # read the tags file from each head, ending with the tip diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -347,7 +347,8 @@ class revlog(object): if (oldst and st.st_dev == oldst.st_dev and st.st_ino == oldst.st_ino and st.st_mtime == oldst.st_mtime - and st.st_ctime == oldst.st_ctime): + and st.st_ctime == oldst.st_ctime + and st.st_size == oldst.st_size): return self.indexstat = st if len(i) > 0: diff --git a/tests/test-tags b/tests/test-tags --- a/tests/test-tags +++ b/tests/test-tags @@ -104,4 +104,21 @@ hg ci -m 'change foo' -d '1000000 0' hg tags hg tag -d '1000000 0' -r 3 bar # should complain -hg tags \ No newline at end of file +hg tags + +# test tag rank with 3 heads +cd .. +hg init t4 +cd t4 +echo foo > foo +hg add +hg ci -m 'add foo' -d '0 0' # rev 0 +hg tag -d '0 0' bar # rev 1 bar -> 0 +hg tag -d '0 0' -f bar # rev 2 bar -> 1 +hg up -qC 0 +hg tag -d '0 0' -fr 2 bar # rev 3 bar -> 2 +hg tags +hg up -qC 0 +hg tag -d '0 0' -m 'retag rev 0' -fr 0 bar # rev 4 bar -> 0, but bar stays at 2 +echo % bar should still point to rev 2 +hg tags diff --git a/tests/test-tags.out b/tests/test-tags.out --- a/tests/test-tags.out +++ b/tests/test-tags.out @@ -57,3 +57,9 @@ bar 0:b40 abort: a tag named bar already exists (use -f to force) tip 6:b5ff9d142648 bar 0:b409d9da318e +adding foo +tip 3:ca8479b4351c +bar 2:72b852876a42 +% bar should still point to rev 2 +tip 4:40af5d225513 +bar 2:72b852876a42