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