test-tag.t
639 lines
| 18.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-tag.t
Nicolas Dumazet
|
r11788 | $ hg init test | ||
$ cd test | ||||
$ echo a > a | ||||
$ hg add a | ||||
Martin Geisler
|
r12156 | $ hg commit -m "test" | ||
Nicolas Dumazet
|
r11788 | $ hg history | ||
Martin Geisler
|
r12156 | changeset: 0:acb14030fe0a | ||
Nicolas Dumazet
|
r11788 | tag: tip | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
Nicolas Dumazet
|
r11788 | summary: test | ||
$ hg tag ' ' | ||||
abort: tag names cannot consist entirely of whitespace | ||||
Matt Mackall
|
r12316 | [255] | ||
Nicolas Dumazet
|
r11788 | |||
FUJIWARA Katsunori
|
r21418 | (this tests also that editor is not invoked, if '--edit' is not | ||
specified) | ||||
$ HGEDITOR=cat hg tag "bleah" | ||||
Nicolas Dumazet
|
r11788 | $ hg history | ||
Martin Geisler
|
r12156 | changeset: 1:d4f0d2909abc | ||
Nicolas Dumazet
|
r11788 | tag: tip | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
summary: Added tag bleah for changeset acb14030fe0a | ||||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | changeset: 0:acb14030fe0a | ||
Nicolas Dumazet
|
r11788 | tag: bleah | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
Nicolas Dumazet
|
r11788 | summary: test | ||
$ echo foo >> .hgtags | ||||
Matt Mackall
|
r12365 | $ hg tag "bleah2" | ||
Matt Mackall
|
r22680 | abort: working copy of .hgtags is changed | ||
(please commit .hgtags manually) | ||||
Matt Mackall
|
r12365 | [255] | ||
Nicolas Dumazet
|
r11788 | |||
$ hg revert .hgtags | ||||
Matt Mackall
|
r12365 | $ hg tag -r 0 x y z y y z | ||
Nicolas Dumazet
|
r11788 | abort: tag names must be unique | ||
Matt Mackall
|
r12365 | [255] | ||
Kevin Bullock
|
r17813 | $ hg tag tap nada dot tip | ||
Nicolas Dumazet
|
r11788 | abort: the name 'tip' is reserved | ||
Matt Mackall
|
r12365 | [255] | ||
Kevin Bullock
|
r17813 | $ hg tag . | ||
abort: the name '.' is reserved | ||||
[255] | ||||
$ hg tag null | ||||
abort: the name 'null' is reserved | ||||
[255] | ||||
Matt Mackall
|
r12365 | $ hg tag "bleah" | ||
Nicolas Dumazet
|
r11788 | abort: tag 'bleah' already exists (use -f to force) | ||
Matt Mackall
|
r12365 | [255] | ||
$ hg tag "blecch" "bleah" | ||||
Nicolas Dumazet
|
r11788 | abort: tag 'bleah' already exists (use -f to force) | ||
Matt Mackall
|
r12365 | [255] | ||
Nicolas Dumazet
|
r11788 | |||
Matt Mackall
|
r12365 | $ hg tag --remove "blecch" | ||
Nicolas Dumazet
|
r11788 | abort: tag 'blecch' does not exist | ||
Matt Mackall
|
r12365 | [255] | ||
$ hg tag --remove "bleah" "blecch" "blough" | ||||
Nicolas Dumazet
|
r11788 | abort: tag 'blecch' does not exist | ||
Matt Mackall
|
r12365 | [255] | ||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | $ hg tag -r 0 "bleah0" | ||
$ hg tag -l -r 1 "bleah1" | ||||
$ hg tag gack gawk gorp | ||||
$ hg tag -f gack | ||||
$ hg tag --remove gack gorp | ||||
Nicolas Dumazet
|
r11788 | |||
Afuna
|
r13399 | $ hg tag "bleah " | ||
abort: tag 'bleah' already exists (use -f to force) | ||||
[255] | ||||
$ hg tag " bleah" | ||||
abort: tag 'bleah' already exists (use -f to force) | ||||
[255] | ||||
$ hg tag " bleah" | ||||
abort: tag 'bleah' already exists (use -f to force) | ||||
[255] | ||||
$ hg tag -r 0 " bleahbleah " | ||||
$ hg tag -r 0 " bleah bleah " | ||||
Nicolas Dumazet
|
r11788 | $ cat .hgtags | ||
Martin Geisler
|
r12156 | acb14030fe0a21b60322c440ad2d20cf7685a376 bleah | ||
acb14030fe0a21b60322c440ad2d20cf7685a376 bleah0 | ||||
336fccc858a4eb69609a291105009e484a6b6b8d gack | ||||
336fccc858a4eb69609a291105009e484a6b6b8d gawk | ||||
336fccc858a4eb69609a291105009e484a6b6b8d gorp | ||||
336fccc858a4eb69609a291105009e484a6b6b8d gack | ||||
799667b6f2d9b957f73fa644a918c2df22bab58f gack | ||||
799667b6f2d9b957f73fa644a918c2df22bab58f gack | ||||
Nicolas Dumazet
|
r11788 | 0000000000000000000000000000000000000000 gack | ||
Martin Geisler
|
r12156 | 336fccc858a4eb69609a291105009e484a6b6b8d gorp | ||
Nicolas Dumazet
|
r11788 | 0000000000000000000000000000000000000000 gorp | ||
Afuna
|
r13399 | acb14030fe0a21b60322c440ad2d20cf7685a376 bleahbleah | ||
acb14030fe0a21b60322c440ad2d20cf7685a376 bleah bleah | ||||
Nicolas Dumazet
|
r11788 | $ cat .hg/localtags | ||
Martin Geisler
|
r12156 | d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1 | ||
Nicolas Dumazet
|
r11788 | |||
Kevin Bullock
|
r13135 | tagging on a non-head revision | ||
Nicolas Dumazet
|
r11788 | $ hg update 0 | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
Kevin Bullock
|
r13135 | $ hg tag -l localblah | ||
Martin Geisler
|
r12156 | $ hg tag "foobar" | ||
Kevin Bullock
|
r13135 | abort: not at a branch head (use -f to force) | ||
[255] | ||||
$ hg tag -f "foobar" | ||||
Nicolas Dumazet
|
r11788 | $ cat .hgtags | ||
Martin Geisler
|
r12156 | acb14030fe0a21b60322c440ad2d20cf7685a376 foobar | ||
Nicolas Dumazet
|
r11788 | $ cat .hg/localtags | ||
Martin Geisler
|
r12156 | d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1 | ||
Kevin Bullock
|
r13135 | acb14030fe0a21b60322c440ad2d20cf7685a376 localblah | ||
Nicolas Dumazet
|
r11788 | |||
$ hg tag -l 'xx | ||||
> newline' | ||||
Wagner Bruna
|
r17850 | abort: '\n' cannot be used in a name | ||
Matt Mackall
|
r12316 | [255] | ||
Nicolas Dumazet
|
r11788 | $ hg tag -l 'xx:xx' | ||
Wagner Bruna
|
r17850 | abort: ':' cannot be used in a name | ||
Matt Mackall
|
r12316 | [255] | ||
Nicolas Dumazet
|
r11788 | |||
cloning local tags | ||||
$ cd .. | ||||
$ hg -R test log -r0:5 | ||||
Martin Geisler
|
r12156 | changeset: 0:acb14030fe0a | ||
Nicolas Dumazet
|
r11788 | tag: bleah | ||
Afuna
|
r13399 | tag: bleah bleah | ||
Nicolas Dumazet
|
r11788 | tag: bleah0 | ||
Afuna
|
r13399 | tag: bleahbleah | ||
Nicolas Dumazet
|
r11788 | tag: foobar | ||
Kevin Bullock
|
r13135 | tag: localblah | ||
Nicolas Dumazet
|
r11788 | user: test | ||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
Nicolas Dumazet
|
r11788 | summary: test | ||
Martin Geisler
|
r12156 | changeset: 1:d4f0d2909abc | ||
Nicolas Dumazet
|
r11788 | tag: bleah1 | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
summary: Added tag bleah for changeset acb14030fe0a | ||||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | changeset: 2:336fccc858a4 | ||
Nicolas Dumazet
|
r11788 | tag: gawk | ||
user: test | ||||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
summary: Added tag bleah0 for changeset acb14030fe0a | ||||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | changeset: 3:799667b6f2d9 | ||
Nicolas Dumazet
|
r11788 | user: test | ||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
summary: Added tag gack, gawk, gorp for changeset 336fccc858a4 | ||||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | changeset: 4:154eeb7c0138 | ||
Nicolas Dumazet
|
r11788 | user: test | ||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
summary: Added tag gack for changeset 799667b6f2d9 | ||||
Nicolas Dumazet
|
r11788 | |||
Martin Geisler
|
r12156 | changeset: 5:b4bb47aaff09 | ||
Nicolas Dumazet
|
r11788 | user: test | ||
Martin Geisler
|
r12156 | date: Thu Jan 01 00:00:00 1970 +0000 | ||
Nicolas Dumazet
|
r11788 | summary: Removed tag gack, gorp | ||
$ hg clone -q -rbleah1 test test1 | ||||
$ hg -R test1 parents --style=compact | ||||
Martin Geisler
|
r12156 | 1[tip] d4f0d2909abc 1970-01-01 00:00 +0000 test | ||
Added tag bleah for changeset acb14030fe0a | ||||
Nicolas Dumazet
|
r11788 | |||
$ hg clone -q -r5 test#bleah1 test2 | ||||
$ hg -R test2 parents --style=compact | ||||
Martin Geisler
|
r12156 | 5[tip] b4bb47aaff09 1970-01-01 00:00 +0000 test | ||
Nicolas Dumazet
|
r11788 | Removed tag gack, gorp | ||
$ hg clone -q -U test#bleah1 test3 | ||||
$ hg -R test3 parents --style=compact | ||||
$ cd test | ||||
Martin Geisler
|
r12399 | Issue601: hg tag doesn't do the right thing if .hgtags or localtags | ||
doesn't end with EOL | ||||
Nicolas Dumazet
|
r11788 | |||
$ python << EOF | ||||
> f = file('.hg/localtags'); last = f.readlines()[-1][:-1]; f.close() | ||||
> f = file('.hg/localtags', 'w'); f.write(last); f.close() | ||||
> EOF | ||||
$ cat .hg/localtags; echo | ||||
Kevin Bullock
|
r13135 | acb14030fe0a21b60322c440ad2d20cf7685a376 localblah | ||
Nicolas Dumazet
|
r11788 | $ hg tag -l localnewline | ||
$ cat .hg/localtags; echo | ||||
Kevin Bullock
|
r13135 | acb14030fe0a21b60322c440ad2d20cf7685a376 localblah | ||
Martin Geisler
|
r12156 | c2899151f4e76890c602a2597a650a72666681bf localnewline | ||
Nicolas Dumazet
|
r11788 | |||
$ python << EOF | ||||
> f = file('.hgtags'); last = f.readlines()[-1][:-1]; f.close() | ||||
> f = file('.hgtags', 'w'); f.write(last); f.close() | ||||
> EOF | ||||
Martin Geisler
|
r12156 | $ hg ci -m'broken manual edit of .hgtags' | ||
Nicolas Dumazet
|
r11788 | $ cat .hgtags; echo | ||
Martin Geisler
|
r12156 | acb14030fe0a21b60322c440ad2d20cf7685a376 foobar | ||
$ hg tag newline | ||||
Nicolas Dumazet
|
r11788 | $ cat .hgtags; echo | ||
Martin Geisler
|
r12156 | acb14030fe0a21b60322c440ad2d20cf7685a376 foobar | ||
a0eea09de1eeec777b46f2085260a373b2fbc293 newline | ||||
Nicolas Dumazet
|
r11788 | |||
tag and branch using same name | ||||
$ hg branch tag-and-branch-same-name | ||||
marked working directory as branch tag-and-branch-same-name | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Nicolas Dumazet
|
r11788 | $ hg ci -m"discouraged" | ||
$ hg tag tag-and-branch-same-name | ||||
warning: tag tag-and-branch-same-name conflicts with existing branch name | ||||
test custom commit messages | ||||
Mads Kiilerich
|
r16901 | $ cat > editor.sh << '__EOF__' | ||
FUJIWARA Katsunori
|
r21418 | > echo "==== before editing" | ||
> cat "$1" | ||||
> echo "====" | ||||
Nicolas Dumazet
|
r11788 | > echo "custom tag message" > "$1" | ||
> echo "second line" >> "$1" | ||||
> __EOF__ | ||||
FUJIWARA Katsunori
|
r20767 | |||
at first, test saving last-message.txt | ||||
FUJIWARA Katsunori
|
r21237 | (test that editor is not invoked before transaction starting) | ||
FUJIWARA Katsunori
|
r20767 | $ cat > .hg/hgrc << '__EOF__' | ||
> [hooks] | ||||
FUJIWARA Katsunori
|
r21237 | > # this failure occurs before editor invocation | ||
FUJIWARA Katsunori
|
r20767 | > pretag.test-saving-lastmessage = false | ||
> __EOF__ | ||||
$ rm -f .hg/last-message.txt | ||||
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg tag custom-tag -e | ||||
abort: pretag.test-saving-lastmessage hook exited with status 1 | ||||
[255] | ||||
Danek Duvall
|
r21930 | $ test -f .hg/last-message.txt | ||
FUJIWARA Katsunori
|
r21237 | [1] | ||
(test that editor is invoked and commit message is saved into | ||||
"last-message.txt") | ||||
$ cat >> .hg/hgrc << '__EOF__' | ||||
> [hooks] | ||||
> pretag.test-saving-lastmessage = | ||||
> # this failure occurs after editor invocation | ||||
> pretxncommit.unexpectedabort = false | ||||
> __EOF__ | ||||
FUJIWARA Katsunori
|
r21418 | (this tests also that editor is invoked, if '--edit' is specified, | ||
regardless of '--message') | ||||
FUJIWARA Katsunori
|
r21237 | $ rm -f .hg/last-message.txt | ||
FUJIWARA Katsunori
|
r21418 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg tag custom-tag -e -m "foo bar" | ||
==== before editing | ||||
foo bar | ||||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: test | ||||
HG: branch 'tag-and-branch-same-name' | ||||
HG: changed .hgtags | ||||
==== | ||||
FUJIWARA Katsunori
|
r21237 | transaction abort! | ||
rollback completed | ||||
note: commit message saved in .hg/last-message.txt | ||||
abort: pretxncommit.unexpectedabort hook exited with status 1 | ||||
[255] | ||||
$ cat .hg/last-message.txt | ||||
FUJIWARA Katsunori
|
r20767 | custom tag message | ||
second line | ||||
FUJIWARA Katsunori
|
r21237 | |||
$ cat >> .hg/hgrc << '__EOF__' | ||||
FUJIWARA Katsunori
|
r20767 | > [hooks] | ||
FUJIWARA Katsunori
|
r21237 | > pretxncommit.unexpectedabort = | ||
FUJIWARA Katsunori
|
r20767 | > __EOF__ | ||
FUJIWARA Katsunori
|
r21237 | $ hg status .hgtags | ||
M .hgtags | ||||
$ hg revert --no-backup -q .hgtags | ||||
FUJIWARA Katsunori
|
r20767 | |||
then, test custom commit message itself | ||||
Mads Kiilerich
|
r16901 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg tag custom-tag -e | ||
FUJIWARA Katsunori
|
r21418 | ==== before editing | ||
Added tag custom-tag for changeset 75a534207be6 | ||||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: test | ||||
HG: branch 'tag-and-branch-same-name' | ||||
HG: changed .hgtags | ||||
==== | ||||
Nicolas Dumazet
|
r11788 | $ hg log -l1 --template "{desc}\n" | ||
custom tag message | ||||
second line | ||||
Kevin Bullock
|
r13133 | |||
Kevin Bullock
|
r13135 | |||
Kevin Bullock
|
r13133 | local tag with .hgtags modified | ||
$ hg tag hgtags-modified | ||||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 13 (undo commit) | ||
working directory now based on revision 13 | ||||
Kevin Bullock
|
r13133 | $ hg st | ||
M .hgtags | ||||
? .hgtags.orig | ||||
Mads Kiilerich
|
r16901 | ? editor.sh | ||
Kevin Bullock
|
r13133 | $ hg tag --local baz | ||
$ hg revert --no-backup .hgtags | ||||
Kevin Bullock
|
r13134 | |||
Kevin Bullock
|
r13135 | |||
tagging when at named-branch-head that's not a topo-head | ||||
$ hg up default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge -t internal:local | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci -m 'merge named branch' | ||||
Afuna
|
r13399 | $ hg up 13 | ||
Kevin Bullock
|
r13135 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
$ hg tag new-topo-head | ||||
tagging on null rev | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg tag nullrev | ||||
abort: not at a branch head (use -f to force) | ||||
[255] | ||||
$ hg init empty | ||||
$ hg tag -R empty nullrev | ||||
Mads Kiilerich
|
r18906 | abort: cannot tag null revision | ||
Brad Hall
|
r17260 | [255] | ||
$ hg tag -R empty -r 00000000000 -f nulltag | ||||
Mads Kiilerich
|
r18906 | abort: cannot tag null revision | ||
Brad Hall
|
r17260 | [255] | ||
Kevin Bullock
|
r13135 | |||
Kevin Bullock
|
r13134 | $ cd .. | ||
tagging on an uncommitted merge (issue2542) | ||||
$ hg init repo-tag-uncommitted-merge | ||||
$ cd repo-tag-uncommitted-merge | ||||
$ echo c1 > f1 | ||||
$ hg ci -Am0 | ||||
adding f1 | ||||
Matt Mackall
|
r13159 | $ echo c2 > f2 | ||
$ hg ci -Am1 | ||||
adding f2 | ||||
$ hg co -q 0 | ||||
Kevin Bullock
|
r13134 | $ hg branch b1 | ||
marked working directory as branch b1 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Matt Mackall
|
r13159 | $ hg ci -m2 | ||
Kevin Bullock
|
r13134 | $ hg up default | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge b1 | ||||
Matt Mackall
|
r13159 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Kevin Bullock
|
r13134 | (branch merge, don't forget to commit) | ||
$ hg tag t1 | ||||
abort: uncommitted merge | ||||
[255] | ||||
$ hg status | ||||
$ hg tag --rev 1 t2 | ||||
abort: uncommitted merge | ||||
[255] | ||||
$ hg tag --rev 1 --local t3 | ||||
$ hg tags -v | ||||
Peter Arrenbrecht
|
r14162 | tip 2:2a156e8887cc | ||
Matt Mackall
|
r13159 | t3 1:c3adabd1a5f4 local | ||
Kevin Bullock
|
r13134 | |||
$ cd .. | ||||
Mads Kiilerich
|
r16680 | |||
commit hook on tag used to be run without write lock - issue3344 | ||||
$ hg init repo-tag | ||||
Brad Hall
|
r17260 | $ touch repo-tag/test | ||
$ hg -R repo-tag commit -A -m "test" | ||||
adding test | ||||
Mads Kiilerich
|
r16680 | $ hg init repo-tag-target | ||
FUJIWARA Katsunori
|
r23951 | $ cat > "$TESTTMP/issue3344.sh" <<EOF | ||
> hg push "$TESTTMP/repo-tag-target" | ||||
> EOF | ||||
$ hg -R repo-tag --config hooks.commit="sh ../issue3344.sh" tag tag | ||||
Matt Mackall
|
r19123 | pushing to $TESTTMP/repo-tag-target (glob) | ||
Mads Kiilerich
|
r16680 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
Brad Hall
|
r17260 | added 2 changesets with 2 changes to 2 files | ||
Mads Kiilerich
|
r16680 | |||
Angel Ezquerra
|
r21922 | automatically merge resolvable tag conflicts (i.e. tags that differ in rank) | ||
create two clones with some different tags as well as some common tags | ||||
check that we can merge tags that differ in rank | ||||
$ hg init repo-automatic-tag-merge | ||||
$ cd repo-automatic-tag-merge | ||||
$ echo c0 > f0 | ||||
$ hg ci -A -m0 | ||||
adding f0 | ||||
$ hg tag tbase | ||||
Matt Harbison
|
r25688 | $ hg up -qr '.^' | ||
$ hg log -r 'wdir()' -T "{latesttagdistance}\n" | ||||
1 | ||||
$ hg up -q | ||||
$ hg log -r 'wdir()' -T "{latesttagdistance}\n" | ||||
2 | ||||
Angel Ezquerra
|
r21922 | $ cd .. | ||
$ hg clone repo-automatic-tag-merge repo-automatic-tag-merge-clone | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd repo-automatic-tag-merge-clone | ||||
$ echo c1 > f1 | ||||
$ hg ci -A -m1 | ||||
adding f1 | ||||
$ hg tag t1 t2 t3 | ||||
$ hg tag --remove t2 | ||||
$ hg tag t5 | ||||
$ echo c2 > f2 | ||||
$ hg ci -A -m2 | ||||
adding f2 | ||||
$ hg tag -f t3 | ||||
$ cd ../repo-automatic-tag-merge | ||||
$ echo c3 > f3 | ||||
$ hg ci -A -m3 | ||||
adding f3 | ||||
$ hg tag -f t4 t5 t6 | ||||
Matt Harbison
|
r25724 | |||
$ hg up -q '.^' | ||||
$ hg log -r 'wdir()' -T "{changessincelatesttag} changes since {latesttag}\n" | ||||
1 changes since t4:t5:t6 | ||||
$ hg log -r '.' -T "{changessincelatesttag} changes since {latesttag}\n" | ||||
0 changes since t4:t5:t6 | ||||
$ echo c5 > f3 | ||||
$ hg log -r 'wdir()' -T "{changessincelatesttag} changes since {latesttag}\n" | ||||
1 changes since t4:t5:t6 | ||||
$ hg up -qC | ||||
Angel Ezquerra
|
r21922 | $ hg tag --remove t5 | ||
$ echo c4 > f4 | ||||
Matt Harbison
|
r25724 | $ hg log -r '.' -T "{changessincelatesttag} changes since {latesttag}\n" | ||
2 changes since t4:t6 | ||||
Matt Harbison
|
r25727 | $ hg log -r '.' -T "{latesttag % '{latesttag}\n'}" | ||
t4 | ||||
t6 | ||||
Angel Ezquerra
|
r21922 | $ hg ci -A -m4 | ||
adding f4 | ||||
Matt Harbison
|
r25724 | $ hg log -r 'wdir()' -T "{changessincelatesttag} changes since {latesttag}\n" | ||
4 changes since t4:t6 | ||||
Angel Ezquerra
|
r21922 | $ hg tag t2 | ||
$ hg tag -f t6 | ||||
$ cd ../repo-automatic-tag-merge-clone | ||||
$ hg pull | ||||
pulling from $TESTTMP/repo-automatic-tag-merge (glob) | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 6 changesets with 6 changes to 3 files (+1 heads) | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg merge --tool internal:tagmerge | ||||
merging .hgtags | ||||
2 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg status | ||||
M .hgtags | ||||
M f3 | ||||
M f4 | ||||
$ hg resolve -l | ||||
R .hgtags | ||||
$ cat .hgtags | ||||
9aa4e1292a27a248f8d07339bed9931d54907be7 t4 | ||||
9aa4e1292a27a248f8d07339bed9931d54907be7 t6 | ||||
9aa4e1292a27a248f8d07339bed9931d54907be7 t6 | ||||
09af2ce14077a94effef208b49a718f4836d4338 t6 | ||||
6cee5c8f3e5b4ae1a3996d2f6489c3e08eb5aea7 tbase | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t1 | ||||
929bca7b18d067cbf3844c3896319a940059d748 t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
0000000000000000000000000000000000000000 t2 | ||||
875517b4806a848f942811a315a5bce30804ae85 t5 | ||||
9aa4e1292a27a248f8d07339bed9931d54907be7 t5 | ||||
9aa4e1292a27a248f8d07339bed9931d54907be7 t5 | ||||
0000000000000000000000000000000000000000 t5 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
79505d5360b07e3e79d1052e347e73c02b8afa5b t3 | ||||
Mads Kiilerich
|
r23139 | check that the merge tried to minimize the diff with the first merge parent | ||
Angel Ezquerra
|
r21922 | |||
$ hg diff --git -r 'p1()' .hgtags | ||||
diff --git a/.hgtags b/.hgtags | ||||
--- a/.hgtags | ||||
+++ b/.hgtags | ||||
@@ -1,9 +1,17 @@ | ||||
+9aa4e1292a27a248f8d07339bed9931d54907be7 t4 | ||||
+9aa4e1292a27a248f8d07339bed9931d54907be7 t6 | ||||
+9aa4e1292a27a248f8d07339bed9931d54907be7 t6 | ||||
+09af2ce14077a94effef208b49a718f4836d4338 t6 | ||||
6cee5c8f3e5b4ae1a3996d2f6489c3e08eb5aea7 tbase | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t1 | ||||
+929bca7b18d067cbf3844c3896319a940059d748 t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
0000000000000000000000000000000000000000 t2 | ||||
875517b4806a848f942811a315a5bce30804ae85 t5 | ||||
+9aa4e1292a27a248f8d07339bed9931d54907be7 t5 | ||||
+9aa4e1292a27a248f8d07339bed9931d54907be7 t5 | ||||
+0000000000000000000000000000000000000000 t5 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
79505d5360b07e3e79d1052e347e73c02b8afa5b t3 | ||||
detect merge tag conflicts | ||||
$ hg update -C -r tip | ||||
3 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg tag t7 | ||||
$ hg update -C -r 'first(sort(head()))' | ||||
3 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ printf "%s %s\n" `hg log -r . --template "{node} t7"` >> .hgtags | ||||
$ hg commit -m "manually add conflicting t7 tag" | ||||
$ hg merge --tool internal:tagmerge | ||||
merging .hgtags | ||||
automatic .hgtags merge failed | ||||
the following 1 tags are in conflict: t7 | ||||
Mads Kiilerich
|
r22707 | automatic tag merging of .hgtags failed! (use 'hg resolve --tool :merge' or another merge tool of your choice) | ||
Angel Ezquerra
|
r21922 | 2 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||||
[1] | ||||
$ hg resolve -l | ||||
U .hgtags | ||||
$ cat .hgtags | ||||
6cee5c8f3e5b4ae1a3996d2f6489c3e08eb5aea7 tbase | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t1 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
0000000000000000000000000000000000000000 t2 | ||||
875517b4806a848f942811a315a5bce30804ae85 t5 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
79505d5360b07e3e79d1052e347e73c02b8afa5b t3 | ||||
ea918d56be86a4afc5a95312e8b6750e1428d9d2 t7 | ||||
$ cd .. | ||||
handle the loss of tags | ||||
$ hg clone repo-automatic-tag-merge-clone repo-merge-lost-tags | ||||
updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd repo-merge-lost-tags | ||||
$ echo c5 > f5 | ||||
$ hg ci -A -m5 | ||||
adding f5 | ||||
$ hg tag -f t7 | ||||
$ hg update -r 'p1(t7)' | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ printf '' > .hgtags | ||||
$ hg commit -m 'delete all tags' | ||||
created new head | ||||
Pierre-Yves David
|
r22791 | $ hg log -r 'max(t7::)' | ||
changeset: 17:ffe462b50880 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: Added tag t7 for changeset fd3a9e394ce3 | ||||
Angel Ezquerra
|
r21922 | $ hg update -r 'max(t7::)' | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge -r tip --tool internal:tagmerge | ||||
merging .hgtags | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg resolve -l | ||||
R .hgtags | ||||
$ cat .hgtags | ||||
6cee5c8f3e5b4ae1a3996d2f6489c3e08eb5aea7 tbase | ||||
0000000000000000000000000000000000000000 tbase | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t1 | ||||
0000000000000000000000000000000000000000 t1 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
0000000000000000000000000000000000000000 t2 | ||||
875517b4806a848f942811a315a5bce30804ae85 t5 | ||||
0000000000000000000000000000000000000000 t5 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
79505d5360b07e3e79d1052e347e73c02b8afa5b t3 | ||||
0000000000000000000000000000000000000000 t3 | ||||
ea918d56be86a4afc5a95312e8b6750e1428d9d2 t7 | ||||
0000000000000000000000000000000000000000 t7 | ||||
ea918d56be86a4afc5a95312e8b6750e1428d9d2 t7 | ||||
fd3a9e394ce3afb354a496323bf68ac1755a30de t7 | ||||
also check that we minimize the diff with the 1st merge parent | ||||
$ hg diff --git -r 'p1()' .hgtags | ||||
diff --git a/.hgtags b/.hgtags | ||||
--- a/.hgtags | ||||
+++ b/.hgtags | ||||
@@ -1,12 +1,17 @@ | ||||
6cee5c8f3e5b4ae1a3996d2f6489c3e08eb5aea7 tbase | ||||
+0000000000000000000000000000000000000000 tbase | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t1 | ||||
+0000000000000000000000000000000000000000 t1 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t2 | ||||
0000000000000000000000000000000000000000 t2 | ||||
875517b4806a848f942811a315a5bce30804ae85 t5 | ||||
+0000000000000000000000000000000000000000 t5 | ||||
4f3e9b90005b68b4d8a3f4355cedc302a8364f5c t3 | ||||
79505d5360b07e3e79d1052e347e73c02b8afa5b t3 | ||||
+0000000000000000000000000000000000000000 t3 | ||||
ea918d56be86a4afc5a95312e8b6750e1428d9d2 t7 | ||||
+0000000000000000000000000000000000000000 t7 | ||||
ea918d56be86a4afc5a95312e8b6750e1428d9d2 t7 | ||||
fd3a9e394ce3afb354a496323bf68ac1755a30de t7 | ||||