##// END OF EJS Templates
strip: compress bundle2 backup using BZ...
strip: compress bundle2 backup using BZ Storing uncompressed bundle on disk would be a regression. Strip backup using bundle2 are now compressed when requested.

File last commit:

r26185:e8f9dffc default
r26425:eb21b667 default
Show More
test-tags.t
705 lines | 21.1 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706 setup
$ cat >> $HGRCPATH << EOF
> [extensions]
> blackbox=
> mock=$TESTDIR/mockblackbox.py
> EOF
Matt Mackall
tests: unify test-tags
r11744 Helper functions:
$ cacheexists() {
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 > [ -f .hg/cache/tags2-visible ] && echo "tag cache exists" || echo "no tag cache"
Matt Mackall
tests: unify test-tags
r11744 > }
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ fnodescacheexists() {
> [ -f .hg/cache/hgtagsfnodes1 ] && echo "fnodes cache exists" || echo "no fnodes cache"
> }
Matt Mackall
tests: unify test-tags
r11744 $ dumptags() {
> rev=$1
> echo "rev $rev: .hgtags:"
> hg cat -r$rev .hgtags
> }
# XXX need to test that the tag cache works when we strip an old head
# and add a new one rooted off non-tip: i.e. node and rev of tip are the
# same, but stuff has changed behind tip.
Setup:
$ hg init t
$ cd t
$ cacheexists
no tag cache
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ fnodescacheexists
no fnodes cache
Matt Mackall
tests: unify test-tags
r11744 $ hg id
000000000000 tip
$ cacheexists
no tag cache
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ fnodescacheexists
no fnodes cache
Matt Mackall
tests: unify test-tags
r11744 $ echo a > a
$ hg add a
$ hg commit -m "test"
$ hg co
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg identify
acb14030fe0a tip
Matt Harbison
identify: avoid a crash when given '-r wdir()'...
r25683 $ hg identify -r 'wdir()'
acb14030fe0a tip
Matt Mackall
tests: unify test-tags
r11744 $ cacheexists
tag cache exists
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 No fnodes cache because .hgtags file doesn't exist
(this is an implementation detail)
$ fnodescacheexists
no fnodes cache
Matt Mackall
tests: unify test-tags
r11744
Nicolas Dumazet
tags: do not fail if tags.cache is corrupted (issue2444)...
r12758 Try corrupting the cache
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ printf 'a b' > .hg/cache/tags2-visible
Nicolas Dumazet
tags: do not fail if tags.cache is corrupted (issue2444)...
r12758 $ hg identify
acb14030fe0a tip
$ cacheexists
tag cache exists
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ fnodescacheexists
no fnodes cache
Nicolas Dumazet
tags: do not fail if tags.cache is corrupted (issue2444)...
r12758 $ hg identify
acb14030fe0a tip
Matt Mackall
tests: unify test-tags
r11744 Create local tag with long name:
$ T=`hg identify --debug --id`
$ hg tag -l "This is a local tag with a really long name!"
$ hg tags
tip 0:acb14030fe0a
This is a local tag with a really long name! 0:acb14030fe0a
$ rm .hg/localtags
Create a tag behind hg's back:
$ echo "$T first" > .hgtags
$ cat .hgtags
acb14030fe0a21b60322c440ad2d20cf7685a376 first
$ hg add .hgtags
$ hg commit -m "add tags"
$ hg tags
tip 1:b9154636be93
first 0:acb14030fe0a
$ hg identify
b9154636be93 tip
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 We should have a fnodes cache now that we have a real tag
The cache should have an empty entry for rev 0 and a valid entry for rev 1.
$ fnodescacheexists
fnodes cache exists
$ f --size --hexdump .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=48
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
Matt Mackall
tests: unify test-tags
r11744 Repeat with cold tag cache:
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
Matt Mackall
tests: unify test-tags
r11744 $ hg identify
b9154636be93 tip
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ fnodescacheexists
fnodes cache exists
$ f --size --hexdump .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=48
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
Yuya Nishihara
tags: do not abort if failed to write lock file to save cache...
r24806 And again, but now unable to write tag cache or lock file:
Matt Mackall
tests: unify test-tags
r11744
Adrian Buehlmann
test-tags: enable for Windows...
r16857 #if unix-permissions
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ chmod 555 .hg/cache
Matt Mackall
tests: unify test-tags
r11744 $ hg identify
b9154636be93 tip
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ chmod 755 .hg/cache
Yuya Nishihara
tags: do not abort if failed to write lock file to save cache...
r24806
$ chmod 555 .hg
$ hg identify
b9154636be93 tip
$ chmod 755 .hg
Adrian Buehlmann
test-tags: enable for Windows...
r16857 #endif
Matt Mackall
tests: unify test-tags
r11744
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706 Tag cache debug info written to blackbox log
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706 $ hg identify
b9154636be93 tip
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> identify (glob)
1970/01/01 00:00:00 bob (*)> writing 48 bytes to cache/hgtagsfnodes1 (glob)
1970/01/01 00:00:00 bob (*)> 0/1 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> identify exited 0 after ?.?? seconds (glob)
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 Failure to acquire lock results in no write
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ echo 'foo:1' > .hg/wlock
$ hg identify
b9154636be93 tip
$ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> identify (glob)
1970/01/01 00:00:00 bob (*)> not writing .hg/cache/hgtagsfnodes1 because lock cannot be acquired (glob)
1970/01/01 00:00:00 bob (*)> 0/1 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> identify exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ fnodescacheexists
no fnodes cache
$ rm .hg/wlock
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ hg identify
b9154636be93 tip
Gregory Szorc
tests: move blackbox testing of tags to test-tags.t...
r24706
Matt Mackall
tests: unify test-tags
r11744 Create a branch:
$ echo bb > a
$ hg status
M a
$ hg identify
b9154636be93+ tip
$ hg co first
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg id
acb14030fe0a+ first
Matt Harbison
identify: avoid a crash when given '-r wdir()'...
r25683 $ hg id -r 'wdir()'
acb14030fe0a+ first
Matt Mackall
tests: unify test-tags
r11744 $ hg -v id
acb14030fe0a+ first
$ hg status
M a
$ echo 1 > b
$ hg add b
$ hg commit -m "branch"
created new head
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
Creating a new commit shouldn't append the .hgtags fnodes cache until
tags info is accessed
$ f --size --hexdump .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=48
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
Matt Mackall
tests: unify test-tags
r11744 $ hg id
c8edf04160c7 tip
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 First 4 bytes of record 3 are changeset fragment
$ f --size --hexdump .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=72
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
0030: c8 ed f0 41 00 00 00 00 00 00 00 00 00 00 00 00 |...A............|
0040: 00 00 00 00 00 00 00 00 |........|
Matt Mackall
tests: unify test-tags
r11744 Merge the two heads:
$ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg id
c8edf04160c7+b9154636be93+ tip
$ hg status
M .hgtags
$ hg commit -m "merge"
Create a fake head, make sure tag not visible afterwards:
$ cp .hgtags tags
$ hg tag last
$ hg rm .hgtags
$ hg commit -m "remove"
$ mv tags .hgtags
$ hg add .hgtags
$ hg commit -m "readd"
$
$ hg tags
tip 6:35ff301afafe
first 0:acb14030fe0a
Add invalid tags:
$ echo "spam" >> .hgtags
$ echo >> .hgtags
$ echo "foo bar" >> .hgtags
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ echo "a5a5 invalid" >> .hg/localtags
Mads Kiilerich
check-code: fix check for trailing whitespace on sh command lines...
r17345 $ cat .hgtags
Matt Mackall
tests: unify test-tags
r11744 acb14030fe0a21b60322c440ad2d20cf7685a376 first
spam
foo bar
$ hg commit -m "tags"
Report tag parse error on other head:
$ hg up 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo 'x y' >> .hgtags
$ hg commit -m "head"
created new head
$ hg tags
.hgtags@75d9f02dfe28, line 2: cannot parse entry
.hgtags@75d9f02dfe28, line 4: node 'foo' is not well formed
.hgtags@c4be69a18c11, line 2: node 'x' is not well formed
tip 8:c4be69a18c11
first 0:acb14030fe0a
$ hg tip
changeset: 8:c4be69a18c11
tag: tip
parent: 3:ac5e980c4dc0
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: head
Test tag precedence rules:
$ cd ..
$ hg init t2
$ cd t2
$ echo foo > foo
$ hg add foo
$ hg ci -m 'add foo' # rev 0
$ hg tag bar # rev 1
$ echo >> foo
$ hg ci -m 'change foo 1' # rev 2
$ hg up -C 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tag -r 1 -f bar # rev 3
$ hg up -C 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo >> foo
$ hg ci -m 'change foo 2' # rev 4
created new head
$ hg tags
tip 4:0c192d7d5e6b
bar 1:78391a272241
Repeat in case of cache effects:
$ hg tags
tip 4:0c192d7d5e6b
bar 1:78391a272241
Detailed dump of tag info:
$ hg heads -q # expect 4, 3, 2
4:0c192d7d5e6b
3:6fa450212aeb
2:7a94127795a3
$ dumptags 2
rev 2: .hgtags:
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
$ dumptags 3
rev 3: .hgtags:
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
78391a272241d70354aa14c874552cad6b51bb42 bar
$ dumptags 4
rev 4: .hgtags:
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
Dump cache:
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ cat .hg/cache/tags2-visible
Gregory Szorc
tags: change format of tags cache files...
r24760 4 0c192d7d5e6b78a714de54a2e9627952a877e25a
FUJIWARA Katsunori
tags: write tag overwriting history also into tag cache file (issue3911)...
r19646 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
Matt Mackall
tests: unify test-tags
r11744 78391a272241d70354aa14c874552cad6b51bb42 bar
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ f --size --hexdump .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=120
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0030: 7a 94 12 77 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |z..w.....1....B(|
0040: 78 ee 5a 2d ad bc 94 3d 6f a4 50 21 7d 3b 71 8c |x.Z-...=o.P!};q.|
0050: 96 4e f3 7b 89 e5 50 eb da fd 57 89 e7 6c e1 b0 |.N.{..P...W..l..|
0060: 0c 19 2d 7d 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |..-}.....1....B(|
0070: 78 ee 5a 2d ad bc 94 3d |x.Z-...=|
Corrupt the .hgtags fnodes cache
Extra junk data at the end should get overwritten on next cache update
$ echo extra >> .hg/cache/hgtagsfnodes1
$ echo dummy1 > foo
$ hg commit -m throwaway1
$ hg tags
tip 5:8dbfe60eff30
bar 1:78391a272241
$ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> tags (glob)
1970/01/01 00:00:00 bob (*)> writing 24 bytes to cache/hgtagsfnodes1 (glob)
1970/01/01 00:00:00 bob (*)> 2/3 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> tags exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
#if unix-permissions no-root
Errors writing to .hgtags fnodes cache are silently ignored
$ echo dummy2 > foo
$ hg commit -m throwaway2
$ chmod a-w .hg/cache/hgtagsfnodes1
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ hg tags
tip 6:b968051b5cf3
bar 1:78391a272241
$ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> tags (glob)
1970/01/01 00:00:00 bob (*)> couldn't write cache/hgtagsfnodes1: [Errno 13] Permission denied: '$TESTTMP/t2/.hg/cache/hgtagsfnodes1' (glob)
1970/01/01 00:00:00 bob (*)> 2/3 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> tags exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ chmod a+w .hg/cache/hgtagsfnodes1
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ hg tags
tip 6:b968051b5cf3
bar 1:78391a272241
$ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> tags (glob)
1970/01/01 00:00:00 bob (*)> writing 24 bytes to cache/hgtagsfnodes1 (glob)
1970/01/01 00:00:00 bob (*)> 2/3 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> tags exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ f --size .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=168
Matt Mackall
tests: fix test-tags on vfat...
r24801 $ hg -q --config extensions.strip= strip -r 6 --no-backup
#endif
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 Stripping doesn't truncate the tags cache until new data is available
Matt Mackall
tests: fix test-tags on vfat...
r24801 $ rm -f .hg/cache/hgtagsfnodes1 .hg/cache/tags2-visible
Matt Mackall
tests: fix up whitespace complaint
r24802 $ hg tags
Matt Mackall
tests: fix test-tags on vfat...
r24801 tip 5:8dbfe60eff30
bar 1:78391a272241
$ f --size .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=144
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ hg -q --config extensions.strip= strip -r 5 --no-backup
$ hg tags
tip 4:0c192d7d5e6b
bar 1:78391a272241
$ hg blackbox -l 4
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> writing 24 bytes to cache/hgtagsfnodes1 (glob)
1970/01/01 00:00:00 bob (*)> 2/3 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> tags exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ f --size .hg/cache/hgtagsfnodes1
Matt Mackall
tests: fix test-tags on vfat...
r24801 .hg/cache/hgtagsfnodes1: size=120
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735
$ echo dummy > foo
$ hg commit -m throwaway3
$ hg tags
tip 5:035f65efb448
bar 1:78391a272241
$ hg blackbox -l 5
Durham Goode
blackbox: add pid to output...
r26185 1970/01/01 00:00:00 bob (*)> tags (glob)
1970/01/01 00:00:00 bob (*)> writing 24 bytes to cache/hgtagsfnodes1 (glob)
1970/01/01 00:00:00 bob (*)> 2/3 cache hits/lookups in * seconds (glob)
1970/01/01 00:00:00 bob (*)> writing .hg/cache/tags2-visible with 1 tags (glob)
1970/01/01 00:00:00 bob (*)> tags exited 0 after * seconds (glob)
Gregory Szorc
tags: extract .hgtags filenodes cache to a standalone file...
r24735 $ f --size .hg/cache/hgtagsfnodes1
.hg/cache/hgtagsfnodes1: size=144
$ hg -q --config extensions.strip= strip -r 5 --no-backup
Matt Mackall
tests: unify test-tags
r11744 Test tag removal:
$ hg tag --remove bar # rev 5
$ hg tip -vp
changeset: 5:5f6e8655b1c7
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
files: .hgtags
description:
Removed tag bar
diff -r 0c192d7d5e6b -r 5f6e8655b1c7 .hgtags
--- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +1,3 @@
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
+78391a272241d70354aa14c874552cad6b51bb42 bar
+0000000000000000000000000000000000000000 bar
$ hg tags
tip 5:5f6e8655b1c7
$ hg tags # again, try to expose cache bugs
tip 5:5f6e8655b1c7
Remove nonexistent tag:
$ hg tag --remove foobar
abort: tag 'foobar' does not exist
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Matt Mackall
tests: unify test-tags
r11744 $ hg tip
changeset: 5:5f6e8655b1c7
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Removed tag bar
Undo a tag with rollback:
$ hg rollback # destroy rev 5 (restore bar)
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 4 (undo commit)
working directory now based on revision 4
Matt Mackall
tests: unify test-tags
r11744 $ hg tags
tip 4:0c192d7d5e6b
bar 1:78391a272241
$ hg tags
tip 4:0c192d7d5e6b
bar 1:78391a272241
Test tag rank:
$ cd ..
$ hg init t3
$ cd t3
$ echo foo > foo
$ hg add foo
$ hg ci -m 'add foo' # rev 0
$ hg tag -f bar # rev 1 bar -> 0
$ hg tag -f bar # rev 2 bar -> 1
$ hg tag -fr 0 bar # rev 3 bar -> 0
$ hg tag -fr 1 bar # rev 4 bar -> 1
$ hg tag -fr 0 bar # rev 5 bar -> 0
$ hg tags
tip 5:85f05169d91d
bar 0:bbd179dfa0a7
$ hg co 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo barbar > foo
$ hg ci -m 'change foo' # rev 6
created new head
$ hg tags
tip 6:735c3ca72986
bar 0:bbd179dfa0a7
Don't allow moving tag without -f:
$ hg tag -r 3 bar
abort: tag 'bar' already exists (use -f to force)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Matt Mackall
tests: unify test-tags
r11744 $ hg tags
tip 6:735c3ca72986
bar 0:bbd179dfa0a7
Strip 1: expose an old head:
$ hg --config extensions.mq= strip 5
Mads Kiilerich
tests: remove redundant globs...
r12640 saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
Matt Mackall
tests: unify test-tags
r11744 $ hg tags # partly stale cache
tip 5:735c3ca72986
bar 1:78391a272241
$ hg tags # up-to-date cache
tip 5:735c3ca72986
bar 1:78391a272241
Strip 2: destroy whole branch, no old head exposed
$ hg --config extensions.mq= strip 4
Mads Kiilerich
tests: remove redundant globs...
r12640 saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
Matt Mackall
tests: unify test-tags
r11744 $ hg tags # partly stale
tip 4:735c3ca72986
bar 0:bbd179dfa0a7
Gregory Szorc
tags: write a separate tags cache file for unfiltered repos...
r24762 $ rm -f .hg/cache/tags2-visible
Matt Mackall
tests: unify test-tags
r11744 $ hg tags # cold cache
tip 4:735c3ca72986
bar 0:bbd179dfa0a7
Test tag rank with 3 heads:
$ cd ..
$ hg init t4
$ cd t4
$ echo foo > foo
$ hg add
adding foo
$ hg ci -m 'add foo' # rev 0
$ hg tag bar # rev 1 bar -> 0
$ hg tag -f bar # rev 2 bar -> 1
$ hg up -qC 0
$ hg tag -fr 2 bar # rev 3 bar -> 2
$ hg tags
tip 3:197c21bbbf2c
bar 2:6fa450212aeb
$ hg up -qC 0
$ hg tag -m 'retag rev 0' -fr 0 bar # rev 4 bar -> 0, but bar stays at 2
Bar should still point to rev 2:
$ hg tags
tip 4:3b4b14ed0202
bar 2:6fa450212aeb
Test that removing global/local tags does not get confused when trying
to remove a tag of type X which actually only exists as a type Y:
$ cd ..
$ hg init t5
$ cd t5
$ echo foo > foo
$ hg add
adding foo
$ hg ci -m 'add foo' # rev 0
$ hg tag -r 0 -l localtag
$ hg tag --remove localtag
abort: tag 'localtag' is not a global tag
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Matt Mackall
tests: unify test-tags
r11744 $
$ hg tag -r 0 globaltag
$ hg tag --remove -l globaltag
abort: tag 'globaltag' is not a local tag
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Matt Mackall
tests: unify test-tags
r11744 $ hg tags -v
tip 1:a0b6fe111088
localtag 0:bbd179dfa0a7 local
globaltag 0:bbd179dfa0a7
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
FUJIWARA Katsunori
tags: update tag type only if tag node is updated (issue3911)...
r19108 Test for issue3911
$ hg tag -r 0 -l localtag2
$ hg tag -l --remove localtag2
$ hg tags -v
tip 1:a0b6fe111088
localtag 0:bbd179dfa0a7 local
globaltag 0:bbd179dfa0a7
$ hg tag -r 1 -f localtag
$ hg tags -v
tip 2:5c70a037bb37
localtag 1:a0b6fe111088
globaltag 0:bbd179dfa0a7
FUJIWARA Katsunori
tags: write tag overwriting history also into tag cache file (issue3911)...
r19646 $ hg tags -v
tip 2:5c70a037bb37
localtag 1:a0b6fe111088
globaltag 0:bbd179dfa0a7
FUJIWARA Katsunori
tags: update tag type only if tag node is updated (issue3911)...
r19108 $ hg tag -r 1 localtag2
$ hg tags -v
tip 3:bbfb8cd42be2
localtag2 1:a0b6fe111088
localtag 1:a0b6fe111088
globaltag 0:bbd179dfa0a7
FUJIWARA Katsunori
tags: write tag overwriting history also into tag cache file (issue3911)...
r19646 $ hg tags -v
tip 3:bbfb8cd42be2
localtag2 1:a0b6fe111088
localtag 1:a0b6fe111088
globaltag 0:bbd179dfa0a7
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Gregory Szorc
exchange: support transferring .hgtags fnodes mapping...
r25402
Create a repository with tags data to test .hgtags fnodes transfer
$ hg init tagsserver
$ cd tagsserver
$ cat > .hg/hgrc << EOF
> [experimental]
> bundle2-exp=True
> EOF
$ touch foo
$ hg -q commit -A -m initial
$ hg tag -m 'tag 0.1' 0.1
$ echo second > foo
$ hg commit -m second
$ hg tag -m 'tag 0.2' 0.2
$ hg tags
tip 3:40f0358cb314
0.2 2:f63cc8fe54e4
0.1 0:96ee1d7354c4
$ cd ..
Cloning should pull down hgtags fnodes mappings and write the cache file
$ hg --config experimental.bundle2-exp=True clone --pull tagsserver tagsclient
requesting all changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Missing tags2* files means the cache wasn't written through the normal mechanism.
$ ls tagsclient/.hg/cache
branch2-served
hgtagsfnodes1
rbc-names-v1
rbc-revs-v1
Cache should contain the head only, even though other nodes have tags data
$ f --size --hexdump tagsclient/.hg/cache/hgtagsfnodes1
tagsclient/.hg/cache/hgtagsfnodes1: size=96
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0040: ff ff ff ff ff ff ff ff 40 f0 35 8c 19 e0 a7 d3 |........@.5.....|
0050: 8a 5c 6a 82 4d cf fb a5 87 d0 2f a3 1e 4f 2f 8a |.\j.M...../..O/.|
Running hg tags should produce tags2* file and not change cache
$ hg -R tagsclient tags
tip 3:40f0358cb314
0.2 2:f63cc8fe54e4
0.1 0:96ee1d7354c4
$ ls tagsclient/.hg/cache
branch2-served
hgtagsfnodes1
rbc-names-v1
rbc-revs-v1
tags2-visible
$ f --size --hexdump tagsclient/.hg/cache/hgtagsfnodes1
tagsclient/.hg/cache/hgtagsfnodes1: size=96
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0040: ff ff ff ff ff ff ff ff 40 f0 35 8c 19 e0 a7 d3 |........@.5.....|
0050: 8a 5c 6a 82 4d cf fb a5 87 d0 2f a3 1e 4f 2f 8a |.\j.M...../..O/.|