tests/test-hook
changeset 1734 9488d53233b5
parent 1481 acd1832ebf31
child 1736 50de0887bbcd
equal deleted inserted replaced
1733:6d288d8c3ca6 1734:9488d53233b5
     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