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
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
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