# HG changeset patch # User Siddharth Agarwal <s...@fb.com> # Date 1494298866 25200 # Mon May 08 20:01:06 2017 -0700 # Node ID 052bd5cfe3769b10c64a4a39d9734a2740d44e16 # Parent 16696b166a70288f05d9306591d66fdd87c51702 clone: warn when streaming was requested but couldn't be performed
This helps both users and the people who support them figure out why a stream clone couldn't be performed. In an upcoming patch we're going to add a way for servers to hard abort on a full getbundle. In those cases servers might expect clients to perform a stream clone, so it's important to communicate why one couldn't be done. diff --git a/mercurial/streamclone.py b/mercurial/streamclone.py --- a/mercurial/streamclone.py +++ b/mercurial/streamclone.py @@ -80,11 +80,21 @@ def canperformstreamclone(pullop, bailif streamreqs = remote.capable('streamreqs') # This is weird and shouldn't happen with modern servers. if not streamreqs: + pullop.repo.ui.warn(_( + 'warning: stream clone requested but server has them ' + 'disabled\n')) return False, None streamreqs = set(streamreqs.split(',')) # Server requires something we don't support. Bail. - if streamreqs - repo.supportedformats: + missingreqs = streamreqs - repo.supportedformats + if missingreqs: + pullop.repo.ui.warn(_( + 'warning: stream clone requested but client is missing ' + 'requirements: %s\n') % ', '.join(sorted(missingreqs))) + pullop.repo.ui.warn( + _('(see https://www.mercurial-scm.org/wiki/MissingRequirement ' + 'for more information)\n')) return False, None requirements = streamreqs diff --git a/tests/test-http-bundle1.t b/tests/test-http-bundle1.t --- a/tests/test-http-bundle1.t +++ b/tests/test-http-bundle1.t @@ -58,6 +58,7 @@ clone via stream try to clone via stream, should use pull instead $ hg clone --uncompressed http://localhost:$HGPORT1/ copy2 + warning: stream clone requested but server has them disabled requesting all changes adding changesets adding manifests @@ -75,6 +76,8 @@ try to clone via stream but missing requ > EOF $ hg clone --config extensions.rsf=$TESTTMP/removesupportedformat.py --uncompressed http://localhost:$HGPORT/ copy3 + warning: stream clone requested but client is missing requirements: generaldelta + (see https://www.mercurial-scm.org/wiki/MissingRequirement for more information) requesting all changes adding changesets adding manifests diff --git a/tests/test-http.t b/tests/test-http.t --- a/tests/test-http.t +++ b/tests/test-http.t @@ -49,6 +49,7 @@ clone via stream try to clone via stream, should use pull instead $ hg clone --uncompressed http://localhost:$HGPORT1/ copy2 + warning: stream clone requested but server has them disabled requesting all changes adding changesets adding manifests @@ -66,6 +67,8 @@ try to clone via stream but missing requ > EOF $ hg clone --config extensions.rsf=$TESTTMP/removesupportedformat.py --uncompressed http://localhost:$HGPORT/ copy3 + warning: stream clone requested but client is missing requirements: generaldelta + (see https://www.mercurial-scm.org/wiki/MissingRequirement for more information) requesting all changes adding changesets adding manifests _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel