Mercurial > hg
annotate hgext/largefiles/uisetup.py @ 16515:12dabc22de77 stable
largefiles: fix status -S reporting of subrepos (issue3231)
Wrapping the status command will only invoke overridestatus() and set
the lfstatus field for the top level repository. Wrapping the status
function is required to set the field on child repositories.
Previously, status -S would report large files in a subrepo as '?'
regardless of their actual states, and was inconsistent with what
status would report from within that subrepo.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 22 Apr 2012 03:47:34 -0400 |
parents | 874a680a3e23 |
children | 597ddcb41b32 |
rev | line source |
---|---|
15168 | 1 # Copyright 2009-2010 Gregory P. Ward |
2 # Copyright 2009-2010 Intelerad Medical Systems Incorporated | |
3 # Copyright 2010-2011 Fog Creek Software | |
4 # Copyright 2010-2011 Unity Technologies | |
5 # | |
6 # This software may be used and distributed according to the terms of the | |
7 # GNU General Public License version 2 or any later version. | |
8 | |
9 '''setup for largefiles extension: uisetup''' | |
10 | |
11 from mercurial import archival, cmdutil, commands, extensions, filemerge, hg, \ | |
15663
9036c7d106bf
largefiles: handle merges between normal files and largefiles (issue3084)
Martin Geisler <mg@aragost.com>
parents:
15383
diff
changeset
|
12 httprepo, localrepo, merge, sshrepo, sshserver, wireproto |
15168 | 13 from mercurial.i18n import _ |
16449
874a680a3e23
largefiles: hide .hglf/ prefix for largefiles in hgweb
Martin Geisler <mg@lazybytes.net>
parents:
16439
diff
changeset
|
14 from mercurial.hgweb import hgweb_mod, protocol, webcommands |
16515
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
15 from mercurial.subrepo import hgsubrepo |
15168 | 16 |
17 import overrides | |
18 import proto | |
19 | |
20 def uisetup(ui): | |
21 # Disable auto-status for some commands which assume that all | |
22 # files in the result are under Mercurial's control | |
23 | |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
24 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
|
25 overrides.overrideadd) |
15168 | 26 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
|
27 ('', 'normal', None, _('add as normal file')), |
15627
9d7a83a42f8c
largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents:
15383
diff
changeset
|
28 ('', 'lfsize', '', _('add all files above this size ' |
9d7a83a42f8c
largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents:
15383
diff
changeset
|
29 '(in megabytes) as largefiles ' |
9d7a83a42f8c
largefiles: fix indentation
Martin Geisler <mg@aragost.com>
parents:
15383
diff
changeset
|
30 '(default: 10)'))] |
15168 | 31 entry[1].extend(addopt) |
32 | |
33 entry = extensions.wrapcommand(commands.table, 'addremove', | |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
34 overrides.overrideaddremove) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
35 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
|
36 overrides.overrideremove) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
37 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
|
38 overrides.overrideforget) |
16515
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
39 |
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
40 # Subrepos call status function |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
41 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
|
42 overrides.overridestatus) |
16515
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
43 entry = extensions.wrapfunction(hgsubrepo, 'status', |
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
44 overrides.overridestatusfn) |
12dabc22de77
largefiles: fix status -S reporting of subrepos (issue3231)
Matt Harbison <matt_harbison@yahoo.com>
parents:
16449
diff
changeset
|
45 |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
46 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
|
47 overrides.overridelog) |
15168 | 48 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
|
49 overrides.overriderollback) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
50 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
|
51 overrides.overrideverify) |
15168 | 52 |
53 verifyopt = [('', 'large', None, _('verify largefiles')), | |
54 ('', 'lfa', None, | |
55 _('verify all revisions of largefiles not just current')), | |
56 ('', 'lfc', None, | |
57 _('verify largefile contents not just existence'))] | |
58 entry[1].extend(verifyopt) | |
59 | |
60 entry = extensions.wrapcommand(commands.table, 'outgoing', | |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
61 overrides.overrideoutgoing) |
15168 | 62 outgoingopt = [('', 'large', None, _('display outgoing largefiles'))] |
63 entry[1].extend(outgoingopt) | |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
64 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
|
65 overrides.overridesummary) |
15168 | 66 summaryopt = [('', 'large', None, _('display outgoing largefiles'))] |
67 entry[1].extend(summaryopt) | |
68 | |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
69 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
|
70 overrides.overrideupdate) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
71 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
|
72 overrides.overridepull) |
16439
290850e7aa43
largefiles: fix cat for largefiles (issue3352)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16247
diff
changeset
|
73 entry = extensions.wrapcommand(commands.table, 'cat', |
290850e7aa43
largefiles: fix cat for largefiles (issue3352)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16247
diff
changeset
|
74 overrides.overridecat) |
16093
7e30f5f2285f
merge: refactor unknown file conflict checking
Matt Mackall <mpm@selenic.com>
parents:
15944
diff
changeset
|
75 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
|
76 overrides.overridecheckunknownfile) |
15663
9036c7d106bf
largefiles: handle merges between normal files and largefiles (issue3084)
Martin Geisler <mg@aragost.com>
parents:
15383
diff
changeset
|
77 entry = extensions.wrapfunction(merge, 'manifestmerge', |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
78 overrides.overridemanifestmerge) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
79 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
|
80 overrides.overridefilemerge) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
81 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
|
82 overrides.overridecopy) |
15168 | 83 |
84 # Backout calls revert so we need to override both the command and the | |
85 # function | |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
86 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
|
87 overrides.overriderevert) |
15170
c1a4a3220711
largefiles: fix over-long lines
Matt Mackall <mpm@selenic.com>
parents:
15169
diff
changeset
|
88 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
|
89 overrides.overriderevert) |
15168 | 90 |
91 # clone uses hg._update instead of hg.update even though they are the | |
92 # same function... so wrap both of them) | |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
93 extensions.wrapfunction(hg, 'update', overrides.hgupdate) |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
94 extensions.wrapfunction(hg, '_update', overrides.hgupdate) |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
95 extensions.wrapfunction(hg, 'clean', overrides.hgclean) |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
96 extensions.wrapfunction(hg, 'merge', overrides.hgmerge) |
15168 | 97 |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
98 extensions.wrapfunction(archival, 'archive', overrides.overridearchive) |
15349
63455eb771af
largefiles: drop more unnecessary compatibility checks
Greg Ward <greg@gerg.ca>
parents:
15295
diff
changeset
|
99 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
|
100 overrides.overridebailifchanged) |
15168 | 101 |
102 # create the new wireproto commands ... | |
103 wireproto.commands['putlfile'] = (proto.putlfile, 'sha') | |
104 wireproto.commands['getlfile'] = (proto.getlfile, 'sha') | |
105 wireproto.commands['statlfile'] = (proto.statlfile, 'sha') | |
106 | |
107 # ... and wrap some existing ones | |
108 wireproto.commands['capabilities'] = (proto.capabilities, '') | |
109 wireproto.commands['heads'] = (proto.heads, '') | |
110 wireproto.commands['lheads'] = (wireproto.heads, '') | |
111 | |
15254
dd03d3a9f888
largefiles: more work on cleaning up comments
Greg Ward <greg@gerg.ca>
parents:
15252
diff
changeset
|
112 # 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
|
113 # the same as pull w.r.t. permissions checks |
15168 | 114 hgweb_mod.perms['putlfile'] = 'push' |
115 hgweb_mod.perms['getlfile'] = 'pull' | |
116 hgweb_mod.perms['statlfile'] = 'pull' | |
117 | |
16449
874a680a3e23
largefiles: hide .hglf/ prefix for largefiles in hgweb
Martin Geisler <mg@lazybytes.net>
parents:
16439
diff
changeset
|
118 extensions.wrapfunction(webcommands, 'decodepath', overrides.decodepath) |
874a680a3e23
largefiles: hide .hglf/ prefix for largefiles in hgweb
Martin Geisler <mg@lazybytes.net>
parents:
16439
diff
changeset
|
119 |
15168 | 120 # the hello wireproto command uses wireproto.capabilities, so it won't see |
121 # 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
|
122 proto.capabilitiesorig = wireproto.capabilities |
15168 | 123 wireproto.capabilities = proto.capabilities |
124 | |
15252
6e809bb4f969
largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents:
15188
diff
changeset
|
125 # these let us reject non-largefiles clients and make them display |
6e809bb4f969
largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents:
15188
diff
changeset
|
126 # our error messages |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
127 protocol.webproto.refuseclient = proto.webprotorefuseclient |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
128 sshserver.sshserver.refuseclient = proto.sshprotorefuseclient |
15168 | 129 |
130 # can't do this in reposetup because it needs to have happened before | |
131 # wirerepo.__init__ is called | |
16247
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
132 proto.ssholdcallstream = sshrepo.sshrepository._callstream |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
133 proto.httpoldcallstream = httprepo.httprepository._callstream |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
134 sshrepo.sshrepository._callstream = proto.sshrepocallstream |
d87d9d8a8e03
largefiles: remove use of underscores that breaks coding convention
Na'Tosha Bard <natosha@unity3d.com>
parents:
16093
diff
changeset
|
135 httprepo.httprepository._callstream = proto.httprepocallstream |
15168 | 136 |
137 # don't die on seeing a repo with the largefiles requirement | |
138 localrepo.localrepository.supported |= set(['largefiles']) | |
139 | |
140 # override some extensions' stuff as well | |
141 for name, module in extensions.extensions(): | |
142 if name == 'fetch': | |
143 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
|
144 overrides.overridefetch) |
15168 | 145 if name == 'purge': |
146 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
|
147 overrides.overridepurge) |
15168 | 148 if name == 'rebase': |
149 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
|
150 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
|
151 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
|
152 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
|
153 overrides.overridetransplant) |