[PATCH stable] wireproto: fix pushkey hook execution on remote http repo

Matt Mackall mpm at selenic.com
Tue Oct 16 12:39:11 CDT 2012


On Mon, 2012-10-15 at 19:03 -0300, Wagner Bruna wrote:
> # HG changeset patch
> # User Wagner Bruna <wbruna at softwareexpress.com.br>
> # Date 1350337054 10800
> # Branch stable
> # Node ID e1d4f93d5a96d1b63522e38738666b8bc61a08d8
> # Parent  6647ac9b9044023b4947e890b07d6dfef30ea9b3
> wireproto: fix pushkey hook execution on remote http repo

Huh?

> diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py
> --- a/mercurial/wireproto.py
> +++ b/mercurial/wireproto.py
> @@ -503,6 +503,20 @@ def pushkey(repo, proto, namespace, key,
>      else:
>          new = encoding.tolocal(new) # normal path
>  
> +    if util.safehasattr(proto, 'restore'):
> +
> +        proto.redirect()
> +
> +        try:
> +            r = repo.pushkey(encoding.tolocal(namespace), encoding.tolocal(key),
> +                             encoding.tolocal(old), new) or False
> +        except util.Abort:
> +            r = False
> +
> +        output = proto.restore()
> +
> +        return '%s\n%s' % (int(r), output)
> +
>      r = repo.pushkey(encoding.tolocal(namespace), encoding.tolocal(key),
>                       encoding.tolocal(old), new)
>      return '%s\n' % int(r)
> 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
> @@ -56,6 +56,7 @@ expect success
>    $ echo 'allow_push = *' >> .hg/hgrc
>    $ echo '[hooks]' >> .hg/hgrc
>    $ echo "changegroup = python \"$TESTDIR/printenv.py\" changegroup 0" >> .hg/hgrc
> +  $ echo "pushkey = python \"$TESTDIR/printenv.py\" pushkey 0" >> .hg/hgrc
>    $ req
>    pushing to http://localhost:$HGPORT/
>    searching for changes
> @@ -64,6 +65,7 @@ expect success
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
> +  remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -80,6 +82,7 @@ expect success, server lacks the httphea
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
> +  remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> @@ -96,6 +99,37 @@ expect success, server lacks the unbundl
>    remote: adding file changes
>    remote: added 1 changesets with 1 changes to 1 files
>    remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
> +  remote: pushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1
> +  % serve errors
> +  $ hg rollback
> +  repository tip rolled back to revision 0 (undo serve)
> +
> +expect push success, phase change failure
> +
> +  $ echo '[web]' > .hg/hgrc
> +  $ echo 'push_ssl = false' >> .hg/hgrc
> +  $ echo 'allow_push = *' >> .hg/hgrc
> +  $ echo '[hooks]' >> .hg/hgrc
> +  $ echo 'prepushkey = python "$TESTDIR/printenv.py" prepushkey 1' >> .hg/hgrc
> +  $ req
> +  pushing to http://localhost:$HGPORT/
> +  searching for changes
> +  remote: adding changesets
> +  remote: adding manifests
> +  remote: adding file changes
> +  remote: added 1 changesets with 1 changes to 1 files
> +  remote: prepushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1
> +  updating ba677d0156c1 to public failed!
> +  % serve errors
> +
> +expect phase change success
> +
> +  $ echo 'prepushkey = python "$TESTDIR/printenv.py" prepushkey 0' >> .hg/hgrc
> +  $ req
> +  pushing to http://localhost:$HGPORT/
> +  searching for changes
> +  no changes found
> +  remote: prepushkey hook: HG_KEY=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1
>    % serve errors
>    $ hg rollback
>    repository tip rolled back to revision 0 (undo serve)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list