diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -889,11 +889,6 @@ if not repo: return result - # If largefiles is required for this repo, permanently enable it locally - if 'largefiles' in repo.requirements: - repo.vfs.append('hgrc', - util.tonativeeol('\n[extensions]\nlargefiles=\n')) - # Caching is implicitly limited to 'rev' option, since the dest repo was # truncated at that point. The user may expect a download count with # this option, so attempt whether or not this is a largefile repo. @@ -905,14 +900,6 @@ return result -def hgpostshare(orig, sourcerepo, destrepo, defaultpath=None): - orig(sourcerepo, destrepo, defaultpath=defaultpath) - - # If largefiles is required for this repo, permanently enable it locally - if 'largefiles' in destrepo.requirements: - destrepo.vfs.append('hgrc', - util.tonativeeol('\n[extensions]\nlargefiles=\n')) - def overriderebase(orig, ui, repo, **opts): if not util.safehasattr(repo, '_largefilesenabled'): return orig(ui, repo, **opts) diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py --- a/hgext/largefiles/uisetup.py +++ b/hgext/largefiles/uisetup.py @@ -126,7 +126,6 @@ _('download all versions of all largefiles'))] entry[1].extend(cloneopt) extensions.wrapfunction(hg, 'clone', overrides.hgclone) - extensions.wrapfunction(hg, 'postshare', overrides.hgpostshare) entry = extensions.wrapcommand(commands.table, 'cat', overrides.overridecat) diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -588,6 +588,7 @@ # Map of requirements to list of extensions to load automatically when # requirement is present. autoextensions = { + b'largefiles': [b'largefiles'], b'lfs': [b'lfs'], } diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t --- a/tests/test-largefiles-misc.t +++ b/tests/test-largefiles-misc.t @@ -1,6 +1,53 @@ This file contains testcases that tend to be related to special cases or less common commands affecting largefile. + $ hg init requirements + $ cd requirements + +# largefiles not loaded by default. + + $ hg config extensions + [1] + +# Adding largefiles to requires file will auto-load largefiles extension. + + $ echo largefiles >> .hg/requires + $ hg config extensions + extensions.largefiles= + +# But only if there is no config entry for the extension already. + + $ cat > .hg/hgrc << EOF + > [extensions] + > largefiles=! + > EOF + + $ hg config extensions + abort: repository requires features unknown to this Mercurial: largefiles! + (see https://mercurial-scm.org/wiki/MissingRequirement for more information) + [255] + + $ cat > .hg/hgrc << EOF + > [extensions] + > largefiles= + > EOF + + $ hg config extensions + extensions.largefiles= + + $ cat > .hg/hgrc << EOF + > [extensions] + > largefiles = missing.py + > EOF + + $ hg config extensions + *** failed to import extension largefiles from missing.py: [Errno 2] $ENOENT$: 'missing.py' + abort: repository requires features unknown to this Mercurial: largefiles! + (see https://mercurial-scm.org/wiki/MissingRequirement for more information) + [255] + + $ cd .. + Each sections should be independent of each others. $ USERCACHE="$TESTTMP/cache"; export USERCACHE @@ -220,10 +267,8 @@ getting changed largefiles 1 largefiles updated, 0 removed 3 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cat ../shared_lfrepo/.hg/hgrc - - [extensions] - largefiles= + $ grep largefiles ../shared_lfrepo/.hg/requires + largefiles verify that large files in subrepos handled properly $ hg init subrepo diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -1206,12 +1206,12 @@ adding file changes added 1 changesets with 2 changes to 2 files (+1 heads) new changesets a381d2c8c80e (1 drafts) + 0 largefiles cached rebasing 8:f574fb32bb45 "modify normal file largefile in repo d" Invoking status precommit hook M sub/normal4 M sub2/large6 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-dd1d9f80-rebase.hg - 0 largefiles cached $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ] $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 9:598410d3eb9a modify normal file largefile in repo d diff --git a/tests/test-subrepo-deep-nested-change.t b/tests/test-subrepo-deep-nested-change.t --- a/tests/test-subrepo-deep-nested-change.t +++ b/tests/test-subrepo-deep-nested-change.t @@ -203,21 +203,8 @@ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved Largefiles is NOT enabled in the clone if the source repo doesn't require it - $ cat cloned/.hg/hgrc - # example repository config (see 'hg help config' for more info) - [paths] - default = $TESTTMP/main - - # path aliases to other clones of this repo in URLs or filesystem paths - # (see 'hg help config.paths' for more info) - # - # default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork - # my-fork = ssh://jdoe@example.net/hg/jdoes-fork - # my-clone = /home/jdoe/jdoes-clone - - [ui] - # name and email (local to this repository, optional), e.g. - # username = Jane Doe + $ grep largefiles cloned/.hg/hgrc + [1] Checking cloned repo ids @@ -790,29 +777,13 @@ $ rm -rf ../archive_lf The local repo enables largefiles if a largefiles repo is cloned + $ hg showconfig extensions - abort: repository requires features unknown to this Mercurial: largefiles! - (see https://mercurial-scm.org/wiki/MissingRequirement for more information) - [255] + extensions.largefiles= + $ hg --config extensions.largefiles= clone -qU . ../lfclone - $ cat ../lfclone/.hg/hgrc - # example repository config (see 'hg help config' for more info) - [paths] - default = $TESTTMP/cloned - - # path aliases to other clones of this repo in URLs or filesystem paths - # (see 'hg help config.paths' for more info) - # - # default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork - # my-fork = ssh://jdoe@example.net/hg/jdoes-fork - # my-clone = /home/jdoe/jdoes-clone - - [ui] - # name and email (local to this repository, optional), e.g. - # username = Jane Doe - - [extensions] - largefiles= + $ grep largefiles ../lfclone/.hg/requires + largefiles Find an exact match to a standin (should archive nothing) $ hg --config extensions.largefiles= archive -S -I 'sub/sub2/.hglf/large.bin' ../archive_lf