[PATCH] hooks: add HG_NODE_LAST to txnclose and changegroup hook environments

Augie Fackler raf at durin42.com
Tue Jan 12 09:17:00 CST 2016


On Tue, Jan 05, 2016 at 05:45:51PM -0800, Mateusz Kwapich wrote:
> # HG changeset patch
> # User Mateusz Kwapich <mitrandir at fb.com>
> # Date 1452044279 28800
> #      Tue Jan 05 17:37:59 2016 -0800
> # Node ID 9bb94cc646059365c643ea355a6231213faeb28d
> # Parent  21b363bd87dc36b9c7ed9d103c34a2ed75fa69d5
> hooks: add HG_NODE_LAST to txnclose and changegroup hook environments

Queued with some copyediting for clarity on the log message. Thanks!

>
> Sometimes a txnclose or changegroup hook wants to iterate through all the
> changesets in transaction: in that situation usually the $HG_NODE: revset is
> used to select the revisions. Unfortunately this revset sometimes may contain
> to many changestet because we don't have the write lock in that time and the
> newer changes may be added to repository in the meantime.
>
> That's why there is a need for extra variable carrying the information about
> the last change in the transaction.
>
> diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
> --- a/mercurial/changegroup.py
> +++ b/mercurial/changegroup.py
> @@ -413,10 +413,12 @@ class cg1unpacker(object):
>              if changesets > 0:
>                  if 'node' not in tr.hookargs:
>                      tr.hookargs['node'] = hex(cl.node(clstart))
> +                    tr.hookargs['node_last'] = hex(cl.node(clend - 1))
>                      hookargs = dict(tr.hookargs)
>                  else:
>                      hookargs = dict(tr.hookargs)
>                      hookargs['node'] = hex(cl.node(clstart))
> +                    hookargs['node_last'] = hex(cl.node(clend - 1))
>                  repo.hook('pretxnchangegroup', throw=True, **hookargs)
>
>              added = [cl.node(r) for r in xrange(clstart, clend)]
> @@ -463,6 +465,7 @@ class cg1unpacker(object):
>                      for n in added:
>                          args = hookargs.copy()
>                          args['node'] = hex(n)
> +                        del args['node_last']
>                          repo.hook("incoming", **args)
>
>                      newheads = [h for h in repo.heads() if h not in oldheads]
> diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
> --- a/mercurial/help/config.txt
> +++ b/mercurial/help/config.txt
> @@ -762,9 +762,9 @@ additional information. For each hook be
>  variables it is passed are listed with names of the form ``$HG_foo``.
>
>  ``changegroup``
> -  Run after a changegroup has been added via push, pull or unbundle.
> -  ID of the first new changeset is in ``$HG_NODE``. URL from which
> -  changes came is in ``$HG_URL``.
> +  Run after a changegroup has been added via push, pull or unbundle.  ID of the
> +  first new changeset is in ``$HG_NODE`` and last in ``$HG_NODE_LAST``. URL
> +  from which changes came is in ``$HG_URL``.
>
>  ``commit``
>    Run after a changeset has been created in the local repository. ID
> @@ -846,17 +846,16 @@ variables it is passed are listed with n
>    transaction from being opened.
>
>  ``pretxnclose``
> -  Run right before the transaction is actually finalized. Any
> -  repository change will be visible to the hook program. This lets you
> -  validate the transaction content or change it. Exit status 0 allows
> -  the commit to proceed. Non-zero status will cause the transaction to
> -  be rolled back. The reason for the transaction opening will be in
> -  ``$HG_TXNNAME`` and a unique identifier for the transaction will be in
> -  ``HG_TXNID``. The rest of the available data will vary according the
> -  transaction type. New changesets will add ``$HG_NODE`` (id of the
> -  first added changeset), ``$HG_URL`` and ``$HG_SOURCE`` variables,
> -  bookmarks and phases changes will set ``HG_BOOKMARK_MOVED`` and
> -  ``HG_PHASES_MOVED`` to ``1``, etc.
> +  Run right before the transaction is actually finalized. Any repository change
> +  will be visible to the hook program. This lets you validate the transaction
> +  content or change it. Exit status 0 allows the commit to proceed. Non-zero
> +  status will cause the transaction to be rolled back. The reason for the
> +  transaction opening will be in ``$HG_TXNNAME`` and a unique identifier for
> +  the transaction will be in ``HG_TXNID``. The rest of the available data will
> +  vary according the transaction type. New changesets will add ``$HG_NODE`` (id
> +  of the first added changeset), ``$HG_NODE_LAST`` (id of the last added
> +  changeset), ``$HG_URL`` and ``$HG_SOURCE`` variables, bookmarks and phases
> +  changes will set ``HG_BOOKMARK_MOVED`` and ``HG_PHASES_MOVED`` to ``1``, etc.
>
>  ``txnclose``
>    Run after any repository transaction has been committed. At this
> @@ -869,14 +868,13 @@ variables it is passed are listed with n
>    docs for details about available variables.
>
>  ``pretxnchangegroup``
> -  Run after a changegroup has been added via push, pull or unbundle,
> -  but before the transaction has been committed. Changegroup is
> -  visible to hook program. This lets you validate incoming changes
> -  before accepting them. Passed the ID of the first new changeset in
> -  ``$HG_NODE``. Exit status 0 allows the transaction to commit. Non-zero
> -  status will cause the transaction to be rolled back and the push,
> -  pull or unbundle will fail. URL that was source of changes is in
> -  ``$HG_URL``.
> +  Run after a changegroup has been added via push, pull or unbundle, but before
> +  the transaction has been committed. Changegroup is visible to hook program.
> +  This lets you validate incoming changes before accepting them. Passed the ID
> +  of the first new changeset in ``$HG_NODE`` and last in ``$HG_NODE_LAST``.
> +  Exit status 0 allows the transaction to commit. Non-zero status will cause
> +  the transaction to be rolled back and the push, pull or unbundle will fail.
> +  URL that was source of changes is in ``$HG_URL``.
>
>  ``pretxncommit``
>    Run after a changeset has been created but the transaction not yet
> diff --git a/tests/test-bundle.t b/tests/test-bundle.t
> --- a/tests/test-bundle.t
> +++ b/tests/test-bundle.t
> @@ -230,7 +230,7 @@ hg -R bundle://../full.hg verify
>    adding manifests
>    adding file changes
>    added 9 changesets with 7 changes to 4 files (+1 heads)
> -  changegroup hook: HG_NODE=f9ee2f85a263049e9ae6d37a0e67e96194ffb735 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=bundle:../full.hg (glob)
> +  changegroup hook: HG_NODE=f9ee2f85a263049e9ae6d37a0e67e96194ffb735 HG_NODE_LAST=aa35859c02ea8bd48da5da68cd2740ac71afcbaf HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=bundle:../full.hg (glob)
>    (run 'hg heads' to see heads, 'hg merge' to merge)
>
>  Rollback empty
> @@ -253,7 +253,7 @@ Pull full.hg into empty again (using -R;
>    adding manifests
>    adding file changes
>    added 9 changesets with 7 changes to 4 files (+1 heads)
> -  changegroup hook: HG_NODE=f9ee2f85a263049e9ae6d37a0e67e96194ffb735 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=bundle:empty+full.hg (glob)
> +  changegroup hook: HG_NODE=f9ee2f85a263049e9ae6d37a0e67e96194ffb735 HG_NODE_LAST=aa35859c02ea8bd48da5da68cd2740ac71afcbaf HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=bundle:empty+full.hg (glob)
>    (run 'hg heads' to see heads, 'hg merge' to merge)
>
>  Cannot produce streaming clone bundles with "hg bundle"
> diff --git a/tests/test-bundle2-exchange.t b/tests/test-bundle2-exchange.t
> --- a/tests/test-bundle2-exchange.t
> +++ b/tests/test-bundle2-exchange.t
> @@ -51,7 +51,7 @@ The extension requires a repo (currently
>    added 8 changesets with 7 changes to 7 files (+3 heads)
>    pre-close-tip:02de42196ebe draft
>    postclose-tip:02de42196ebe draft
> -  txnclose hook: HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:* HG_TXNNAME=unbundle (glob)
> +  txnclose hook: HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:* HG_TXNNAME=unbundle (glob)
>    bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
>    (run 'hg heads' to see heads, 'hg merge' to merge)
>
> @@ -85,7 +85,7 @@ clone --pull
>    1 new obsolescence markers
>    pre-close-tip:9520eea781bc draft
>    postclose-tip:9520eea781bc draft
> -  txnclose hook: HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
> +  txnclose hook: HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
>    file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
>    updating to branch default
>    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
> @@ -113,7 +113,7 @@ pull
>    1 new obsolescence markers
>    pre-close-tip:24b6387c8c8c draft
>    postclose-tip:24b6387c8c8c draft
> -  txnclose hook: HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
> +  txnclose hook: HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
>    file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
>    (run 'hg heads' to see heads, 'hg merge' to merge)
>    $ hg -R other log -G
> @@ -257,7 +257,7 @@ push
>    remote: lock:  free
>    remote: wlock: free
>    remote: postclose-tip:eea13746799a public book_eea1
> -  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=push (glob)
> +  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_NODE_LAST=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=push (glob)
>    updating bookmark book_eea1
>    pre-close-tip:02de42196ebe draft book_02de
>    postclose-tip:02de42196ebe draft book_02de
> @@ -290,7 +290,7 @@ pull over ssh
>    updating bookmark book_02de
>    pre-close-tip:02de42196ebe draft book_02de
>    postclose-tip:02de42196ebe draft book_02de
> -  txnclose hook: HG_BOOKMARK_MOVED=1 HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
> +  txnclose hook: HG_BOOKMARK_MOVED=1 HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
>    ssh://user@dummy/main HG_URL=ssh://user@dummy/main
>    (run 'hg heads' to see heads, 'hg merge' to merge)
>    $ hg -R other debugobsolete
> @@ -315,7 +315,7 @@ pull over http
>    updating bookmark book_42cc
>    pre-close-tip:42ccdea3bb16 draft book_42cc
>    postclose-tip:42ccdea3bb16 draft book_42cc
> -  txnclose hook: HG_BOOKMARK_MOVED=1 HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
> +  txnclose hook: HG_BOOKMARK_MOVED=1 HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
>    http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
>    (run 'hg heads .' to see heads, 'hg merge' to merge)
>    $ cat main-error.log
> @@ -341,7 +341,7 @@ push over ssh
>    remote: lock:  free
>    remote: wlock: free
>    remote: postclose-tip:5fddd98957c8 draft book_5fdd
> -  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:ssh:127.0.0.1 (glob)
> +  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_NODE_LAST=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:ssh:127.0.0.1 (glob)
>    updating bookmark book_5fdd
>    pre-close-tip:02de42196ebe draft book_02de
>    postclose-tip:02de42196ebe draft book_02de
> @@ -395,7 +395,7 @@ push over http
>    remote: lock:  free
>    remote: wlock: free
>    remote: postclose-tip:32af7686d403 public book_32af
> -  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_NODE_LAST=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:http:127.0.0.1: (glob)
>    updating bookmark book_32af
>    pre-close-tip:02de42196ebe draft book_02de
>    postclose-tip:02de42196ebe draft book_02de
> diff --git a/tests/test-bundle2-multiple-changegroups.t b/tests/test-bundle2-multiple-changegroups.t
> --- a/tests/test-bundle2-multiple-changegroups.t
> +++ b/tests/test-bundle2-multiple-changegroups.t
> @@ -82,16 +82,16 @@ Pull the new commits in the clone
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  pretxnchangegroup hook: HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_NODE_LAST=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    remote: changegroup2
>    adding changesets
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  pretxnchangegroup hook: HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_NODE_LAST=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_NODE_LAST=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_NODE_LAST=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    pullop.cgresult is 1
>    (run 'hg update' to get a working copy)
> @@ -152,17 +152,17 @@ pullop.cgresult
>    adding manifests
>    adding file changes
>    added 2 changesets with 2 changes to 2 files (+1 heads)
> -  pretxnchangegroup hook: HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e HG_NODE_LAST=8a5212ebc8527f9fb821601504794e3eb11a1ed3 HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    remote: changegroup2
>    adding changesets
>    adding manifests
>    adding file changes
>    added 3 changesets with 3 changes to 3 files (+1 heads)
> -  pretxnchangegroup hook: HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46 HG_NODE_LAST=5cd59d311f6508b8e0ed28a266756c859419c9f1 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e HG_NODE_LAST=8a5212ebc8527f9fb821601504794e3eb11a1ed3 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=8a5212ebc8527f9fb821601504794e3eb11a1ed3 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46 HG_NODE_LAST=5cd59d311f6508b8e0ed28a266756c859419c9f1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=1d14c3ce6ac0582d2809220d33e8cd7a696e0156 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=5cd59d311f6508b8e0ed28a266756c859419c9f1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> @@ -225,16 +225,16 @@ pullop.cgresult
>    adding manifests
>    adding file changes
>    added 1 changesets with 0 changes to 0 files (-1 heads)
> -  pretxnchangegroup hook: HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_NODE_LAST=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_PENDING=$TESTTMP/clone HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    remote: changegroup2
>    adding changesets
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  pretxnchangegroup hook: HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  pretxnchangegroup hook: HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_NODE_LAST=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_PENDING=$TESTTMP/clone HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_NODE_LAST=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> -  changegroup hook: HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
> +  changegroup hook: HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_NODE_LAST=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    incoming hook: HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/repo (glob)
>    pullop.cgresult is -2
>    (run 'hg update' to get a working copy)
> diff --git a/tests/test-hook.t b/tests/test-hook.t
> --- a/tests/test-hook.t
> +++ b/tests/test-hook.t
> @@ -118,7 +118,7 @@ test generic hooks
>    adding manifests
>    adding file changes
>    added 3 changesets with 2 changes to 2 files
> -  changegroup hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
> +  changegroup hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_NODE_LAST=07f3376c1e655977439df2a814e3cc14b27abac2 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
>    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)
> @@ -326,7 +326,7 @@ incoming changes no longer there after
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
>    4:539e4b31b6dc
> -  pretxnchangegroup.forbid hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/b HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=file:$TESTTMP/a (glob)
> +  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)
>    transaction abort!
>    rollback completed
>    abort: pretxnchangegroup.forbid1 hook exited with status 1
> diff --git a/tests/test-http-bundle1.t b/tests/test-http-bundle1.t
> --- a/tests/test-http-bundle1.t
> +++ b/tests/test-http-bundle1.t
> @@ -136,7 +136,7 @@ pull
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT1/ (glob)
> +  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_NODE_LAST=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT1/ (glob)
>    (run 'hg update' to get a working copy)
>    $ cd ..
>
> diff --git a/tests/test-http.t b/tests/test-http.t
> --- a/tests/test-http.t
> +++ b/tests/test-http.t
> @@ -127,7 +127,7 @@ pull
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT1/ (glob)
> +  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_NODE_LAST=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT1/ (glob)
>    (run 'hg update' to get a working copy)
>    $ cd ..
>
> diff --git a/tests/test-https.t b/tests/test-https.t
> --- a/tests/test-https.t
> +++ b/tests/test-https.t
> @@ -210,7 +210,7 @@ pull without cacert
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=https://localhost:$HGPORT/ (glob)
> +  changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_NODE_LAST=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=https://localhost:$HGPORT/ (glob)
>    (run 'hg update' to get a working copy)
>    $ cd ..
>
> diff --git a/tests/test-push-http-bundle1.t b/tests/test-push-http-bundle1.t
> --- a/tests/test-push-http-bundle1.t
> +++ b/tests/test-push-http-bundle1.t
> @@ -77,7 +77,7 @@ expect success
>    remote: adding manifests
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
> -  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -93,7 +93,7 @@ expect success, server lacks the httphea
>    remote: adding manifests
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
> -  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -109,7 +109,7 @@ expect success, server lacks the unbundl
>    remote: adding manifests
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
> -  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> diff --git a/tests/test-push-http.t b/tests/test-push-http.t
> --- a/tests/test-push-http.t
> +++ b/tests/test-push-http.t
> @@ -68,7 +68,7 @@ expect success
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
> -  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -85,7 +85,7 @@ expect success, server lacks the httphea
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
> -  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -102,7 +102,7 @@ expect success, server lacks the unbundl
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
> -  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: changegroup hook: HG_BUNDLE2=1 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -123,7 +123,7 @@ expect push success, phase change failur
>    remote: adding manifests
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
> -  remote: prepushkey hook: HG_BUNDLE2=1 HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_OLD=1 HG_PENDING=$TESTTMP/test HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: prepushkey hook: HG_BUNDLE2=1 HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_OLD=1 HG_PENDING=$TESTTMP/test HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    remote: pushkey-abort: prepushkey hook exited with status 1
>    remote: transaction abort!
>    remote: rollback completed
> @@ -141,7 +141,7 @@ expect phase change success
>    remote: adding manifests
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
> -  remote: prepushkey hook: HG_BUNDLE2=1 HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_OLD=1 HG_PENDING=$TESTTMP/test HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
> +  remote: prepushkey hook: HG_BUNDLE2=1 HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NODE_LAST=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_OLD=1 HG_PENDING=$TESTTMP/test HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:http:127.0.0.1: (glob)
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> diff --git a/tests/test-ssh-bundle1.t b/tests/test-ssh-bundle1.t
> --- a/tests/test-ssh-bundle1.t
> +++ b/tests/test-ssh-bundle1.t
> @@ -492,7 +492,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R local serve --stdio
>    Got arguments 1:user at dummy 2:hg -R $TESTTMP/local serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_NODE_LAST=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> @@ -502,7 +502,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_NODE_LAST=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg init 'a repo'
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
> @@ -510,7 +510,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_NODE_LAST=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>
>  remote hook failure is attributed to remote
> diff --git a/tests/test-ssh.t b/tests/test-ssh.t
> --- a/tests/test-ssh.t
> +++ b/tests/test-ssh.t
> @@ -487,7 +487,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R local serve --stdio
>    Got arguments 1:user at dummy 2:hg -R $TESTTMP/local serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_NODE_LAST=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> @@ -497,7 +497,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_NODE_LAST=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>    Got arguments 1:user at dummy 2:hg init 'a repo'
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
> @@ -505,7 +505,7 @@ debug output
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
>    Got arguments 1:user at dummy 2:hg -R 'a repo' serve --stdio
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
> -  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
> +  changegroup-in-remote hook: HG_BUNDLE2=1 HG_NODE=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_NODE_LAST=65c38f4125f9602c8db4af56530cc221d93b8ef8 HG_SOURCE=serve HG_TXNID=TXN:* HG_URL=remote:ssh:127.0.0.1 (glob)
>    Got arguments 1:user at dummy 2:hg -R remote serve --stdio
>
>  remote hook failure is attributed to remote
> diff --git a/tests/test-static-http.t b/tests/test-static-http.t
> --- a/tests/test-static-http.t
> +++ b/tests/test-static-http.t
> @@ -68,7 +68,7 @@ check for HTTP opener failures when cach
>    adding manifests
>    adding file changes
>    added 1 changesets with 1 changes to 1 files
> -  changegroup hook: HG_NODE=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT/remote (glob)
> +  changegroup hook: HG_NODE=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_NODE_LAST=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT/remote (glob)
>    (run 'hg update' to get a working copy)
>
>  trying to push
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list