Patchwork [4,of,4] localrepo: add unbundle support

login
register
mail settings
Submitter Pierre-Yves David
Date April 10, 2014, 5:13 p.m.
Message ID <a90a6df5fd2ddace645e.1397149997@marginatus.alto.octopoid.net>
Download mbox | patch
Permalink /patch/4282/
State Accepted
Commit 7a679918ee2b8fcb7e15179b7f072c8ef69315b4
Headers show

Comments

Pierre-Yves David - April 10, 2014, 5:13 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@fb.com>
# Date 1396659044 25200
#      Fri Apr 04 17:50:44 2014 -0700
# Node ID a90a6df5fd2ddace645e11bd7f27bc34d9564a20
# Parent  28d1d63edc24d908d974f29605a6af44613c800b
localrepo: add unbundle support

Localrepo now support the unbundle method of pushing changegroup. We plan to use
the unbundle call for bundle2 so it is important that all peers supports it. The
`peer.unbundle` and `peer.addchangegroup` code path have small difference. So
some test output changes. None of those changes seems problematic.
Augie Fackler - April 12, 2014, 4:30 p.m.
On Thu, Apr 10, 2014 at 10:13:17AM -0700, pierre-yves.david@ens-lyon.org wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@fb.com>
> # Date 1396659044 25200
> #      Fri Apr 04 17:50:44 2014 -0700
> # Node ID a90a6df5fd2ddace645e11bd7f27bc34d9564a20
> # Parent  28d1d63edc24d908d974f29605a6af44613c800b
> localrepo: add unbundle support

This series also appears to have been ninja queued.

