Mercurial > hg
view tests/test-command-template @ 9717:68a1b9d0663e
update: allow branch crossing without -c or -C, with no uncommitted changes
Update will now allow crossing branches within the same named branch,
when given a specific revision, if the working dir is clean, without
requiring the -c or -C option. Abort if no revision is given and
this would cross branches. Minor change to abort message if
uncommitted changes are found.
Modify test-update-branches and output to reflect the altered case. Modify
test-merge5.out to reflect the altered case. Modify
test-up-local-change.out with new message.
author | Stuart W Marks <smarks@smarks.org> |
---|---|
date | Thu, 05 Nov 2009 10:53:59 +0100 |
parents | f04d17912441 |
children | 0aa1a632262b 8ebb34b0f6f7 |
line wrap: on
line source
#!/bin/sh hg init a cd a echo a > a hg add a echo line 1 > b echo line 2 >> b hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>' hg add b echo other 1 > c echo other 2 >> c echo >> c echo other 3 >> c hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>' hg add c hg commit -m 'no person' -d '1200000 0' -u 'other@place' echo c >> c hg commit -m 'no user, no domain' -d '1300000 0' -u 'person' echo foo > .hg/branch hg commit -m 'new branch' -d '1400000 0' -u 'person' hg co -q 3 echo other 4 >> d hg add d hg commit -m 'new head' -d '1500000 0' -u 'person' hg merge -q foo hg commit -m 'merge' -d '1500001 0' -u 'person' # second branch starting at nullrev hg update null echo second > second hg add second hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>' echo third > third hg add third hg commit -m third -d "2020-01-01 10:01" # make sure user/global hgrc does not affect tests echo '[ui]' > .hg/hgrc echo 'logtemplate =' >> .hg/hgrc echo 'style =' >> .hg/hgrc echo '# default style is like normal output' echo '# normal' hg log > log.out hg log --style default > style.out cmp log.out style.out || diff -u log.out style.out echo '# verbose' hg log -v > log.out hg log -v --style default > style.out cmp log.out style.out || diff -u log.out style.out echo '# debug' hg log --debug > log.out hg log --debug --style default > style.out cmp log.out style.out || diff -u log.out style.out echo '# revision with no copies (used to print a traceback)' hg tip -v --template '\n' echo '# compact style works' hg log --style compact hg log -v --style compact hg log --debug --style compact echo '# error if style not readable' touch q chmod 0 q hg log --style ./q echo '# error if no style' hg log --style notexist echo '# error if style missing key' echo 'q = q' > t hg log --style ./t echo '# error if include fails' echo 'changeset = q' >> t hg log --style ./t echo '# include works' rm q echo '{rev}' > q hg log --style ./t echo '# ui.style works' echo '[ui]' > .hg/hgrc echo 'style = t' >> .hg/hgrc hg log echo '# issue338' hg log --style=changelog > changelog cat changelog echo "# keys work" for key in author branches date desc file_adds file_dels file_mods \ files manifest node parents rev tags diffstat; do for mode in '' --verbose --debug; do hg log $mode --template "$key$mode: {$key}\n" done done echo '# filters work' hg log --template '{author|domain}\n' hg log --template '{author|person}\n' hg log --template '{author|user}\n' hg log --template '{date|age}\n' > /dev/null || exit 1 hg log -l1 --template '{date|age}\n' hg log --template '{date|date}\n' hg log --template '{date|isodate}\n' hg log --template '{date|isodatesec}\n' hg log --template '{date|rfc822date}\n' hg log --template '{desc|firstline}\n' hg log --template '{node|short}\n' hg log --template '<changeset author="{author|xmlescape}"/>\n' echo '# formatnode filter works' echo '# quiet' hg -q log -r 0 --template '{node|formatnode}\n' echo '# normal' hg log -r 0 --template '{node|formatnode}\n' echo '# verbose' hg -v log -r 0 --template '{node|formatnode}\n' echo '# debug' hg --debug log -r 0 --template '{node|formatnode}\n' echo '# error on syntax' echo 'x = "f' >> t hg log cd .. echo '# latesttag' hg init latesttag cd latesttag echo a > file hg ci -Am a -d '0 0' echo b >> file hg ci -m b -d '1 0' echo c >> head1 hg ci -Am h1c -d '2 0' hg update -q 1 echo d >> head2 hg ci -Am h2d -d '3 0' echo e >> head2 hg ci -m h2e -d '4 0' hg merge -q hg ci -m merge -d '5 0' echo '# No tag set' hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' echo '# one common tag: longuest path wins' hg tag -r 1 -m t1 -d '6 0' t1 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' echo '# one ancestor tag: more recent wins' hg tag -r 2 -m t2 -d '7 0' t2 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' echo '# two branch tags: more recent wins' hg tag -r 3 -m t3 -d '8 0' t3 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' echo '# merged tag overrides' hg tag -r 5 -m t5 -d '9 0' t5 hg tag -r 3 -m at3 -d '10 0' at3 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' echo '# done'