##// END OF EJS Templates
phases: check HG_PENDING strictly...
phases: check HG_PENDING strictly Before this patch, checking HG_PENDING in phases.py might cause unintentional reading unrelated 'phaseroots.pending' in, because it just examines existence of HG_PENDING environment variable. This patch uses txnutil.trypending() to check HG_PENDING strictly. BTW, this patch may cause failure of bisect in the repository of Mercurial itself, if examination at bisecting assumes that an external hook can see all pending changes while nested transactions across repositories. This invisibility issue will be fixed by subsequent patch, which allows HG_PENDING to refer multiple repositories.

File last commit:

r30234:34a5f6c6 stable
r31053:6afd8a87 default
Show More
test-hook.t
891 lines | 29.5 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 commit hooks can see env vars
Pierre-Yves David
afterlock: add the callback to the top level lock (issue4608)...
r24821 (and post-transaction one are run unlocked)
Nicolas Dumazet
tests: unify test-hook
r11793
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370
FUJIWARA Katsunori
localrepo: rename hook argument from TXNID to txnid (BC)...
r25218 $ cat > $TESTTMP/txnabort.checkargs.py <<EOF
> def showargs(ui, repo, hooktype, **kwargs):
> ui.write('%s python hook: %s\n' % (hooktype, ','.join(sorted(kwargs))))
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg init a
$ cd a
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > .hg/hgrc <<EOF
> [hooks]
Matt Mackall
tests: simplify printenv calls...
r25478 > commit = sh -c "HG_LOCAL= HG_TAG= printenv.py commit"
> commit.b = sh -c "HG_LOCAL= HG_TAG= printenv.py commit.b"
> precommit = sh -c "HG_LOCAL= HG_NODE= HG_TAG= printenv.py precommit"
> pretxncommit = sh -c "HG_LOCAL= HG_TAG= printenv.py pretxncommit"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > pretxncommit.tip = hg -q tip
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > pre-identify = sh -c "printenv.py pre-identify 1"
> pre-cat = sh -c "printenv.py pre-cat"
> post-cat = sh -c "printenv.py post-cat"
Matt Mackall
tests: simplify printenv calls...
r25478 > pretxnopen = sh -c "HG_LOCAL= HG_TAG= printenv.py pretxnopen"
> pretxnclose = sh -c "HG_LOCAL= HG_TAG= printenv.py pretxnclose"
> txnclose = sh -c "HG_LOCAL= HG_TAG= printenv.py txnclose"
FUJIWARA Katsunori
localrepo: rename hook argument from TXNID to txnid (BC)...
r25218 > txnabort.0 = python:$TESTTMP/txnabort.checkargs.py:showargs
Matt Mackall
tests: simplify printenv calls...
r25478 > txnabort.1 = sh -c "HG_LOCAL= HG_TAG= printenv.py txnabort"
Matt Harbison
test-hook.t: don't directly use redirect to /dev/null in hook for Windows...
r24827 > txnclose.checklock = sh -c "hg debuglock > /dev/null"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ echo a > a
$ hg add a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg commit -m a
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=0000000000000000000000000000000000000000
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000 HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 0:cb9a9f314b8b
FUJIWARA Katsunori
localrepo: use correct argument name for pretxnclose hooks (BC)...
r25219 pretxnclose hook: HG_PENDING=$TESTTMP/a HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 commit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000
commit.b hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000
Nicolas Dumazet
tests: unify test-hook
r11793
$ hg clone . ../b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ../b
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 changegroup hooks can see env vars
Nicolas Dumazet
tests: unify test-hook
r11793
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > .hg/hgrc <<EOF
> [hooks]
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > prechangegroup = sh -c "printenv.py prechangegroup"
> changegroup = sh -c "printenv.py changegroup"
> incoming = sh -c "printenv.py incoming"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 pretxncommit and commit hooks can see both parents of merge
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ../a
$ echo b >> a
$ hg commit -m a1 -d "1 0"
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 1:ab228980c14d
FUJIWARA Katsunori
localrepo: use correct argument name for pretxnclose hooks (BC)...
r25219 pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 txnclose hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 commit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
commit.b hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg update -C 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > b
$ hg add b
$ hg commit -m b -d '1 0'
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 2:ee9deb46ab31
FUJIWARA Katsunori
localrepo: use correct argument name for pretxnclose hooks (BC)...
r25219 pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
FUJIWARA Katsunori
commands: make commit acquire locks before processing (issue4368)...
r27192 created new head
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 txnclose hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 commit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
commit.b hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg merge 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -m merge -d '2 0'
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 3:07f3376c1e65
FUJIWARA Katsunori
localrepo: use correct argument name for pretxnclose hooks (BC)...
r25219 pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 txnclose hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 commit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd
commit.b hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 test generic hooks
Nicolas Dumazet
tests: unify test-hook
r11793
$ hg id
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pre-identify hook: HG_ARGS=id HG_OPTS={'bookmarks': None, 'branch': None, 'id': None, 'insecure': None, 'num': None, 'remotecmd': '', 'rev': '', 'ssh': '', 'tags': None} HG_PATS=[]
Siddharth Agarwal
dispatch: print 'abort:' when a pre-command hook fails (BC)...
r19011 abort: pre-identify hook exited with status 1
[255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg cat b
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pre-cat hook: HG_ARGS=cat b HG_OPTS={'decode': None, 'exclude': [], 'include': [], 'output': '', 'rev': ''} HG_PATS=['b']
Dan Villiom Podlaski Christiansen
make_file: always return a fresh file handle that can be closed...
r13121 b
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 post-cat hook: HG_ARGS=cat b HG_OPTS={'decode': None, 'exclude': [], 'include': [], 'output': '', 'rev': ''} HG_PATS=['b'] HG_RESULT=0
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ../b
$ hg pull ../a
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 pulling from ../a
searching for changes
Pierre-Yves David
hooks: back 9f272bf3b342 out...
r26861 prechangegroup hook: HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 2 files
Mateusz Kwapich
hooks: add HG_NODE_LAST to txnclose and changegroup hook environments...
r27739 changegroup hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_NODE_LAST=07f3376c1e655977439df2a814e3cc14b27abac2 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 incoming hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
incoming hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
incoming hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Nicolas Dumazet
tests: unify test-hook
r11793 (run 'hg update' to get a working copy)
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 tag hooks can see env vars
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ../a
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat >> .hg/hgrc <<EOF
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > pretag = sh -c "printenv.py pretag"
Matt Mackall
tests: simplify printenv calls...
r25478 > tag = sh -c "HG_PARENT1= HG_PARENT2= printenv.py tag"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg tag -d '3 0' a
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a
precommit hook: HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 4:539e4b31b6dc
FUJIWARA Katsunori
localrepo: use correct argument name for pretxnclose hooks (BC)...
r25219 pretxnclose hook: HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 tag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a
Pierre-Yves David
transaction: introduce a transaction ID, to be available to all hooks...
r24740 txnclose hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 commit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2
commit.b hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg tag -l la
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretag hook: HG_LOCAL=1 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=la
tag hook: HG_LOCAL=1 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=la
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 pretag hook can forbid tagging
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> pretag.forbid = sh -c "printenv.py pretag.forbid 1"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg tag -d '4 0' fa
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretag hook: HG_LOCAL=0 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fa
pretag.forbid hook: HG_LOCAL=0 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fa
Nicolas Dumazet
tests: unify test-hook
r11793 abort: pretag.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg tag -l fla
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretag hook: HG_LOCAL=1 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fla
pretag.forbid hook: HG_LOCAL=1 HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_TAG=fla
Nicolas Dumazet
tests: unify test-hook
r11793 abort: pretag.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 pretxncommit hook can see changeset, can roll back txn, changeset no
more there after
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> pretxncommit.forbid0 = sh -c "hg tip -q"
> pretxncommit.forbid1 = sh -c "printenv.py pretxncommit.forbid 1"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ echo z > z
$ hg add z
$ hg -q tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 4:539e4b31b6dc
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg commit -m 'fail' -d '4 0'
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10
FUJIWARA Katsunori
localrepo: pass hook argument txnid to pretxnopen hooks...
r25268 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a
Martin Geisler
tests: remove unneeded -d flags...
r12156 5:6f611f8018c1
5:6f611f8018c1
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 pretxncommit.forbid hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a
Nicolas Dumazet
tests: unify test-hook
r11793 transaction abort!
FUJIWARA Katsunori
localrepo: rename hook argument from TXNID to txnid (BC)...
r25218 txnabort python hook: txnid,txnname
Pierre-Yves David
hooks: add a 'txnabort' hook...
r24792 txnabort hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
Nicolas Dumazet
tests: unify test-hook
r11793 rollback completed
abort: pretxncommit.forbid1 hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg -q tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 4:539e4b31b6dc
Nicolas Dumazet
tests: unify test-hook
r11793
Pierre-Yves David
changelog: register changelog.i.a as a temporary file...
r23292 (Check that no 'changelog.i.a' file were left behind)
$ ls -1 .hg/store/
00changelog.i
00manifest.i
data
fncache
journal.phaseroots
phaseroots
undo
Pierre-Yves David
transaction: include backup file in the "undo" transaction...
r23904 undo.backup.fncache
undo.backupfiles
Pierre-Yves David
changelog: register changelog.i.a as a temporary file...
r23292 undo.phaseroots
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 precommit hook can prevent commit
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> precommit.forbid = sh -c "printenv.py precommit.forbid 1"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg commit -m 'fail' -d '4 0'
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 precommit hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10
precommit.forbid hook: HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10
Nicolas Dumazet
tests: unify test-hook
r11793 abort: precommit.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg -q tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 4:539e4b31b6dc
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 preupdate hook can prevent update
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> preupdate = sh -c "printenv.py preupdate"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg update 1
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preupdate hook: HG_PARENT1=ab228980c14d
Nicolas Dumazet
tests: unify test-hook
r11793 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 update hook
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> update = sh -c "printenv.py update"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg update
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preupdate hook: HG_PARENT1=539e4b31b6dc
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 update hook: HG_ERROR=0 HG_PARENT1=539e4b31b6dc
Pierre-Yves David
update: wlock the repo for the whole 'hg update' command...
r26028 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Nicolas Dumazet
tests: unify test-hook
r11793
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 pushkey hook
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> pushkey = sh -c "printenv.py pushkey"
> EOF
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../b
$ hg bookmark -r null foo
$ hg push -B foo ../a
pushing to ../a
searching for changes
no changes found
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=push (glob)
Augie Fackler
exchange: correctly specify url to unbundle (issue5145)...
r29704 pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_PENDING=$TESTTMP/a HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=file:$TESTTMP/a (glob)
Pierre-Yves David
push: gather all bookmark decisions together...
r22651 pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1
Augie Fackler
exchange: correctly specify url to unbundle (issue5145)...
r29704 txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=file:$TESTTMP/a (glob)
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 exporting bookmark foo
Matt Mackall
push: don't treat bookmark as a found change...
r16038 [1]
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../a
listkeys hook
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> listkeys = sh -c "printenv.py listkeys"
> EOF
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ hg bookmark -r null bar
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../b
$ hg pull -B bar ../a
pulling from ../a
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 no changes found
Mike Hommey
bundle2: properly request phases during getbundle...
r29064 listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'}
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 adding remote bookmark bar
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../a
test that prepushkey can prevent incoming keys
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> prepushkey = sh -c "printenv.py prepushkey.forbid 1"
> EOF
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../b
$ hg bookmark -r null baz
$ hg push -B baz ../a
pushing to ../a
searching for changes
Pierre-Yves David
push: perform phases discovery before the push...
r22019 listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'}
Pierre-Yves David
push: move bookmark discovery with other discovery steps...
r22239 listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 no changes found
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=push (glob)
Augie Fackler
exchange: correctly specify url to unbundle (issue5145)...
r29704 prepushkey.forbid hook: HG_BUNDLE2=1 HG_KEY=baz HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_SOURCE=push HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 pushkey-abort: prepushkey hook exited with status 1
Pierre-Yves David
bookmarks: abort the whole push if bookmarks fails to update (BC)...
r25501 abort: exporting bookmark baz failed!
[255]
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../a
test that prelistkeys can prevent listing keys
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> prelistkeys = sh -c "printenv.py prelistkeys.forbid 1"
> EOF
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ hg bookmark -r null quux
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pretxnopen hook: HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_PENDING=$TESTTMP/a HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 $ cd ../b
$ hg pull -B quux ../a
pulling from ../a
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 prelistkeys.forbid hook: HG_NAMESPACE=bookmarks
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102 abort: prelistkeys hook exited with status 1
[255]
$ cd ../a
Siddharth Agarwal
test-hook.t: remove prelistkeys.forbid hook before moving on...
r18850 $ rm .hg/hgrc
Brodie Rao
pushkey: add hooks for pushkey/listkeys
r14102
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 prechangegroup hook can prevent incoming changes
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ../b
$ hg -q tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 3:07f3376c1e65
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > .hg/hgrc <<EOF
> [hooks]
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > prechangegroup.forbid = sh -c "printenv.py prechangegroup.forbid 1"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg pull ../a
pulling from ../a
searching for changes
Pierre-Yves David
hooks: back 9f272bf3b342 out...
r26861 prechangegroup.forbid hook: HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Nicolas Dumazet
tests: unify test-hook
r11793 abort: prechangegroup.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 pretxnchangegroup hook can see incoming changes, can roll back txn,
incoming changes no longer there after
Nicolas Dumazet
tests: unify test-hook
r11793
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > .hg/hgrc <<EOF
> [hooks]
> pretxnchangegroup.forbid0 = hg tip -q
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > pretxnchangegroup.forbid1 = sh -c "printenv.py pretxnchangegroup.forbid 1"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg pull ../a
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 4:539e4b31b6dc
Mateusz Kwapich
hooks: add HG_NODE_LAST to txnclose and changegroup hook environments...
r27739 pretxnchangegroup.forbid hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_NODE_LAST=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/b HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
Nicolas Dumazet
tests: unify test-hook
r11793 transaction abort!
rollback completed
abort: pretxnchangegroup.forbid1 hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg -q tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 3:07f3376c1e65
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 outgoing hooks can see env vars
Nicolas Dumazet
tests: unify test-hook
r11793
$ rm .hg/hgrc
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > ../a/.hg/hgrc <<EOF
> [hooks]
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > preoutgoing = sh -c "printenv.py preoutgoing"
> outgoing = sh -c "printenv.py outgoing"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg pull ../a
pulling from ../a
searching for changes
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preoutgoing hook: HG_SOURCE=pull
Pierre-Yves David
tests: use bundle2 for test-hook...
r25370 outgoing hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_SOURCE=pull
Nicolas Dumazet
tests: unify test-hook
r11793 adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Levi Bard
bookmarks: pull new bookmarks from remote by default (BC)
r16697 adding remote bookmark quux
Nicolas Dumazet
tests: unify test-hook
r11793 (run 'hg update' to get a working copy)
$ hg rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 3 (undo pull)
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 preoutgoing hook can prevent outgoing changes
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> ../a/.hg/hgrc <<EOF
> preoutgoing.forbid = sh -c "printenv.py preoutgoing.forbid 1"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg pull ../a
Mads Kiilerich
util: flush stdout before calling external processes...
r13439 pulling from ../a
searching for changes
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preoutgoing hook: HG_SOURCE=pull
preoutgoing.forbid hook: HG_SOURCE=pull
Nicolas Dumazet
tests: unify test-hook
r11793 abort: preoutgoing.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 outgoing hooks work for local clones
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ..
Adrian Buehlmann
test-hook: adapt for Windows
r16964 $ cat > a/.hg/hgrc <<EOF
> [hooks]
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > preoutgoing = sh -c "printenv.py preoutgoing"
> outgoing = sh -c "printenv.py outgoing"
Adrian Buehlmann
test-hook: adapt for Windows
r16964 > EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg clone a c
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preoutgoing hook: HG_SOURCE=clone
outgoing hook: HG_NODE=0000000000000000000000000000000000000000 HG_SOURCE=clone
Nicolas Dumazet
tests: unify test-hook
r11793 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf c
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 preoutgoing hook can prevent outgoing changes for local clones
Nicolas Dumazet
tests: unify test-hook
r11793
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> a/.hg/hgrc <<EOF
> preoutgoing.forbid = sh -c "printenv.py preoutgoing.forbid 1"
> EOF
Nicolas Dumazet
tests: unify test-hook
r11793 $ hg clone a zzz
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 preoutgoing hook: HG_SOURCE=clone
preoutgoing.forbid hook: HG_SOURCE=clone
Nicolas Dumazet
tests: unify test-hook
r11793 abort: preoutgoing.forbid hook exited with status 1
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
test-hook: adapt for Windows
r16964
$ cd "$TESTTMP/b"
Nicolas Dumazet
tests: unify test-hook
r11793
$ cat > hooktests.py <<EOF
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > from mercurial import error
Nicolas Dumazet
tests: unify test-hook
r11793 >
> uncallable = 0
>
> def printargs(args):
> args.pop('ui', None)
> args.pop('repo', None)
> a = list(args.items())
> a.sort()
> print 'hook args:'
> for k, v in a:
> print ' ', k, v
>
> def passhook(**args):
> printargs(args)
>
> def failhook(**args):
> printargs(args)
> return True
>
> class LocalException(Exception):
> pass
>
> def raisehook(**args):
> raise LocalException('exception from hook')
>
> def aborthook(**args):
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > raise error.Abort('raise abort from hook')
Nicolas Dumazet
tests: unify test-hook
r11793 >
> def brokenhook(**args):
> return 1 + {}
>
Idan Kamara
dispatch: propagate ui command options to the local ui (issue2523)...
r14601 > def verbosehook(ui, **args):
> ui.note('verbose output from hook\n')
>
Mads Kiilerich
tag: invalidate tag cache immediately after adding new tag (issue3210)...
r15929 > def printtags(ui, repo, **args):
Mads Kiilerich
tests: make test-hook.t output more stable
r18377 > print sorted(repo.tags())
Mads Kiilerich
tag: invalidate tag cache immediately after adding new tag (issue3210)...
r15929 >
Nicolas Dumazet
tests: unify test-hook
r11793 > class container:
> unreachable = 1
> EOF
Siddharth Agarwal
hook: don't crash on syntax errors in python hooks...
r28109 $ cat > syntaxerror.py << EOF
> (foo
> EOF
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 test python hooks
Nicolas Dumazet
tests: unify test-hook
r11793
Adrian Buehlmann
test-hook: adapt for Windows
r16964 #if windows
$ PYTHONPATH="$TESTTMP/b;$PYTHONPATH"
#else
$ PYTHONPATH="$TESTTMP/b:$PYTHONPATH"
#endif
Nicolas Dumazet
tests: unify test-hook
r11793 $ export PYTHONPATH
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.broken = python:hooktests.brokenhook' >> ../a/.hg/hgrc
$ hg pull ../a 2>&1 | grep 'raised an exception'
error: preoutgoing.broken hook raised an exception: unsupported operand type(s) for +: 'int' and 'dict'
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.raise = python:hooktests.raisehook' >> ../a/.hg/hgrc
$ hg pull ../a 2>&1 | grep 'raised an exception'
error: preoutgoing.raise hook raised an exception: exception from hook
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.abort = python:hooktests.aborthook' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
error: preoutgoing.abort hook failed: raise abort from hook
abort: raise abort from hook
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.fail = python:hooktests.failhook' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
hook args:
hooktype preoutgoing
source pull
abort: preoutgoing.fail hook failed
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.uncallable = python:hooktests.uncallable' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
Siddharth Agarwal
hook: fewer parentheses for hook load errors...
r28079 abort: preoutgoing.uncallable hook is invalid: "hooktests.uncallable" is not callable
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.nohook = python:hooktests.nohook' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
Siddharth Agarwal
hook: fewer parentheses for hook load errors...
r28079 abort: preoutgoing.nohook hook is invalid: "hooktests.nohook" is not defined
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.nomodule = python:nomodule' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
Siddharth Agarwal
hook: even fewer parentheses for load errors...
r28106 abort: preoutgoing.nomodule hook is invalid: "nomodule" not in a module
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.badmodule = python:nomodule.nowhere' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
Siddharth Agarwal
hook: fewer parentheses for hook load errors...
r28079 abort: preoutgoing.badmodule hook is invalid: import of "nomodule" failed
Siddharth Agarwal
hook: for python hook ImportErrors, add note to run with --traceback...
r28080 (run with --traceback for stack trace)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
$ echo 'preoutgoing.unreachable = python:hooktests.container.unreachable' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
Siddharth Agarwal
hook: fewer parentheses for hook load errors...
r28079 abort: preoutgoing.unreachable hook is invalid: import of "hooktests.container" failed
Siddharth Agarwal
hook: for python hook ImportErrors, add note to run with --traceback...
r28080 (run with --traceback for stack trace)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > ../a/.hg/hgrc
Siddharth Agarwal
hook: don't crash on syntax errors in python hooks...
r28109 $ echo 'preoutgoing.syntaxerror = python:syntaxerror.syntaxerror' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
abort: preoutgoing.syntaxerror hook is invalid: import of "syntaxerror" failed
(run with --traceback for stack trace)
[255]
Siddharth Agarwal
hook: filter out unstable output in tests...
r28444 The second egrep is to filter out lines like ' ^', which are slightly
different between Python 2.6 and Python 2.7.
$ hg pull ../a --traceback 2>&1 | egrep -v '^( +File| [_a-zA-Z*(])' | egrep -v '^( )+(\^)?$'
Siddharth Agarwal
hook: don't crash on syntax errors in python hooks...
r28109 pulling from ../a
searching for changes
exception from first failed import attempt:
Traceback (most recent call last):
Maciej Fijalkowski
pypy: fix overspecific test checks...
r28737 SyntaxError: * (glob)
Siddharth Agarwal
hook: don't crash on syntax errors in python hooks...
r28109 exception from second failed import attempt:
Traceback (most recent call last):
ImportError: No module named hgext_syntaxerror
Traceback (most recent call last):
HookLoadError: preoutgoing.syntaxerror hook is invalid: import of "syntaxerror" failed
abort: preoutgoing.syntaxerror hook is invalid: import of "syntaxerror" failed
$ echo '[hooks]' > ../a/.hg/hgrc
Nicolas Dumazet
tests: unify test-hook
r11793 $ echo 'preoutgoing.pass = python:hooktests.passhook' >> ../a/.hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
hook args:
hooktype preoutgoing
source pull
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Levi Bard
bookmarks: pull new bookmarks from remote by default (BC)
r16697 adding remote bookmark quux
Nicolas Dumazet
tests: unify test-hook
r11793 (run 'hg update' to get a working copy)
Siddharth Agarwal
hook: add tests for failing post- python hooks...
r28107 post- python hooks that fail to *run* don't cause an abort
$ rm ../a/.hg/hgrc
$ echo '[hooks]' > .hg/hgrc
$ echo 'post-pull.broken = python:hooktests.brokenhook' >> .hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
no changes found
error: post-pull.broken hook raised an exception: unsupported operand type(s) for +: 'int' and 'dict'
Siddharth Agarwal
hook: for python hook exceptions, add note to run with --traceback...
r28108 (run with --traceback for stack trace)
Siddharth Agarwal
hook: add tests for failing post- python hooks...
r28107
but post- python hooks that fail to *load* do
$ echo '[hooks]' > .hg/hgrc
$ echo 'post-pull.nomodule = python:nomodule' >> .hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
no changes found
abort: post-pull.nomodule hook is invalid: "nomodule" not in a module
[255]
$ echo '[hooks]' > .hg/hgrc
$ echo 'post-pull.badmodule = python:nomodule.nowhere' >> .hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
no changes found
abort: post-pull.badmodule hook is invalid: import of "nomodule" failed
(run with --traceback for stack trace)
[255]
$ echo '[hooks]' > .hg/hgrc
$ echo 'post-pull.nohook = python:hooktests.nohook' >> .hg/hgrc
$ hg pull ../a
pulling from ../a
searching for changes
no changes found
abort: post-pull.nohook hook is invalid: "hooktests.nohook" is not defined
[255]
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 make sure --traceback works
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > .hg/hgrc
$ echo 'commit.abort = python:hooktests.aborthook' >> .hg/hgrc
$ echo aa > a
$ hg --traceback commit -d '0 0' -ma 2>&1 | grep '^Traceback'
Traceback (most recent call last):
$ cd ..
$ hg init c
$ cd c
$ cat > hookext.py <<EOF
> def autohook(**args):
> print "Automatically installed hook"
>
> def reposetup(ui, repo):
> repo.ui.setconfig("hooks", "commit.auto", autohook)
> EOF
$ echo '[extensions]' >> .hg/hgrc
$ echo 'hookext = hookext.py' >> .hg/hgrc
$ touch foo
$ hg add foo
$ hg ci -d '0 0' -m 'add foo'
Automatically installed hook
$ echo >> foo
Nicolas Dumazet
tests: remove useless sed in test-hook
r11794 $ hg ci --debug -d '0 0' -m 'change foo'
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing files:
Nicolas Dumazet
tests: unify test-hook
r11793 foo
Mads Kiilerich
localrepo: show headline notes in commitctx before showing filenames...
r23749 committing manifest
committing changelog
FUJIWARA Katsunori
commands: make commit acquire locks before processing (issue4368)...
r27192 committed changeset 1:52998019f6252a2b893452765fcb0a47351a5708
Mads Kiilerich
hooks: for python hooks, consistently use __name__ etc as name, not the repr...
r20548 calling hook commit.auto: hgext_hookext.autohook
Nicolas Dumazet
tests: unify test-hook
r11793 Automatically installed hook
Nicolas Dumazet
tests: remove useless sed in test-hook
r11794 $ hg showconfig hooks
Brodie Rao
tests: add glob matching for unified tests...
r12376 hooks.commit.auto=<function autohook at *> (glob)
Nicolas Dumazet
tests: unify test-hook
r11793
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 test python hook configured with python:[file]:[hook] syntax
Nicolas Dumazet
tests: unify test-hook
r11793
$ cd ..
$ mkdir d
$ cd d
$ hg init repo
$ mkdir hooks
$ cd hooks
$ cat > testhooks.py <<EOF
> def testhook(**args):
> print 'hook works'
> EOF
$ echo '[hooks]' > ../repo/.hg/hgrc
$ echo "pre-commit.test = python:`pwd`/testhooks.py:testhook" >> ../repo/.hg/hgrc
$ cd ../repo
$ hg commit -d '0 0'
hook works
nothing changed
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Nicolas Dumazet
tests: unify test-hook
r11793
Simon Heimberg
hooks: print out more information when loading a python hook fails...
r17217 $ echo '[hooks]' > .hg/hgrc
timeless@mozdev.org
spelling: nonexistent
r17492 $ echo "update.ne = python:`pwd`/nonexistent.py:testhook" >> .hg/hgrc
Simon Heimberg
hooks: print out more information when loading a python hook fails...
r17217 $ echo "pre-identify.npmd = python:`pwd`/:no_python_module_dir" >> .hg/hgrc
$ hg up null
loading update.ne hook failed:
timeless@mozdev.org
spelling: nonexistent
r17492 abort: No such file or directory: $TESTTMP/d/repo/nonexistent.py
Simon Heimberg
hooks: print out more information when loading a python hook fails...
r17217 [255]
$ hg id
loading pre-identify.npmd hook failed:
abort: No module named repo!
[255]
Nicolas Dumazet
tests: unify test-hook
r11793 $ cd ../../b
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 make sure --traceback works on hook import failure
Nicolas Dumazet
tests: unify test-hook
r11793
$ cat > importfail.py <<EOF
> import somebogusmodule
> # dereference something in the module to force demandimport to load it
> somebogusmodule.whatever
> EOF
$ echo '[hooks]' > .hg/hgrc
$ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc
$ echo a >> a
Mads Kiilerich
test-hook.t: Solaris /usr/bin/egrep do not support {4}
r17283 $ hg --traceback commit -ma 2>&1 | egrep -v '^( +File| [a-zA-Z(])'
Nicolas Dumazet
tests: unify test-hook
r11793 exception from first failed import attempt:
Traceback (most recent call last):
ImportError: No module named somebogusmodule
exception from second failed import attempt:
Traceback (most recent call last):
ImportError: No module named hgext_importfail
Traceback (most recent call last):
Siddharth Agarwal
hook: fewer parentheses for hook load errors...
r28079 HookLoadError: precommit.importfail hook is invalid: import of "importfail" failed
abort: precommit.importfail hook is invalid: import of "importfail" failed
Nicolas Dumazet
tests: unify test-hook
r11793
Martin Geisler
tests: added a short description to issue numbers...
r12399 Issue1827: Hooks Update & Commit not completely post operation
Matt Harbison
merge: run update hook after the last wlock release...
r24881 commit and update hooks should run after command completion. The largefiles
use demonstrates a recursive wlock, showing the hook doesn't run until the
final release (and dirstate flush).
Nicolas Dumazet
tests: unify test-hook
r11793
$ echo '[hooks]' > .hg/hgrc
$ echo 'commit = hg id' >> .hg/hgrc
$ echo 'update = hg id' >> .hg/hgrc
$ echo bb > a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -ma
223eafe2750c tip
Matt Harbison
merge: run update hook after the last wlock release...
r24881 $ hg up 0 --config extensions.largefiles=
FUJIWARA Katsunori
merge: make in-memory changes visible to external update hooks...
r26752 cb9a9f314b8b
Pierre-Yves David
update: wlock the repo for the whole 'hg update' command...
r26028 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Nicolas Dumazet
tests: unify test-hook
r11793
timeless@mozdev.org
spelling: propagated
r17508 make sure --verbose (and --quiet/--debug etc.) are propagated to the local ui
Idan Kamara
dispatch: propagate ui command options to the local ui (issue2523)...
r14601 that is passed to pre/post hooks
$ echo '[hooks]' > .hg/hgrc
$ echo 'pre-identify = python:hooktests.verbosehook' >> .hg/hgrc
$ hg id
cb9a9f314b8b
$ hg id --verbose
calling hook pre-identify: hooktests.verbosehook
verbose output from hook
cb9a9f314b8b
Matt Zuba
hooks: prioritize run order of hooks...
r15896
Ensure hooks can be prioritized
$ echo '[hooks]' > .hg/hgrc
$ echo 'pre-identify.a = python:hooktests.verbosehook' >> .hg/hgrc
$ echo 'pre-identify.b = python:hooktests.verbosehook' >> .hg/hgrc
$ echo 'priority.pre-identify.b = 1' >> .hg/hgrc
$ echo 'pre-identify.c = python:hooktests.verbosehook' >> .hg/hgrc
$ hg id --verbose
calling hook pre-identify.b: hooktests.verbosehook
verbose output from hook
calling hook pre-identify.a: hooktests.verbosehook
verbose output from hook
calling hook pre-identify.c: hooktests.verbosehook
verbose output from hook
cb9a9f314b8b
Mads Kiilerich
tag: invalidate tag cache immediately after adding new tag (issue3210)...
r15929
new tags must be visible in pretxncommit (issue3210)
$ echo 'pretxncommit.printtags = python:hooktests.printtags' >> .hg/hgrc
$ hg tag -f foo
['a', 'foo', 'tip']
Sietse Brouwer
dirstate: don't write repo.currenttransaction to repo.dirstate if repo...
r27228 post-init hooks must not crash (issue4983)
This also creates the `to` repo for the next test block.
$ cd ..
$ cat << EOF >> hgrc-with-post-init-hook
> [hooks]
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 > post-init = sh -c "printenv.py post-init"
Sietse Brouwer
dirstate: don't write repo.currenttransaction to repo.dirstate if repo...
r27228 > EOF
$ HGRCPATH=hgrc-with-post-init-hook hg init to
post-init hook: HG_ARGS=init to HG_OPTS={'insecure': None, 'remotecmd': '', 'ssh': ''} HG_PATS=['to'] HG_RESULT=0
Bryan O'Sullivan
changelog: ensure that nodecache is valid (issue3428)...
r16619 new commits must be visible in pretxnchangegroup (issue3428)
$ echo '[hooks]' >> to/.hg/hgrc
Durham Goode
hooks: fix hooks not firing if prechangegroup was set (issue4934)...
r26859 $ echo 'prechangegroup = hg --traceback tip' >> to/.hg/hgrc
Bryan O'Sullivan
changelog: ensure that nodecache is valid (issue3428)...
r16619 $ echo 'pretxnchangegroup = hg --traceback tip' >> to/.hg/hgrc
$ echo a >> to/a
$ hg --cwd to ci -Ama
adding a
$ hg clone to from
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo aa >> from/a
$ hg --cwd from ci -mb
$ hg --cwd from push
Adrian Buehlmann
test-hook: adapt for Windows
r16964 pushing to $TESTTMP/to (glob)
Bryan O'Sullivan
changelog: ensure that nodecache is valid (issue3428)...
r16619 searching for changes
Durham Goode
hooks: fix hooks not firing if prechangegroup was set (issue4934)...
r26859 changeset: 0:cb9a9f314b8b
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Bryan O'Sullivan
changelog: ensure that nodecache is valid (issue3428)...
r16619 adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
changeset: 1:9836a07b9b9d
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
Durham Goode
transaction: abort transaction during hook exception...
r27924
pretxnclose hook failure should abort the transaction
$ hg init txnfailure
$ cd txnfailure
$ touch a && hg commit -Aqm a
$ cat >> .hg/hgrc <<EOF
> [hooks]
> pretxnclose.error = exit 1
> EOF
$ hg strip -r 0 --config extensions.strip=
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saved backup bundle to * (glob)
transaction abort!
rollback completed
Martin von Zweigbergk
strip: don't use "full" and "partial" to describe bundles...
r29954 strip failed, backup bundle stored in * (glob)
Durham Goode
transaction: abort transaction during hook exception...
r27924 abort: pretxnclose.error hook exited with status 1
[255]
$ hg recover
no interrupted transaction available
[1]
Pierre-Yves David
hook: report untrusted hooks as failure (issue5110) (BC)...
r28938 $ cd ..
Hook from untrusted hgrc are reported as failure
================================================
$ cat << EOF > $TESTTMP/untrusted.py
> from mercurial import scmutil, util
> def uisetup(ui):
> class untrustedui(ui.__class__):
> def _trusted(self, fp, f):
> if util.normpath(fp.name).endswith('untrusted/.hg/hgrc'):
> return False
> return super(untrustedui, self)._trusted(fp, f)
> ui.__class__ = untrustedui
> EOF
$ cat << EOF >> $HGRCPATH
> [extensions]
> untrusted=$TESTTMP/untrusted.py
> EOF
$ hg init untrusted
$ cd untrusted
Non-blocking hook
-----------------
$ cat << EOF >> .hg/hgrc
> [hooks]
> txnclose.testing=echo txnclose hook called
> EOF
$ touch a && hg commit -Aqm a
warning: untrusted hook txnclose not executed
$ hg log
changeset: 0:3903775176ed
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Non-blocking hook
-----------------
$ cat << EOF >> .hg/hgrc
> [hooks]
> pretxnclose.testing=echo pre-txnclose hook called
> EOF
$ touch b && hg commit -Aqm a
transaction abort!
rollback completed
abort: untrusted hook pretxnclose not executed
(see 'hg help config.trusted')
[255]
$ hg log
changeset: 0:3903775176ed
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a