>
> Localrepo now support the unbundle method of pushing changegroup. We plan to use
> the unbundle call for bundle2 so it is important that all peers supports it. The
> `peer.unbundle` and `peer.addchangegroup` code path have small difference. So
> some test output changes. None of those changes seems problematic.
>
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -61,11 +61,11 @@ def unfilteredmethod(orig):
>      def wrapper(repo, *args, **kwargs):
>          return orig(repo.unfiltered(), *args, **kwargs)
>      return wrapper
>
>  moderncaps = set(('lookup', 'branchmap', 'pushkey', 'known', 'getbundle',
> -                  'bundle2'))
> +                  'bundle2', 'unbundle'))
>  legacycaps = moderncaps.union(set(['changegroupsubset']))
>
>  class localpeer(peer.peerrepository):
>      '''peer for a local repo; reflects only the most recent API'''
>
> @@ -110,10 +110,20 @@ class localpeer(peer.peerrepository):
>                                    common=common, bundlecaps=bundlecaps)
>
>      # TODO We might want to move the next two calls into legacypeer and add
>      # unbundle instead.
>
> +    def unbundle(self, cg, heads, url):
> +        """apply a bundle on a repo
> +
> +        This function handle the repo locking itself."""
> +        try:
> +            return exchange.unbundle(self._repo, cg, heads, 'push', url)
> +        except exchange.PushRaced, exc:
> +            raise error.ResponseError(_('push failed:'), exc.message)
> +
> +
>      def lock(self):
>          return self._repo.lock()
>
>      def addchangegroup(self, cg, source, url):
>          return changegroup.addchangegroup(self._repo, cg, source, url)
> diff --git a/tests/test-acl.t b/tests/test-acl.t
> --- a/tests/test-acl.t
> +++ b/tests/test-acl.t
> @@ -114,13 +114,13 @@ Extension disabled for lack of a hook
>    adding foo/file.txt revisions
>    files: 2/3 chunks (66.67%)
>    adding quux/file.py revisions
>    files: 3/3 chunks (100.00%)
>    added 3 changesets with 3 changes to 3 files
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -175,13 +175,13 @@ Extension disabled for lack of acl.sourc
>    adding quux/file.py revisions
>    files: 3/3 chunks (100.00%)
>    added 3 changesets with 3 changes to 3 files
>    calling hook pretxnchangegroup.acl: hgext.acl.hook
>    acl: changes have source "push" - skipping
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -247,13 +247,13 @@ No [acl.allow]/[acl.deny]
>    acl: path access granted: "ef1ea85a6374"
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -318,10 +318,14 @@ Empty [acl.allow]
>    acl: branch access granted: "ef1ea85a6374" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  fred is allowed inside foo/
> @@ -389,10 +393,14 @@ fred is allowed inside foo/
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  Empty [acl.deny]
> @@ -457,10 +465,14 @@ Empty [acl.deny]
>    acl: branch access granted: "ef1ea85a6374" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  fred is allowed inside foo/, but not foo/bar/ (case matters)
> @@ -530,10 +542,14 @@ fred is allowed inside foo/, but not foo
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  fred is allowed inside foo/, but not foo/Bar/
> @@ -602,10 +618,14 @@ fred is allowed inside foo/, but not foo
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>    $ echo 'barney is not mentioned => not allowed anywhere'
> @@ -671,10 +691,14 @@ fred is allowed inside foo/, but not foo
>    acl: branch access granted: "ef1ea85a6374" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  barney is allowed everywhere
> @@ -745,13 +769,13 @@ barney is allowed everywhere
>    acl: path access granted: "ef1ea85a6374"
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -827,10 +851,14 @@ wilma can change files with a .txt exten
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
>    transaction abort!
>    rollback completed
>    abort: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  file specified by acl.config does not exist
> @@ -982,10 +1010,14 @@ betty is allowed inside foo/ by a acl.co
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
>    transaction abort!
>    rollback completed
>    abort: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  acl.config can set only [acl.allow]/[acl.deny]
> @@ -1065,13 +1097,13 @@ acl.config can set only [acl.allow]/[acl
>    acl: path access granted: "ef1ea85a6374"
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -1145,13 +1177,13 @@ fred is always allowed
>    acl: path access granted: "ef1ea85a6374"
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -1222,10 +1254,14 @@ no one is allowed inside foo/Bar/
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  Groups
> @@ -1298,13 +1334,13 @@ OS-level groups
>    acl: path access granted: "ef1ea85a6374"
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 0 (undo push)
>    0:6675d58eff77
>
> @@ -1377,10 +1413,14 @@ OS-level groups
>    acl: branch access granted: "f9cafe1212c8" on branch "default"
>    error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
>    transaction abort!
>    rollback completed
>    abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    0:6675d58eff77
>
>
>  Invalid group
> @@ -1499,13 +1539,13 @@ No branch acls specified
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
>    acl: branch access granted: "e8fc755d4d82" on branch "foobar"
>    acl: path access granted: "e8fc755d4d82"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 2 (undo push)
>    2:fb35475503ef
>
> @@ -1584,10 +1624,15 @@ Branch acl deny test
>    acl: path access granted: "911600dab2ae"
>    error: pretxnchangegroup.acl hook failed: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
>    transaction abort!
>    rollback completed
>    abort: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
> +  listing keys for "phases"
> +  pushing key for "phases:fb35475503efed933514ec92cd0c9f341c73bffa"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    2:fb35475503ef
>
>
>  Branch acl empty allow test
> @@ -1657,10 +1702,14 @@ Branch acl empty allow test
>    acl: acl.deny not enabled
>    error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    2:fb35475503ef
>
>
>  Branch acl allow other
> @@ -1732,10 +1781,14 @@ Branch acl allow other
>    acl: acl.deny not enabled
>    error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    2:fb35475503ef
>
>    $ do_push george
>    Pushing as user george
> @@ -1805,13 +1858,13 @@ Branch acl allow other
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
>    acl: branch access granted: "e8fc755d4d82" on branch "foobar"
>    acl: path access granted: "e8fc755d4d82"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 2 (undo push)
>    2:fb35475503ef
>
> @@ -1836,10 +1889,11 @@ push foobar into the remote
>    """
>    pushing to ../b
>    query 1; heads
>    searching for changes
>    all remote heads known locally
> +  invalid branchheads cache (served): tip differs
>    listing keys for "bookmarks"
>    4 changesets found
>    list of changesets:
>    ef1ea85a6374b77d6da9dcda9541f498f2d17df7
>    f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
> @@ -1893,13 +1947,13 @@ push foobar into the remote
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
>    acl: branch access granted: "e8fc755d4d82" on branch "foobar"
>    acl: path access granted: "e8fc755d4d82"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 2 (undo push)
>    2:fb35475503ef
>
> @@ -1923,10 +1977,11 @@ Branch acl conflicting deny
>    """
>    pushing to ../b
>    query 1; heads
>    searching for changes
>    all remote heads known locally
> +  invalid branchheads cache (served): tip differs
>    listing keys for "bookmarks"
>    4 changesets found
>    list of changesets:
>    ef1ea85a6374b77d6da9dcda9541f498f2d17df7
>    f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
> @@ -1976,10 +2031,14 @@ Branch acl conflicting deny
>    acl: acl.deny not enabled
>    error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    2:fb35475503ef
>
>  User 'astro' must not be denied
>
> @@ -1997,10 +2056,11 @@ User 'astro' must not be denied
>    """
>    pushing to ../b
>    query 1; heads
>    searching for changes
>    all remote heads known locally
> +  invalid branchheads cache (served): tip differs
>    listing keys for "bookmarks"
>    4 changesets found
>    list of changesets:
>    ef1ea85a6374b77d6da9dcda9541f498f2d17df7
>    f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
> @@ -2054,13 +2114,13 @@ User 'astro' must not be denied
>    acl: path access granted: "f9cafe1212c8"
>    acl: branch access granted: "911600dab2ae" on branch "default"
>    acl: path access granted: "911600dab2ae"
>    acl: branch access granted: "e8fc755d4d82" on branch "foobar"
>    acl: path access granted: "e8fc755d4d82"
> +  updating the branch cache
>    listing keys for "phases"
>    try to push obsolete markers to remote
> -  updating the branch cache
>    checking for updated bookmarks
>    listing keys for "bookmarks"
>    repository tip rolled back to revision 2 (undo push)
>    2:fb35475503ef
>
> @@ -2078,10 +2138,11 @@ Non-astro users must be denied
>    """
>    pushing to ../b
>    query 1; heads
>    searching for changes
>    all remote heads known locally
> +  invalid branchheads cache (served): tip differs
>    listing keys for "bookmarks"
>    4 changesets found
>    list of changesets:
>    ef1ea85a6374b77d6da9dcda9541f498f2d17df7
>    f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
> @@ -2131,9 +2192,13 @@ Non-astro users must be denied
>    acl: acl.deny not enabled
>    error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
>    transaction abort!
>    rollback completed
>    abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
> +  listing keys for "phases"
> +  try to push obsolete markers to remote
> +  checking for updated bookmarks
> +  listing keys for "bookmarks"
>    no rollback information available
>    2:fb35475503ef
>
>
> diff --git a/tests/test-eol-hook.t b/tests/test-eol-hook.t
> --- a/tests/test-eol-hook.t
> +++ b/tests/test-eol-hook.t
> @@ -44,11 +44,11 @@ Create repo
>      a.txt in a8ee6548cd86 should not have CRLF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      a.txt in a8ee6548cd86 should not have CRLF line endings
> -  [255]
> +  [1]
>
>    $ printf "first\nsecond\nthird\n" > a.txt
>    $ hg commit -m 'LF a.txt (fixed)'
>    $ hg push ../main
>    pushing to ../main
> @@ -72,11 +72,11 @@ Create repo
>      crlf.txt in 004ba2132725 should not have LF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      crlf.txt in 004ba2132725 should not have LF line endings
> -  [255]
> +  [1]
>
>    $ printf "first\r\nsecond\r\nthird\r\n" > crlf.txt
>    $ hg commit -m 'CRLF crlf.txt (fixed)'
>    $ hg push ../main
>    pushing to ../main
> @@ -100,11 +100,11 @@ Create repo
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
> -  [255]
> +  [1]
>
>    $ hg up -r -2
>    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>    $ printf "some\nother\nfile" > c.txt
>    $ hg add c.txt
> @@ -121,11 +121,11 @@ Create repo
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
> -  [255]
> +  [1]
>
>  Test checkheadshook alias
>
>    $ cat > ../main/.hg/hgrc <<EOF
>    > [hooks]
> @@ -142,11 +142,11 @@ Test checkheadshook alias
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
> -  [255]
> +  [1]
>
>  We can fix the head and push again
>
>    $ hg up 6
>    1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> @@ -179,11 +179,11 @@ Test it still fails with checkallhook
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
> -  [255]
> +  [1]
>
>  But we can push the clean head
>
>    $ hg push -r7 -f ../main
>    pushing to ../main
> @@ -211,8 +211,8 @@ Test multiple files/revisions output
>    transaction abort!
>    rollback completed
>    abort: end-of-line check failed:
>      d.txt in a7040e68714f should not have CRLF line endings
>      b.txt in fbcf9b1025f5 should not have CRLF line endings
> -  [255]
> +  [1]
>
>    $ cd ..
> diff --git a/tests/test-lock-badness.t b/tests/test-lock-badness.t
> --- a/tests/test-lock-badness.t
> +++ b/tests/test-lock-badness.t
> @@ -32,10 +32,11 @@ Pushing to a local read-only repo that c
>
>    $ chmod 100 a/.hg/store
>
>    $ hg -R b push a
>    pushing to a
> +  searching for changes
>    abort: could not lock repository a: Permission denied
>    [255]
>
>    $ chmod 700 a/.hg/store
>  #endif
> diff --git a/tests/test-push-validation.t b/tests/test-push-validation.t
> --- a/tests/test-push-validation.t
> +++ b/tests/test-push-validation.t
> @@ -50,11 +50,11 @@ Expected to fail:
>    adding manifests
>    adding file changes
>    transaction abort!
>    rollback completed
>    abort: received spurious file revlog entry
> -  [255]
> +  [1]
>
>    $ hg -q rollback
>    $ mv tmp1 .hg/store/data/beta.i
>    $ echo beta > beta
>
> @@ -85,8 +85,8 @@ Expected to fail:
>    adding manifests
>    adding file changes
>    transaction abort!
>    rollback completed
>    abort: missing file data for beta:dddc47b3ba30e54484720ce0f4f768a0f4b6efb9 - run hg verify
> -  [255]
> +  [1]
>
>    $ cd ..
> diff --git a/tests/test-win32text.t b/tests/test-win32text.t
> --- a/tests/test-win32text.t
> +++ b/tests/test-win32text.t
> @@ -76,11 +76,11 @@ push should fail
>    [decode]
>    ** = cleverdecode:
>    transaction abort!
>    rollback completed
>    abort: pretxnchangegroup.crlf hook failed
> -  [255]
> +  [1]
>
>    $ mv .hg/hgrc.bak .hg/hgrc
>    $ echo hello > f
>    $ hg rm g
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
Matt Mackall - April 12, 2014, 8:58 p.m.
On Sat, 2014-04-12 at 12:30 -0400, Augie Fackler wrote:
> On Thu, Apr 10, 2014 at 10:13:17AM -0700, pierre-yves.david@ens-lyon.org wrote:
> > # HG changeset patch
> > # User Pierre-Yves David <pierre-yves.david@fb.com>
> > # Date 1396659044 25200
> > #      Fri Apr 04 17:50:44 2014 -0700
> > # Node ID a90a6df5fd2ddace645e11bd7f27bc34d9564a20
> > # Parent  28d1d63edc24d908d974f29605a6af44613c800b
> > localrepo: add unbundle support
> 
> This series also appears to have been ninja queued.

Yeah, I did this in an emergency room waiting area while slightly
delirious, sorry.

Patch

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -61,11 +61,11 @@  def unfilteredmethod(orig):
     def wrapper(repo, *args, **kwargs):
         return orig(repo.unfiltered(), *args, **kwargs)
     return wrapper
 
 moderncaps = set(('lookup', 'branchmap', 'pushkey', 'known', 'getbundle',
-                  'bundle2'))
+                  'bundle2', 'unbundle'))
 legacycaps = moderncaps.union(set(['changegroupsubset']))
 
 class localpeer(peer.peerrepository):
     '''peer for a local repo; reflects only the most recent API'''
 
