##// END OF EJS Templates
largefiles: automatically load largefiles extension when required (BC)...
Gregory Szorc -
r39890:823a5804 default
parent child Browse files
Show More
@@ -889,11 +889,6 b' def hgclone(orig, ui, opts, *args, **kwa'
889 889 if not repo:
890 890 return result
891 891
892 # If largefiles is required for this repo, permanently enable it locally
893 if 'largefiles' in repo.requirements:
894 repo.vfs.append('hgrc',
895 util.tonativeeol('\n[extensions]\nlargefiles=\n'))
896
897 892 # Caching is implicitly limited to 'rev' option, since the dest repo was
898 893 # truncated at that point. The user may expect a download count with
899 894 # this option, so attempt whether or not this is a largefile repo.
@@ -905,14 +900,6 b' def hgclone(orig, ui, opts, *args, **kwa'
905 900
906 901 return result
907 902
908 def hgpostshare(orig, sourcerepo, destrepo, defaultpath=None):
909 orig(sourcerepo, destrepo, defaultpath=defaultpath)
910
911 # If largefiles is required for this repo, permanently enable it locally
912 if 'largefiles' in destrepo.requirements:
913 destrepo.vfs.append('hgrc',
914 util.tonativeeol('\n[extensions]\nlargefiles=\n'))
915
916 903 def overriderebase(orig, ui, repo, **opts):
917 904 if not util.safehasattr(repo, '_largefilesenabled'):
918 905 return orig(ui, repo, **opts)
@@ -126,7 +126,6 b' def uisetup(ui):'
126 126 _('download all versions of all largefiles'))]
127 127 entry[1].extend(cloneopt)
128 128 extensions.wrapfunction(hg, 'clone', overrides.hgclone)
129 extensions.wrapfunction(hg, 'postshare', overrides.hgpostshare)
130 129
131 130 entry = extensions.wrapcommand(commands.table, 'cat',
132 131 overrides.overridecat)
@@ -588,6 +588,7 b' def afterhgrcload(ui, wdirvfs, hgvfs, re'
588 588 # Map of requirements to list of extensions to load automatically when
589 589 # requirement is present.
590 590 autoextensions = {
591 b'largefiles': [b'largefiles'],
591 592 b'lfs': [b'lfs'],
592 593 }
593 594
@@ -1,6 +1,53 b''
1 1 This file contains testcases that tend to be related to special cases or less
2 2 common commands affecting largefile.
3 3
4 $ hg init requirements
5 $ cd requirements
6
7 # largefiles not loaded by default.
8
9 $ hg config extensions
10 [1]
11
12 # Adding largefiles to requires file will auto-load largefiles extension.
13
14 $ echo largefiles >> .hg/requires
15 $ hg config extensions
16 extensions.largefiles=
17
18 # But only if there is no config entry for the extension already.
19
20 $ cat > .hg/hgrc << EOF
21 > [extensions]
22 > largefiles=!
23 > EOF
24
25 $ hg config extensions
26 abort: repository requires features unknown to this Mercurial: largefiles!
27 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
28 [255]
29
30 $ cat > .hg/hgrc << EOF
31 > [extensions]
32 > largefiles=
33 > EOF
34
35 $ hg config extensions
36 extensions.largefiles=
37
38 $ cat > .hg/hgrc << EOF
39 > [extensions]
40 > largefiles = missing.py
41 > EOF
42
43 $ hg config extensions
44 *** failed to import extension largefiles from missing.py: [Errno 2] $ENOENT$: 'missing.py'
45 abort: repository requires features unknown to this Mercurial: largefiles!
46 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
47 [255]
48
49 $ cd ..
50
4 51 Each sections should be independent of each others.
5 52
6 53 $ USERCACHE="$TESTTMP/cache"; export USERCACHE
@@ -220,10 +267,8 b' sharing a largefile repo automatically e'
220 267 getting changed largefiles
221 268 1 largefiles updated, 0 removed
222 269 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
223 $ cat ../shared_lfrepo/.hg/hgrc
224
225 [extensions]
226 largefiles=
270 $ grep largefiles ../shared_lfrepo/.hg/requires
271 largefiles
227 272
228 273 verify that large files in subrepos handled properly
229 274 $ hg init subrepo
@@ -1206,12 +1206,12 b' rebased or not.'
1206 1206 adding file changes
1207 1207 added 1 changesets with 2 changes to 2 files (+1 heads)
1208 1208 new changesets a381d2c8c80e (1 drafts)
1209 0 largefiles cached
1209 1210 rebasing 8:f574fb32bb45 "modify normal file largefile in repo d"
1210 1211 Invoking status precommit hook
1211 1212 M sub/normal4
1212 1213 M sub2/large6
1213 1214 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-dd1d9f80-rebase.hg
1214 0 largefiles cached
1215 1215 $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ]
1216 1216 $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
1217 1217 9:598410d3eb9a modify normal file largefile in repo d
@@ -203,21 +203,8 b' Clone main'
203 203 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
204 204
205 205 Largefiles is NOT enabled in the clone if the source repo doesn't require it
206 $ cat cloned/.hg/hgrc
207 # example repository config (see 'hg help config' for more info)
208 [paths]
209 default = $TESTTMP/main
210
211 # path aliases to other clones of this repo in URLs or filesystem paths
212 # (see 'hg help config.paths' for more info)
213 #
214 # default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork
215 # my-fork = ssh://jdoe@example.net/hg/jdoes-fork
216 # my-clone = /home/jdoe/jdoes-clone
217
218 [ui]
219 # name and email (local to this repository, optional), e.g.
220 # username = Jane Doe <jdoe@example.com>
206 $ grep largefiles cloned/.hg/hgrc
207 [1]
221 208
222 209 Checking cloned repo ids
223 210
@@ -790,29 +777,13 b' Find an exact largefile match in a large'
790 777 $ rm -rf ../archive_lf
791 778
792 779 The local repo enables largefiles if a largefiles repo is cloned
780
793 781 $ hg showconfig extensions
794 abort: repository requires features unknown to this Mercurial: largefiles!
795 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
796 [255]
782 extensions.largefiles=
783
797 784 $ hg --config extensions.largefiles= clone -qU . ../lfclone
798 $ cat ../lfclone/.hg/hgrc
799 # example repository config (see 'hg help config' for more info)
800 [paths]
801 default = $TESTTMP/cloned
802
803 # path aliases to other clones of this repo in URLs or filesystem paths
804 # (see 'hg help config.paths' for more info)
805 #
806 # default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork
807 # my-fork = ssh://jdoe@example.net/hg/jdoes-fork
808 # my-clone = /home/jdoe/jdoes-clone
809
810 [ui]
811 # name and email (local to this repository, optional), e.g.
812 # username = Jane Doe <jdoe@example.com>
813
814 [extensions]
815 largefiles=
785 $ grep largefiles ../lfclone/.hg/requires
786 largefiles
816 787
817 788 Find an exact match to a standin (should archive nothing)
818 789 $ hg --config extensions.largefiles= archive -S -I 'sub/sub2/.hglf/large.bin' ../archive_lf
General Comments 0
You need to be logged in to leave comments. Login now