# HG changeset patch # User Alexis S. L. Carvalho # Date 1180927488 10800 # Node ID 99f411ba038004bf30c8243d009061515c8a6472 # Parent 50a46ae14efbca53984e3d44407351e0e94a0623 use .extend instead of .append in readtags diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -307,7 +307,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/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