@@ -110,10 +110,20 @@  class localpeer(peer.peerrepository):
                                   common=common, bundlecaps=bundlecaps)
 
     # TODO We might want to move the next two calls into legacypeer and add
     # unbundle instead.
 
+    def unbundle(self, cg, heads, url):
+        """apply a bundle on a repo
+
+        This function handle the repo locking itself."""
+        try:
+            return exchange.unbundle(self._repo, cg, heads, 'push', url)
+        except exchange.PushRaced, exc:
+            raise error.ResponseError(_('push failed:'), exc.message)
+
+
     def lock(self):
         return self._repo.lock()
 
     def addchangegroup(self, cg, source, url):
         return changegroup.addchangegroup(self._repo, cg, source, url)
diff --git a/tests/test-acl.t b/tests/test-acl.t
--- a/tests/test-acl.t
+++ b/tests/test-acl.t
@@ -114,13 +114,13 @@  Extension disabled for lack of a hook
   adding foo/file.txt revisions
   files: 2/3 chunks (66.67%)
   adding quux/file.py revisions
   files: 3/3 chunks (100.00%)
   added 3 changesets with 3 changes to 3 files
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -175,13 +175,13 @@  Extension disabled for lack of acl.sourc
   adding quux/file.py revisions
   files: 3/3 chunks (100.00%)
   added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: changes have source "push" - skipping
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -247,13 +247,13 @@  No [acl.allow]/[acl.deny]
   acl: path access granted: "ef1ea85a6374"
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -318,10 +318,14 @@  Empty [acl.allow]
   acl: branch access granted: "ef1ea85a6374" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "fred" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 fred is allowed inside foo/
