annotate hgext/largefiles/uisetup.py @ 22196:23fe278bde43

largefiles: keep largefiles from colliding with normal one during linear merge Before this patch, linear merging of modified or newly added largefile causes unexpected result, if (1) largefile collides with same name normal one in the target revision and (2) "local" largefile is chosen, even though branch merging between such revisions doesn't. Expected result of such linear merging is: (1) (not yet recorded) largefile is kept in the working directory (2) largefile is marked as (re-)"added" (3) colliding normal file is marked as "removed" But actual result is: (1) largefile in the working directory is unlinked (2) largefile is marked as "normal" (so treated as "missing") (3) the dirstate entry for colliding normal file is just dropped (1) is very serious, because there is no way to restore temporarily modified largefiles. (3) prevents the next commit from adding the manifest with correct "removal of (normal) file" information for newly created changeset. The root cause of this problem is putting "lfile" into "actions['r']" in linear-merging case. At liner merging, "actions['r']" causes: - unlinking "target file" in the working directory, but "lfile" as "target file" is also largefile itself in this case - dropping the dirstate entry for target file "actions['f']" (= "forget") does only the latter, and this is reason why this patch doesn't choose putting "lfile" into it instead of "actions['r']". This patch newly introduces action "lfmr" (LargeFiles: Mark as Removed) to mark colliding normal file as "removed" without unlinking it. This patch uses "hg debugdirstate" instead of "hg status" in test, because: - choosing "local largefile" hides "removed" status of "remote normal file" in "hg status" output, and - "hg status" for "large2" in this case has another problem fixed in the subsequent patch
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Fri, 15 Aug 2014 20:28:51 +0900
parents 70252bdfd39c
children 4e2559841d6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
1 # Copyright 2009-2010 Gregory P. Ward
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
2 # Copyright 2009-2010 Intelerad Medical Systems Incorporated
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
3 # Copyright 2010-2011 Fog Creek Software
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
4 # Copyright 2010-2011 Unity Technologies
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
5 #
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
6 # This software may be used and distributed according to the terms of the
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
7 # GNU General Public License version 2 or any later version.
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
8
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
9 '''setup for largefiles extension: uisetup'''
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
10
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
11 from mercurial import archival, cmdutil, commands, extensions, filemerge, hg, \
21084
70252bdfd39c largefiles: import whole modules instead of importing parts of them
Mads Kiilerich <madski@unity3d.com>
parents: 21052
diff changeset
12 httppeer, merge, scmutil, sshpeer, wireproto, revset, subrepo
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
13 from mercurial.i18n import _
18298
3598c585e464 largefiles: remove unused proto.refuseclient code
Mads Kiilerich <madski@unity3d.com>
parents: 18144
diff changeset
14 from mercurial.hgweb import hgweb_mod, webcommands
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
15
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
16 import overrides
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
17 import proto
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
18
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
19 def uisetup(ui):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
20 # Disable auto-status for some commands which assume that all
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
21 # files in the result are under Mercurial's control
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
22
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
23 entry = extensions.wrapcommand(commands.table, 'add',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
24 overrides.overrideadd)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
25 addopt = [('', 'large', None, _('add as largefile')),
15944
f19d5c852f9b largefiles: add --normal option to hg add (issue3061)
Na'Tosha Bard <natosha@unity3d.com>
parents: 15674
diff changeset
26 ('', 'normal', None, _('add as normal file')),
15627
9d7a83a42f8c largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents: 15383
diff changeset
27 ('', 'lfsize', '', _('add all files above this size '
9d7a83a42f8c largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents: 15383
diff changeset
28 '(in megabytes) as largefiles '
9d7a83a42f8c largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents: 15383
diff changeset
29 '(default: 10)'))]
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
30 entry[1].extend(addopt)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
31
17658
a02c1ffddae9 largefiles: handle commit -A properly, after a --large commit (issue3542)
Matt Harbison <matt_harbison@yahoo.com>
parents: 17601
diff changeset
32 # The scmutil function is called both by the (trivial) addremove command,
a02c1ffddae9 largefiles: handle commit -A properly, after a --large commit (issue3542)
Matt Harbison <matt_harbison@yahoo.com>
parents: 17601
diff changeset
33 # and in the process of handling commit -A (issue3542)
a02c1ffddae9 largefiles: handle commit -A properly, after a --large commit (issue3542)
Matt Harbison <matt_harbison@yahoo.com>
parents: 17601
diff changeset
34 entry = extensions.wrapfunction(scmutil, 'addremove',
a02c1ffddae9 largefiles: handle commit -A properly, after a --large commit (issue3542)
Matt Harbison <matt_harbison@yahoo.com>
parents: 17601
diff changeset
35 overrides.scmutiladdremove)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
36 entry = extensions.wrapcommand(commands.table, 'remove',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
37 overrides.overrideremove)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
38 entry = extensions.wrapcommand(commands.table, 'forget',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
39 overrides.overrideforget)
16515
12dabc22de77 largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents: 16449
diff changeset
40
12dabc22de77 largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents: 16449
diff changeset
41 # Subrepos call status function
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
42 entry = extensions.wrapcommand(commands.table, 'status',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
43 overrides.overridestatus)
21084
70252bdfd39c largefiles: import whole modules instead of importing parts of them
Mads Kiilerich <madski@unity3d.com>
parents: 21052
diff changeset
44 entry = extensions.wrapfunction(subrepo.hgsubrepo, 'status',
16515
12dabc22de77 largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents: 16449
diff changeset
45 overrides.overridestatusfn)
12dabc22de77 largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents: 16449
diff changeset
46
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
47 entry = extensions.wrapcommand(commands.table, 'log',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
48 overrides.overridelog)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
49 entry = extensions.wrapcommand(commands.table, 'rollback',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
50 overrides.overriderollback)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
51 entry = extensions.wrapcommand(commands.table, 'verify',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
52 overrides.overrideverify)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
53
18547
2e3ec9e6ee6e largefiles: make verify --lfa and --lfc work without --large
Mads Kiilerich <madski@unity3d.com>
parents: 18459
diff changeset
54 verifyopt = [('', 'large', None,
2e3ec9e6ee6e largefiles: make verify --lfa and --lfc work without --large
Mads Kiilerich <madski@unity3d.com>
parents: 18459
diff changeset
55 _('verify that all largefiles in current revision exists')),
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
56 ('', 'lfa', None,
18547
2e3ec9e6ee6e largefiles: make verify --lfa and --lfc work without --large
Mads Kiilerich <madski@unity3d.com>
parents: 18459
diff changeset
57 _('verify largefiles in all revisions, not just current')),
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
58 ('', 'lfc', None,
18547
2e3ec9e6ee6e largefiles: make verify --lfa and --lfc work without --large
Mads Kiilerich <madski@unity3d.com>
parents: 18459
diff changeset
59 _('verify local largefile contents, not just existence'))]
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
60 entry[1].extend(verifyopt)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
61
18144
e16982a74bf7 largefiles: introduce basic debugstate --large functionality
Mads Kiilerich <madski@unity3d.com>
parents: 17878
diff changeset
62 entry = extensions.wrapcommand(commands.table, 'debugstate',
e16982a74bf7 largefiles: introduce basic debugstate --large functionality
Mads Kiilerich <madski@unity3d.com>
parents: 17878
diff changeset
63 overrides.overridedebugstate)
e16982a74bf7 largefiles: introduce basic debugstate --large functionality
Mads Kiilerich <madski@unity3d.com>
parents: 17878
diff changeset
64 debugstateopt = [('', 'large', None, _('display largefiles dirstate'))]
e16982a74bf7 largefiles: introduce basic debugstate --large functionality
Mads Kiilerich <madski@unity3d.com>
parents: 17878
diff changeset
65 entry[1].extend(debugstateopt)
e16982a74bf7 largefiles: introduce basic debugstate --large functionality
Mads Kiilerich <madski@unity3d.com>
parents: 17878
diff changeset
66
21052
cde32cb5a565 largefiles: use "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21048
diff changeset
67 outgoing = lambda orgfunc, *arg, **kwargs: orgfunc(*arg, **kwargs)
cde32cb5a565 largefiles: use "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21048
diff changeset
68 entry = extensions.wrapcommand(commands.table, 'outgoing', outgoing)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
69 outgoingopt = [('', 'large', None, _('display outgoing largefiles'))]
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
70 entry[1].extend(outgoingopt)
21052
cde32cb5a565 largefiles: use "outgoinghooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21048
diff changeset
71 cmdutil.outgoinghooks.add('largefiles', overrides.outgoinghook)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
72 entry = extensions.wrapcommand(commands.table, 'summary',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
73 overrides.overridesummary)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
74 summaryopt = [('', 'large', None, _('display outgoing largefiles'))]
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
75 entry[1].extend(summaryopt)
21048
ca7a57464fb3 largefiles: use "summaryremotehooks" to avoid redundant outgoing check
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20638
diff changeset
76 cmdutil.summaryremotehooks.add('largefiles', overrides.summaryremotehook)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
77
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
78 entry = extensions.wrapcommand(commands.table, 'update',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
79 overrides.overrideupdate)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
80 entry = extensions.wrapcommand(commands.table, 'pull',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
81 overrides.overridepull)
16692
b9969574540a largefiles: add --all-largefiles flag to pull
Na'Tosha Bard <natosha@unity3d.com>
parents: 16644
diff changeset
82 pullopt = [('', 'all-largefiles', None,
18982
43cb150e74f9 largefiles: deprecate --all-largefiles for pull
Mads Kiilerich <madski@unity3d.com>
parents: 18980
diff changeset
83 _('download all pulled versions of largefiles (DEPRECATED)')),
18978
8abaadab9abb largefiles: introduce pull --lfrev option
Mads Kiilerich <madski@unity3d.com>
parents: 18704
diff changeset
84 ('', 'lfrev', [],
8abaadab9abb largefiles: introduce pull --lfrev option
Mads Kiilerich <madski@unity3d.com>
parents: 18704
diff changeset
85 _('download largefiles for these revisions'), _('REV'))]
16692
b9969574540a largefiles: add --all-largefiles flag to pull
Na'Tosha Bard <natosha@unity3d.com>
parents: 16644
diff changeset
86 entry[1].extend(pullopt)
18979
1176832fc757 largefiles: introduce pulled() revset expression for use in --lfrev
Mads Kiilerich <madski@unity3d.com>
parents: 18978
diff changeset
87 revset.symbols['pulled'] = overrides.pulledrevsetsymbol
1176832fc757 largefiles: introduce pulled() revset expression for use in --lfrev
Mads Kiilerich <madski@unity3d.com>
parents: 18978
diff changeset
88
16644
98a9266db803 largefiles: add --all-largefiles flag to clone (issue3188)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16578
diff changeset
89 entry = extensions.wrapcommand(commands.table, 'clone',
98a9266db803 largefiles: add --all-largefiles flag to clone (issue3188)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16578
diff changeset
90 overrides.overrideclone)
98a9266db803 largefiles: add --all-largefiles flag to clone (issue3188)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16578
diff changeset
91 cloneopt = [('', 'all-largefiles', None,
98a9266db803 largefiles: add --all-largefiles flag to clone (issue3188)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16578
diff changeset
92 _('download all versions of all largefiles'))]
17601
6e2ab601be3f largefiles: delegate to the wrapped clone command
Matt Harbison <matt_harbison@yahoo.com>
parents: 17192
diff changeset
93 entry[1].extend(cloneopt)
6e2ab601be3f largefiles: delegate to the wrapped clone command
Matt Harbison <matt_harbison@yahoo.com>
parents: 17192
diff changeset
94 entry = extensions.wrapfunction(hg, 'clone', overrides.hgclone)
16644
98a9266db803 largefiles: add --all-largefiles flag to clone (issue3188)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16578
diff changeset
95
16439
290850e7aa43 largefiles: fix cat for largefiles (issue3352)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16247
diff changeset
96 entry = extensions.wrapcommand(commands.table, 'cat',
290850e7aa43 largefiles: fix cat for largefiles (issue3352)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16247
diff changeset
97 overrides.overridecat)
16093
7e30f5f2285f merge: refactor unknown file conflict checking
Matt Mackall <mpm@selenic.com>
parents: 15944
diff changeset
98 entry = extensions.wrapfunction(merge, '_checkunknownfile',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
99 overrides.overridecheckunknownfile)
20638
b228ad1f79d7 largefiles: override calculateupdates instead of manifestmerge
Mads Kiilerich <madski@unity3d.com>
parents: 19779
diff changeset
100 entry = extensions.wrapfunction(merge, 'calculateupdates',
b228ad1f79d7 largefiles: override calculateupdates instead of manifestmerge
Mads Kiilerich <madski@unity3d.com>
parents: 19779
diff changeset
101 overrides.overridecalculateupdates)
22196
23fe278bde43 largefiles: keep largefiles from colliding with normal one during linear merge
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21084
diff changeset
102 entry = extensions.wrapfunction(merge, 'recordupdates',
23fe278bde43 largefiles: keep largefiles from colliding with normal one during linear merge
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 21084
diff changeset
103 overrides.mergerecordupdates)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
104 entry = extensions.wrapfunction(filemerge, 'filemerge',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
105 overrides.overridefilemerge)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
106 entry = extensions.wrapfunction(cmdutil, 'copy',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
107 overrides.overridecopy)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
108
16516
597ddcb41b32 largefiles: notice dirty large files in a subrepo
Matt Harbison <matt_harbison@yahoo.com>
parents: 16515
diff changeset
109 # Summary calls dirty on the subrepos
21084
70252bdfd39c largefiles: import whole modules instead of importing parts of them
Mads Kiilerich <madski@unity3d.com>
parents: 21052
diff changeset
110 entry = extensions.wrapfunction(subrepo.hgsubrepo, 'dirty',
16516
597ddcb41b32 largefiles: notice dirty large files in a subrepo
Matt Harbison <matt_harbison@yahoo.com>
parents: 16515
diff changeset
111 overrides.overridedirty)
597ddcb41b32 largefiles: notice dirty large files in a subrepo
Matt Harbison <matt_harbison@yahoo.com>
parents: 16515
diff changeset
112
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
113 # Backout calls revert so we need to override both the command and the
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
114 # function
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
115 entry = extensions.wrapcommand(commands.table, 'revert',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
116 overrides.overriderevert)
15170
c1a4a3220711 largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents: 15169
diff changeset
117 entry = extensions.wrapfunction(commands, 'revert',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
118 overrides.overriderevert)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
119
18459
c9db897d5a43 largefiles: fix largefiles+subrepo update (issue3752)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 18298
diff changeset
120 extensions.wrapfunction(hg, 'updaterepo', overrides.hgupdaterepo)
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
121 extensions.wrapfunction(hg, 'merge', overrides.hgmerge)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
122
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
123 extensions.wrapfunction(archival, 'archive', overrides.overridearchive)
21084
70252bdfd39c largefiles: import whole modules instead of importing parts of them
Mads Kiilerich <madski@unity3d.com>
parents: 21052
diff changeset
124 extensions.wrapfunction(subrepo.hgsubrepo, 'archive',
70252bdfd39c largefiles: import whole modules instead of importing parts of them
Mads Kiilerich <madski@unity3d.com>
parents: 21052
diff changeset
125 overrides.hgsubrepoarchive)
15349
63455eb771af largefiles: drop more unnecessary compatibility checks
Greg Ward <greg@gerg.ca>
parents: 15295
diff changeset
126 extensions.wrapfunction(cmdutil, 'bailifchanged',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
127 overrides.overridebailifchanged)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
128
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
129 # create the new wireproto commands ...
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
130 wireproto.commands['putlfile'] = (proto.putlfile, 'sha')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
131 wireproto.commands['getlfile'] = (proto.getlfile, 'sha')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
132 wireproto.commands['statlfile'] = (proto.statlfile, 'sha')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
133
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
134 # ... and wrap some existing ones
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
135 wireproto.commands['capabilities'] = (proto.capabilities, '')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
136 wireproto.commands['heads'] = (proto.heads, '')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
137 wireproto.commands['lheads'] = (wireproto.heads, '')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
138
15254
dd03d3a9f888 largefiles: more work on cleaning up comments
Greg Ward <greg@gerg.ca>
parents: 15252
diff changeset
139 # make putlfile behave the same as push and {get,stat}lfile behave
dd03d3a9f888 largefiles: more work on cleaning up comments
Greg Ward <greg@gerg.ca>
parents: 15252
diff changeset
140 # the same as pull w.r.t. permissions checks
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
141 hgweb_mod.perms['putlfile'] = 'push'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
142 hgweb_mod.perms['getlfile'] = 'pull'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
143 hgweb_mod.perms['statlfile'] = 'pull'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
144
16449
874a680a3e23 largefiles: hide .hglf/ prefix for largefiles in hgweb
Martin Geisler <mg@lazybytes.net>
parents: 16439
diff changeset
145 extensions.wrapfunction(webcommands, 'decodepath', overrides.decodepath)
874a680a3e23 largefiles: hide .hglf/ prefix for largefiles in hgweb
Martin Geisler <mg@lazybytes.net>
parents: 16439
diff changeset
146
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
147 # the hello wireproto command uses wireproto.capabilities, so it won't see
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
148 # our largefiles capability unless we replace the actual function as well.
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
149 proto.capabilitiesorig = wireproto.capabilities
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
150 wireproto.capabilities = proto.capabilities
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
151
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
152 # can't do this in reposetup because it needs to have happened before
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
153 # wirerepo.__init__ is called
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 16692
diff changeset
154 proto.ssholdcallstream = sshpeer.sshpeer._callstream
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 16692
diff changeset
155 proto.httpoldcallstream = httppeer.httppeer._callstream
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 16692
diff changeset
156 sshpeer.sshpeer._callstream = proto.sshrepocallstream
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 16692
diff changeset
157 httppeer.httppeer._callstream = proto.httprepocallstream
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
158
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
159 # override some extensions' stuff as well
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
160 for name, module in extensions.extensions():
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
161 if name == 'fetch':
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
162 extensions.wrapcommand(getattr(module, 'cmdtable'), 'fetch',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
163 overrides.overridefetch)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
164 if name == 'purge':
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
165 extensions.wrapcommand(getattr(module, 'cmdtable'), 'purge',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
166 overrides.overridepurge)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
167 if name == 'rebase':
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
168 extensions.wrapcommand(getattr(module, 'cmdtable'), 'rebase',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
169 overrides.overriderebase)
15383
155d0f8fb7e5 largefiles: fix bad bug where transplanting a changeset with a largefile will result in an old largefile being comitted later on
Na'Tosha Bard <natosha@unity3d.com>
parents: 15356
diff changeset
170 if name == 'transplant':
155d0f8fb7e5 largefiles: fix bad bug where transplanting a changeset with a largefile will result in an old largefile being comitted later on
Na'Tosha Bard <natosha@unity3d.com>
parents: 15356
diff changeset
171 extensions.wrapcommand(getattr(module, 'cmdtable'), 'transplant',
16247
d87d9d8a8e03 largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents: 16093
diff changeset
172 overrides.overridetransplant)
17878
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
173 if name == 'convert':
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
174 convcmd = getattr(module, 'convcmd')
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
175 hgsink = getattr(convcmd, 'mercurial_sink')
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
176 extensions.wrapfunction(hgsink, 'before',
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
177 overrides.mercurialsinkbefore)
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
178 extensions.wrapfunction(hgsink, 'after',
d1d0140287b8 largefiles: don't copy largefiles from working dir to the store while converting
Matt Harbison <matt_harbison@yahoo.com>
parents: 17658
diff changeset
179 overrides.mercurialsinkafter)