diff --git a/eden/scm/edenscm/hgext/infinitepush/client.py b/eden/scm/edenscm/hgext/infinitepush/client.py index d56aab5a2b..e61f0173ae 100644 --- a/eden/scm/edenscm/hgext/infinitepush/client.py +++ b/eden/scm/edenscm/hgext/infinitepush/client.py @@ -356,14 +356,14 @@ def _pull(orig, ui, repo, source="default", **opts): # This is useful for dogfooding other hg backend that stores only public commits # (e.g. Mononoke) if opts.get("rev") or opts.get("bookmark"): - with _resetinfinitepushpath(ui, **opts): + with _resetinfinitepushpath(repo, ui, **opts): return _dopull(orig, ui, repo, source, **opts) return _dopull(orig, ui, repo, source, **opts) @contextlib.contextmanager -def _resetinfinitepushpath(ui, **opts): +def _resetinfinitepushpath(repo, ui, **opts): """ Sets "default" path to "infinitepush" or "infinitepushbookmark" path and deletes "infinitepush"/"infinitepushbookmark" path ("infinitepushbookmark" @@ -382,6 +382,17 @@ def _resetinfinitepushpath(ui, **opts): infinitepushwritepath = pathname.infinitepushwrite infinitepushbookmarkpath = pathname.infinitepushbookmark + if opts.get("bookmark"): + for b in opts["bookmark"]: + if repo._scratchbranchmatcher.match(b): + break + else: + # Bookmarks were requested to pull, but not + # a single bookmark matches scratch branch matcher. + # Let's pull from normal path instead + yield + return + pullingsinglecommithash = False if opts.get("rev"): revs = opts.get("rev") diff --git a/eden/scm/tests/test-commitcloud-update.t b/eden/scm/tests/test-commitcloud-update.t index 3f97252995..4fd95b808b 100644 --- a/eden/scm/tests/test-commitcloud-update.t +++ b/eden/scm/tests/test-commitcloud-update.t @@ -98,3 +98,18 @@ Update by full hash - infinitepush path should be used (if infinitepushbookmark $ hg update "$FULLHASH" pulling 'd15d0da9f84a9bebe6744eba3ec1dd86e2d46818' from 'ssh://user@dummy/repo' 2 files updated, 0 files merged, 3 files removed, 0 files unresolved + +Check that non-scratch bookmark is pulled from normal path + $ cd "$TESTTMP/repo" + $ hg book newbook + $ cd "$TESTTMP/first_client" + $ cat << EOF >> .hg/hgrc + > [paths] + > default=ssh://user@dummy/repo + > infinitepush=ssh://user@dummy/broken + > infinitepushbookmark=ssh://user@dummy/broken + > EOF + $ hg pull -B newbook + pulling from ssh://user@dummy/repo + no changes found + adding remote bookmark newbook