@@ -389,10 +393,14 @@  fred is allowed inside foo/
   acl: branch access granted: "911600dab2ae" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
   transaction abort!
   rollback completed
   abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 Empty [acl.deny]
@@ -457,10 +465,14 @@  Empty [acl.deny]
   acl: branch access granted: "ef1ea85a6374" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 fred is allowed inside foo/, but not foo/bar/ (case matters)
@@ -530,10 +542,14 @@  fred is allowed inside foo/, but not foo
   acl: branch access granted: "911600dab2ae" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
   transaction abort!
   rollback completed
   abort: acl: user "fred" not allowed on "quux/file.py" (changeset "911600dab2ae")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 fred is allowed inside foo/, but not foo/Bar/
@@ -602,10 +618,14 @@  fred is allowed inside foo/, but not foo
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
   transaction abort!
   rollback completed
   abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
   $ echo 'barney is not mentioned => not allowed anywhere'
@@ -671,10 +691,14 @@  fred is allowed inside foo/, but not foo
   acl: branch access granted: "ef1ea85a6374" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "barney" not allowed on "foo/file.txt" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 barney is allowed everywhere
@@ -745,13 +769,13 @@  barney is allowed everywhere
   acl: path access granted: "ef1ea85a6374"
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -827,10 +851,14 @@  wilma can change files with a .txt exten
   acl: branch access granted: "911600dab2ae" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
   transaction abort!
   rollback completed
   abort: acl: user "wilma" not allowed on "quux/file.py" (changeset "911600dab2ae")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 file specified by acl.config does not exist
