Mercurial > public > mercurial-scm > hg-stable
diff hgext/lfs/blobstore.py @ 37563:be1cc65bdb1c
lfs: infer the blob store URL from an explicit pull source
I don't see any easier way to do this because the update part of `hg pull -u`
happens outside exchange.pull(), and commands.postincoming() doesn't take a
path. So (ab)use the mechanism used by subrepos to redirect where subrepos are
pulled from when an explicit path is given. As a bonus, this should allow lfs
blobs to be pulled into a subrepo when it is checked out.
An explicit push path can be handled within exchange.push(). That can be done
next, outside of this dirty hack.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 08 Apr 2018 01:23:39 -0400 |
parents | e5cd8d1a094d |
children | 31a4ea773369 |
line wrap: on
line diff
--- a/hgext/lfs/blobstore.py Wed Apr 11 17:29:55 2018 -0400 +++ b/hgext/lfs/blobstore.py Sun Apr 08 01:23:39 2018 -0400 @@ -541,9 +541,15 @@ """ url = util.url(repo.ui.config('lfs', 'url') or '') if url.scheme is None: - # TODO: investigate 'paths.remote:lfsurl' style path customization, - # and fall back to inferring from 'paths.remote' if unspecified. - defaulturl = util.url(repo.ui.config('paths', 'default') or b'') + if util.safehasattr(repo, '_subtoppath'): + # The pull command sets this during the optional update phase, which + # tells exactly where the pull originated, whether 'paths.default' + # or explicit. + defaulturl = util.url(repo._subtoppath) + else: + # TODO: investigate 'paths.remote:lfsurl' style path customization, + # and fall back to inferring from 'paths.remote' if unspecified. + defaulturl = util.url(repo.ui.config('paths', 'default') or b'') # TODO: support local paths as well. # TODO: consider the ssh -> https transformation that git applies