Mercurial > hg
view tests/test-tags @ 8810:ac92775b3b80
Add patch.eol to ignore EOLs when patching (issue1019)
The intent is to fix many issues involving patching when win32ext is enabled.
With win32ext, the working directory and repository files EOLs are not the same
which means that patches made on a non-win32ext host do not apply cleanly
because of EOLs discrepancies. A theorically correct approach would be
transform either the patched file or the patch content with the
encoding/decoding filters used by win32ext. This solution is tricky to
implement and invasive, instead we prefer to address the win32ext case, by
offering a way to ignore input EOLs when patching and rewriting them when
saving the patched result.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 00:03:26 +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