Patchwork [4,of,4] outgoing: handle phases the same as pull

login
register
mail settings
Submitter Eric Sumner
Date Dec. 19, 2014, 9:40 p.m.
Message ID <3c85e87a2cd8c120dccc.1419025212@dev911.prn1.facebook.com>
Download mbox | patch
Permalink /patch/7185/
State Accepted
Headers show

Comments

Eric Sumner - Dec. 19, 2014, 9:40 p.m.
# HG changeset patch
# User Eric Sumner <ericsumner@fb.com>
# Date 1418934797 28800
#      Thu Dec 18 12:33:17 2014 -0800
# Node ID 3c85e87a2cd8c120dccc03d69d2b35204e5689e4
# Parent  449efb8e20984980511cc2c5d277e519a44ce4d9
outgoing: handle phases the same as pull

Now that bundlerepo can move phases safely, 'hg outgoing' can share its phase
handling code with pull to better reflect what would actually show up.
Augie Fackler - Dec. 22, 2014, 9:38 p.m.
On Fri, Dec 19, 2014 at 01:40:12PM -0800, Eric Sumner wrote:
> # HG changeset patch
> # User Eric Sumner <ericsumner@fb.com>
> # Date 1418934797 28800
> #      Thu Dec 18 12:33:17 2014 -0800
> # Node ID 3c85e87a2cd8c120dccc03d69d2b35204e5689e4
> # Parent  449efb8e20984980511cc2c5d277e519a44ce4d9
> outgoing: handle phases the same as pull

This looks like an improvement. Will fix log message in flight. Queued.

>
> Now that bundlerepo can move phases safely, 'hg outgoing' can share its phase
> handling code with pull to better reflect what would actually show up.
>
> diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
> --- a/mercurial/bundlerepo.py
> +++ b/mercurial/bundlerepo.py
> @@ -350,6 +350,16 @@
>          repopath, bundlename = parentpath, path
>      return bundlerepository(ui, repopath, bundlename)
>
> +class bundletransactionmanager(object):
> +    def transaction(self):
> +        return None
> +
> +    def close(self):
> +        raise NotImplementedError
> +
> +    def release(self):
> +        raise NotImplementedError
> +
>  def getremotechanges(ui, repo, other, onlyheads=None, bundlename=None,
>                       force=False):
>      '''obtains a bundle of changes incoming from other
> @@ -418,6 +428,14 @@
>
>      csets = localrepo.changelog.findmissing(common, rheads)
>
> +    if bundlerepo:
> +        reponodes = [ctx.node() for ctx in bundlerepo[bundlerepo.firstnewrev:]]
> +        remotephases = other.listkeys('phases')
> +
> +        pullop = exchange.pulloperation(bundlerepo, other, heads=reponodes)
> +        pullop.trmanager = bundletransactionmanager()
> +        exchange._pullapplyphases(pullop, remotephases)
> +
>      def cleanup():
>          if bundlerepo:
>              bundlerepo.close()
> diff --git a/tests/test-setdiscovery.t b/tests/test-setdiscovery.t
> --- a/tests/test-setdiscovery.t
> +++ b/tests/test-setdiscovery.t
> @@ -354,6 +354,7 @@
>    "GET /?cmd=capabilities HTTP/1.1" 200 -
>    "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D513314ca8b3ae4dac8eec56966265b00fcf866db
>    "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:common=513314ca8b3ae4dac8eec56966265b00fcf866db&heads=e64a39e7da8b0d54bc63e81169aff001c13b3477
> +  "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases
>    $ cat errors.log
>
>    $ cd ..
> diff --git a/tests/test-treediscovery.t b/tests/test-treediscovery.t
> --- a/tests/test-treediscovery.t
> +++ b/tests/test-treediscovery.t
> @@ -509,6 +509,7 @@
>    "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961
>    "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785
>    "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961
> +  "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases
>    "GET /?cmd=capabilities HTTP/1.1" 200 -
>    "GET /?cmd=heads HTTP/1.1" 200 -
>    "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel

Patch

diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -350,6 +350,16 @@ 
         repopath, bundlename = parentpath, path
     return bundlerepository(ui, repopath, bundlename)
 
+class bundletransactionmanager(object):
+    def transaction(self):
+        return None
+
+    def close(self):
+        raise NotImplementedError
+
+    def release(self):
+        raise NotImplementedError
+
 def getremotechanges(ui, repo, other, onlyheads=None, bundlename=None,
                      force=False):
     '''obtains a bundle of changes incoming from other
@@ -418,6 +428,14 @@ 
 
     csets = localrepo.changelog.findmissing(common, rheads)
 
+    if bundlerepo:
+        reponodes = [ctx.node() for ctx in bundlerepo[bundlerepo.firstnewrev:]]
+        remotephases = other.listkeys('phases')
+
+        pullop = exchange.pulloperation(bundlerepo, other, heads=reponodes)
+        pullop.trmanager = bundletransactionmanager()
+        exchange._pullapplyphases(pullop, remotephases)
+
     def cleanup():
         if bundlerepo:
             bundlerepo.close()
diff --git a/tests/test-setdiscovery.t b/tests/test-setdiscovery.t
--- a/tests/test-setdiscovery.t
+++ b/tests/test-setdiscovery.t
@@ -354,6 +354,7 @@ 
   "GET /?cmd=capabilities HTTP/1.1" 200 -
   "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D513314ca8b3ae4dac8eec56966265b00fcf866db
   "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:common=513314ca8b3ae4dac8eec56966265b00fcf866db&heads=e64a39e7da8b0d54bc63e81169aff001c13b3477
+  "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases
   $ cat errors.log
 
   $ cd ..
diff --git a/tests/test-treediscovery.t b/tests/test-treediscovery.t
--- a/tests/test-treediscovery.t
+++ b/tests/test-treediscovery.t
@@ -509,6 +509,7 @@ 
   "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961
   "GET /?cmd=between HTTP/1.1" 200 - x-hgarg-1:pairs=d8f638ac69e9ae8dea4f09f11d696546a912d961-d57206cc072a18317c1e381fb60aa31bd3401785
   "GET /?cmd=changegroupsubset HTTP/1.1" 200 - x-hgarg-1:bases=d8f638ac69e9ae8dea4f09f11d696546a912d961&heads=d8f638ac69e9ae8dea4f09f11d696546a912d961
+  "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases
   "GET /?cmd=capabilities HTTP/1.1" 200 -
   "GET /?cmd=heads HTTP/1.1" 200 -
   "GET /?cmd=branches HTTP/1.1" 200 - x-hgarg-1:nodes=d8f638ac69e9ae8dea4f09f11d696546a912d961