1 #!/bin/sh |
1 #!/bin/sh |
2 |
2 |
3 hg init |
3 # commit hooks can see env vars |
|
4 hg init a |
|
5 cd a |
4 echo "[hooks]" > .hg/hgrc |
6 echo "[hooks]" > .hg/hgrc |
5 echo 'precommit = echo precommit hook' >> .hg/hgrc |
7 echo 'commit = echo commit hook: n=$HG_NODE p1=$HG_PARENT1 p2=$HG_PARENT2' >> .hg/hgrc |
6 echo 'commit = echo commit hook: $NODE' >> .hg/hgrc |
|
7 echo 'commit.b = echo commit hook b' >> .hg/hgrc |
8 echo 'commit.b = echo commit hook b' >> .hg/hgrc |
|
9 echo 'precommit = echo precommit hook: p1=$HG_PARENT1 p2=$HG_PARENT2' >> .hg/hgrc |
|
10 echo 'pretxncommit = echo pretxncommit hook: n=$HG_NODE p1=$HG_PARENT1 p2=$HG_PARENT2; hg -q tip' >> .hg/hgrc |
8 echo a > a |
11 echo a > a |
9 hg add a |
12 hg add a |
10 hg commit -m "test" -d "0 0" |
13 hg commit -m a -d "0 0" |
|
14 |
|
15 hg clone . ../b |
|
16 cd ../b |
|
17 |
|
18 # changegroup hooks can see env vars |
|
19 echo '[hooks]' > .hg/hgrc |
|
20 echo 'prechangegroup = echo prechangegroup hook' >> .hg/hgrc |
|
21 echo 'changegroup = echo changegroup hook: n=$HG_NODE' >> .hg/hgrc |
|
22 echo 'incoming = echo incoming hook: n=$HG_NODE' >> .hg/hgrc |
|
23 |
|
24 # pretxncommit and commit hooks can see both parents of merge |
|
25 cd ../a |
|
26 echo b >> a |
|
27 hg commit -m a1 -d "1 0" |
|
28 hg update -C 0 |
|
29 echo b > b |
|
30 hg add b |
|
31 hg commit -m b -d '1 0' |
|
32 hg update -m 1 |
|
33 hg commit -m merge -d '2 0' |
|
34 |
|
35 cd ../b |
|
36 hg pull ../a |
|
37 |
|
38 # tag hooks can see env vars |
|
39 cd ../a |
|
40 echo 'pretag = echo pretag hook: t=$HG_TAG n=$HG_NODE l=$HG_LOCAL' >> .hg/hgrc |
|
41 echo 'tag = echo tag hook: t=$HG_TAG n=$HG_NODE l=$HG_LOCAL' >> .hg/hgrc |
|
42 hg tag -d '3 0' a |
|
43 hg tag -l la |
|
44 |
|
45 # pretag hook can forbid tagging |
|
46 echo 'pretag.forbid = echo pretag.forbid hook; exit 1' >> .hg/hgrc |
|
47 hg tag -d '4 0' fa |
|
48 hg tag -l fla |
|
49 |
|
50 # pretxncommit hook can see changeset, can roll back txn, changeset |
|
51 # no more there after |
|
52 echo 'pretxncommit.forbid = echo pretxncommit.forbid hook: tip=`hg -q tip`; exit 1' >> .hg/hgrc |
|
53 echo z > z |
|
54 hg add z |
|
55 hg -q tip |
|
56 hg commit -m 'fail' -d '4 0' |
|
57 hg -q tip |
|
58 |
|
59 # precommit hook can prevent commit |
|
60 echo 'precommit.forbid = echo precommit.forbid hook; exit 1' >> .hg/hgrc |
|
61 hg commit -m 'fail' -d '4 0' |
|
62 hg -q tip |
|
63 |
|
64 # prechangegroup hook can prevent incoming changes |
|
65 cd ../b |
|
66 hg -q tip |
|
67 echo '[hooks]' > .hg/hgrc |
|
68 echo 'prechangegroup.forbid = echo prechangegroup.forbid hook; exit 1' >> .hg/hgrc |
|
69 hg pull ../a |
|
70 |
|
71 # pretxnchangegroup hook can see incoming changes, can roll back txn, |
|
72 # incoming changes no longer there after |
|
73 echo '[hooks]' > .hg/hgrc |
|
74 echo 'pretxnchangegroup.forbid = echo pretxnchangegroup.forbid hook: tip=`hg -q tip`; exit 1' >> .hg/hgrc |
|
75 hg pull ../a |
|
76 hg -q tip |