Mercurial > hg-stable
view tests/test-tags @ 6920:7e5e13bee8f4
Make test-hardlinks-safety portable
On some systems cp cannot create/preserve hardlinks.
Use util.copyfiles instead, after making sure it actually does
create hardlinks.
author | Christian Ebert <blacktrash@gmx.net> |
---|---|
date | Wed, 20 Aug 2008 17:58:12 +0200 |
parents | ae3089cefaab |
children | a604c98dbf62 |
line wrap: on
line source
#!/bin/sh mkdir t cd t hg init hg id echo a > a hg add a hg commit -m "test" -d "1000000 0" hg co hg identify T=`hg tip --debug | head -n 1 | cut -d : -f 3` hg tag -l "This is a local tag with a really long name!" hg tags rm .hg/localtags echo "$T first" > .hgtags cat .hgtags hg add .hgtags hg commit -m "add tags" -d "1000000 0" hg tags hg identify echo bb > a hg status hg identify hg co first hg id hg -v id hg status echo 1 > b hg add b hg commit -m "branch" -d "1000000 0" hg id hg merge 1 hg id hg status hg commit -m "merge" -d "1000000 0" # create fake head, make sure tag not visible afterwards cp .hgtags tags hg tag -d "1000000 0" last hg rm .hgtags hg commit -m "remove" -d "1000000 0" mv tags .hgtags hg add .hgtags hg commit -m "readd" -d "1000000 0" hg tags # invalid tags echo "spam" >> .hgtags echo >> .hgtags echo "foo bar" >> .hgtags echo "$T invalid" | sed "s/..../a5a5/" >> .hg/localtags hg commit -m "tags" -d "1000000 0" # report tag parse error on other head hg up 3 echo 'x y' >> .hgtags hg commit -m "head" -d "1000000 0" hg tags hg tip # test tag precedence rules cd .. hg init t2 cd t2 echo foo > foo hg add foo hg ci -m 'add foo' -d '1000000 0' # rev 0 hg tag -d '1000000 0' bar # rev 1 echo >> foo hg ci -m 'change foo 1' -d '1000000 0' # rev 2 hg up -C 1 hg tag -r 1 -d '1000000 0' -f bar # rev 3 hg up -C 1 echo >> foo hg ci -m 'change foo 2' -d '1000000 0' # rev 4 hg tags # test tag removal hg tag --remove -d '1000000 0' bar hg tip hg tags echo '% remove nonexistent tag' hg tag --remove -d '1000000 0' foobar hg tip # test tag rank cd .. hg init t3 cd t3 echo foo > foo hg add foo hg ci -m 'add foo' -d '1000000 0' # rev 0 hg tag -d '1000000 0' -f bar # rev 1 bar -> 0 hg tag -d '1000000 0' -f bar # rev 2 bar -> 1 hg tag -d '1000000 0' -fr 0 bar # rev 3 bar -> 0 hg tag -d '1000000 0' -fr 1 bar # rev 3 bar -> 1 hg tag -d '1000000 0' -fr 0 bar # rev 4 bar -> 0 hg tags hg co 3 echo barbar > foo hg ci -m 'change foo' -d '1000000 0' # rev 0 hg tags hg tag -d '1000000 0' -r 3 bar # should complain hg tags # test tag rank with 3 heads cd .. hg init t4 cd t4 echo foo > foo hg add 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 hg up -qC 0 hg tag -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 # 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 hg ci -m 'add foo' # rev 0 hg tag -r 0 -l localtag hg tag --remove localtag hg tag -r 0 globaltag hg tag --remove -l globaltag hg tags -v exit 0