Show More
@@ -49,6 +49,7 b' from mercurial import (' | |||
|
49 | 49 | scmutil, |
|
50 | 50 | upgrade, |
|
51 | 51 | vfs as vfsmod, |
|
52 | wireproto, | |
|
52 | 53 | ) |
|
53 | 54 | |
|
54 | 55 | from . import ( |
@@ -169,6 +170,9 b' def extsetup(ui):' | |||
|
169 | 170 | 'allsupportedversions', |
|
170 | 171 | wrapper.allsupportedversions) |
|
171 | 172 | |
|
173 | wrapfunction(exchange, 'push', wrapper.push) | |
|
174 | wrapfunction(wireproto, '_capabilities', wrapper._capabilities) | |
|
175 | ||
|
172 | 176 | wrapfunction(context.basefilectx, 'cmp', wrapper.filectxcmp) |
|
173 | 177 | wrapfunction(context.basefilectx, 'isbinary', wrapper.filectxisbinary) |
|
174 | 178 | context.basefilectx.islfs = wrapper.filectxislfs |
@@ -39,6 +39,13 b' def allsupportedversions(orig, ui):' | |||
|
39 | 39 | versions.add('03') |
|
40 | 40 | return versions |
|
41 | 41 | |
|
42 | def _capabilities(orig, repo, proto): | |
|
43 | '''Wrap server command to announce lfs server capability''' | |
|
44 | caps = orig(repo, proto) | |
|
45 | # XXX: change to 'lfs=serve' when separate git server isn't required? | |
|
46 | caps.append('lfs') | |
|
47 | return caps | |
|
48 | ||
|
42 | 49 | def bypasscheckhash(self, text): |
|
43 | 50 | return False |
|
44 | 51 | |
@@ -265,6 +272,20 b' def prepush(pushop):' | |||
|
265 | 272 | """ |
|
266 | 273 | return uploadblobsfromrevs(pushop.repo, pushop.outgoing.missing) |
|
267 | 274 | |
|
275 | def push(orig, repo, remote, *args, **kwargs): | |
|
276 | """bail on push if the extension isn't enabled on remote when needed""" | |
|
277 | if 'lfs' in repo.requirements: | |
|
278 | # If the remote peer is for a local repo, the requirement tests in the | |
|
279 | # base class method enforce lfs support. Otherwise, some revisions in | |
|
280 | # this repo use lfs, and the remote repo needs the extension loaded. | |
|
281 | if not remote.local() and not remote.capable('lfs'): | |
|
282 | # This is a copy of the message in exchange.push() when requirements | |
|
283 | # are missing between local repos. | |
|
284 | m = _("required features are not supported in the destination: %s") | |
|
285 | raise error.Abort(m % 'lfs', | |
|
286 | hint=_('enable the lfs extension on the server')) | |
|
287 | return orig(repo, remote, *args, **kwargs) | |
|
288 | ||
|
268 | 289 | def writenewbundle(orig, ui, repo, source, filename, bundletype, outgoing, |
|
269 | 290 | *args, **kwargs): |
|
270 | 291 | """upload LFS blobs added by outgoing revisions on 'hg bundle'""" |
@@ -124,10 +124,14 b" should have an 'lfs' requirement after i" | |||
|
124 | 124 | $ grep 'lfs' .hg/requires $SERVER_REQUIRES |
|
125 | 125 | .hg/requires:lfs |
|
126 | 126 | |
|
127 | TODO: fail more gracefully here | |
|
128 | $ hg push -q 2>&1 | grep '^[A-Z]' || true | |
|
129 | Traceback (most recent call last): (lfsremote-off !) | |
|
130 | ValueError: no common changegroup version (lfsremote-off !) | |
|
127 | #if lfsremote-off | |
|
128 | $ hg push -q | |
|
129 | abort: required features are not supported in the destination: lfs | |
|
130 | (enable the lfs extension on the server) | |
|
131 | [255] | |
|
132 | #else | |
|
133 | $ hg push -q | |
|
134 | #endif | |
|
131 | 135 |
$ |
|
132 | 136 | .hg/requires:lfs |
|
133 | 137 |
$ |
General Comments 0
You need to be logged in to leave comments.
Login now