@@ -982,10 +1010,14 @@  betty is allowed inside foo/ by a acl.co
   acl: branch access granted: "911600dab2ae" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
   transaction abort!
   rollback completed
   abort: acl: user "betty" not allowed on "quux/file.py" (changeset "911600dab2ae")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 acl.config can set only [acl.allow]/[acl.deny]
@@ -1065,13 +1097,13 @@  acl.config can set only [acl.allow]/[acl
   acl: path access granted: "ef1ea85a6374"
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1145,13 +1177,13 @@  fred is always allowed
   acl: path access granted: "ef1ea85a6374"
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1222,10 +1254,14 @@  no one is allowed inside foo/Bar/
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
   transaction abort!
   rollback completed
   abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 Groups
@@ -1298,13 +1334,13 @@  OS-level groups
   acl: path access granted: "ef1ea85a6374"
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1377,10 +1413,14 @@  OS-level groups
   acl: branch access granted: "f9cafe1212c8" on branch "default"
   error: pretxnchangegroup.acl hook failed: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
   transaction abort!
   rollback completed
   abort: acl: user "fred" denied on "foo/Bar/file.txt" (changeset "f9cafe1212c8")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   0:6675d58eff77
   
 
 Invalid group
@@ -1499,13 +1539,13 @@  No branch acls specified
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1584,10 +1624,15 @@  Branch acl deny test
   acl: path access granted: "911600dab2ae"
   error: pretxnchangegroup.acl hook failed: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
   transaction abort!
   rollback completed
   abort: acl: user "astro" denied on branch "foobar" (changeset "e8fc755d4d82")
+  listing keys for "phases"
+  pushing key for "phases:fb35475503efed933514ec92cd0c9f341c73bffa"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   2:fb35475503ef
   
 
 Branch acl empty allow test
@@ -1657,10 +1702,14 @@  Branch acl empty allow test
   acl: acl.deny not enabled
   error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   2:fb35475503ef
   
 
 Branch acl allow other
@@ -1732,10 +1781,14 @@  Branch acl allow other
   acl: acl.deny not enabled
   error: pretxnchangegroup.acl hook failed: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "astro" not allowed on branch "default" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   2:fb35475503ef
   
   $ do_push george
   Pushing as user george
@@ -1805,13 +1858,13 @@  Branch acl allow other
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1836,10 +1889,11 @@  push foobar into the remote
   """
   pushing to ../b
   query 1; heads
   searching for changes
   all remote heads known locally
+  invalid branchheads cache (served): tip differs
   listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
   f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
@@ -1893,13 +1947,13 @@  push foobar into the remote
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1923,10 +1977,11 @@  Branch acl conflicting deny
   """
   pushing to ../b
   query 1; heads
   searching for changes
   all remote heads known locally
+  invalid branchheads cache (served): tip differs
   listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
   f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
@@ -1976,10 +2031,14 @@  Branch acl conflicting deny
   acl: acl.deny not enabled
   error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   2:fb35475503ef
   
 User 'astro' must not be denied
 
@@ -1997,10 +2056,11 @@  User 'astro' must not be denied
   """
   pushing to ../b
   query 1; heads
   searching for changes
   all remote heads known locally
+  invalid branchheads cache (served): tip differs
   listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
   f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
@@ -2054,13 +2114,13 @@  User 'astro' must not be denied
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  updating the branch cache
   listing keys for "phases"
   try to push obsolete markers to remote
-  updating the branch cache
   checking for updated bookmarks
   listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -2078,10 +2138,11 @@  Non-astro users must be denied
   """
   pushing to ../b
   query 1; heads
   searching for changes
   all remote heads known locally
+  invalid branchheads cache (served): tip differs
   listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
   f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
@@ -2131,9 +2192,13 @@  Non-astro users must be denied
   acl: acl.deny not enabled
   error: pretxnchangegroup.acl hook failed: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
   transaction abort!
   rollback completed
   abort: acl: user "george" denied on branch "default" (changeset "ef1ea85a6374")
+  listing keys for "phases"
+  try to push obsolete markers to remote
+  checking for updated bookmarks
+  listing keys for "bookmarks"
   no rollback information available
   2:fb35475503ef
   
 
diff --git a/tests/test-eol-hook.t b/tests/test-eol-hook.t
--- a/tests/test-eol-hook.t
+++ b/tests/test-eol-hook.t
@@ -44,11 +44,11 @@  Create repo
     a.txt in a8ee6548cd86 should not have CRLF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     a.txt in a8ee6548cd86 should not have CRLF line endings
-  [255]
+  [1]
 
   $ printf "first\nsecond\nthird\n" > a.txt
   $ hg commit -m 'LF a.txt (fixed)'
   $ hg push ../main
   pushing to ../main
@@ -72,11 +72,11 @@  Create repo
     crlf.txt in 004ba2132725 should not have LF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     crlf.txt in 004ba2132725 should not have LF line endings
-  [255]
+  [1]
 
   $ printf "first\r\nsecond\r\nthird\r\n" > crlf.txt
   $ hg commit -m 'CRLF crlf.txt (fixed)'
   $ hg push ../main
   pushing to ../main
@@ -100,11 +100,11 @@  Create repo
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
-  [255]
+  [1]
 
   $ hg up -r -2
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ printf "some\nother\nfile" > c.txt
   $ hg add c.txt
@@ -121,11 +121,11 @@  Create repo
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
-  [255]
+  [1]
 
 Test checkheadshook alias
 
   $ cat > ../main/.hg/hgrc <<EOF
   > [hooks]
@@ -142,11 +142,11 @@  Test checkheadshook alias
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
-  [255]
+  [1]
 
 We can fix the head and push again
 
   $ hg up 6
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -179,11 +179,11 @@  Test it still fails with checkallhook
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
-  [255]
+  [1]
 
 But we can push the clean head
 
   $ hg push -r7 -f ../main
   pushing to ../main
@@ -211,8 +211,8 @@  Test multiple files/revisions output
   transaction abort!
   rollback completed
   abort: end-of-line check failed:
     d.txt in a7040e68714f should not have CRLF line endings
     b.txt in fbcf9b1025f5 should not have CRLF line endings
-  [255]
+  [1]
 
   $ cd ..
diff --git a/tests/test-lock-badness.t b/tests/test-lock-badness.t
--- a/tests/test-lock-badness.t
+++ b/tests/test-lock-badness.t
@@ -32,10 +32,11 @@  Pushing to a local read-only repo that c
 
   $ chmod 100 a/.hg/store
 
   $ hg -R b push a
   pushing to a
+  searching for changes
   abort: could not lock repository a: Permission denied
   [255]
 
   $ chmod 700 a/.hg/store
 #endif
diff --git a/tests/test-push-validation.t b/tests/test-push-validation.t
--- a/tests/test-push-validation.t
+++ b/tests/test-push-validation.t
@@ -50,11 +50,11 @@  Expected to fail:
   adding manifests
   adding file changes
   transaction abort!
   rollback completed
   abort: received spurious file revlog entry
-  [255]
+  [1]
 
   $ hg -q rollback
   $ mv tmp1 .hg/store/data/beta.i
   $ echo beta > beta
 
@@ -85,8 +85,8 @@  Expected to fail:
   adding manifests
   adding file changes
   transaction abort!
   rollback completed
   abort: missing file data for beta:dddc47b3ba30e54484720ce0f4f768a0f4b6efb9 - run hg verify
-  [255]
+  [1]
 
   $ cd ..
diff --git a/tests/test-win32text.t b/tests/test-win32text.t
--- a/tests/test-win32text.t
+++ b/tests/test-win32text.t
@@ -76,11 +76,11 @@  push should fail
   [decode]
   ** = cleverdecode:
   transaction abort!
   rollback completed
   abort: pretxnchangegroup.crlf hook failed
-  [255]
+  [1]
 
   $ mv .hg/hgrc.bak .hg/hgrc
   $ echo hello > f
   $ hg rm g