largefiles: don't crash when cloning to a remote repo
The immediate crash was when checking for requirements immediately after this,
but lfcommands.downloadlfiles() will also crash if --all-largefiles is
specified. That has been in place since atleast
5884812686f7 (2.3-rc) without
anyone noticing.
I can't tell from the peer classes if there's a way to make the custom largefile
functionality work in this case, but atleast it doesn't crash.
--- a/hgext/largefiles/overrides.py Fri Apr 17 14:12:01 2015 -0700
+++ b/hgext/largefiles/overrides.py Sat Apr 18 00:34:38 2015 -0400
@@ -838,6 +838,12 @@
sourcerepo, destrepo = result
repo = destrepo.local()
+ # When cloning to a remote repo (like through SSH), no repo is available
+ # from the peer. Therefore the largefiles can't be downloaded and the
+ # hgrc can't be updated.
+ if not repo:
+ return result
+
# If largefiles is required for this repo, permanently enable it locally
if 'largefiles' in repo.requirements:
fp = repo.vfs('hgrc', 'a', text=True)
--- a/tests/test-init.t Fri Apr 17 14:12:01 2015 -0700
+++ b/tests/test-init.t Sat Apr 18 00:34:38 2015 -0400
@@ -111,6 +111,14 @@
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
+The largefiles extension doesn't crash
+ $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remotelf --config extensions.largefiles=
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 1 changesets with 1 changes to 1 files
+
init to existing repo
$ hg init -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote1
@@ -133,6 +141,8 @@
Got arguments 1:user@dummy 2:hg -R remote2 serve --stdio
Got arguments 1:user@dummy 2:hg init remote1
Got arguments 1:user@dummy 2:hg -R remote1 serve --stdio
+ Got arguments 1:user@dummy 2:hg init remotelf
+ Got arguments 1:user@dummy 2:hg -R remotelf serve --stdio
Got arguments 1:user@dummy 2:hg init remote1
Got arguments 1:user@dummy 2:hg init remote1