Mercurial > hg
changeset 35062:1706eae096e2
patch: accept prefix argument to changedfiles() helper
I'd like to call the function from an extension, passing both "strip"
and "prefix", but it currently only accepts "strip". The only in-tree
caller seems to be mq.py, which doesn't even pass "strip".
Differential Revision: https://phab.mercurial-scm.org/D1413
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 14 Nov 2017 10:26:36 -0800 |
parents | e9a8a941950a |
children | 52790352dd05 |
files | mercurial/patch.py |
diffstat | 1 files changed, 14 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/patch.py Wed Nov 15 19:36:16 2017 +0800 +++ b/mercurial/patch.py Tue Nov 14 10:26:36 2017 -0800 @@ -1990,14 +1990,16 @@ return _applydiff(ui, fp, patchfile, backend, store, strip=strip, prefix=prefix, eolmode=eolmode) +def _canonprefix(repo, prefix): + if prefix: + prefix = pathutil.canonpath(repo.root, repo.getcwd(), prefix) + if prefix != '': + prefix += '/' + return prefix + def _applydiff(ui, fp, patcher, backend, store, strip=1, prefix='', eolmode='strict'): - - if prefix: - prefix = pathutil.canonpath(backend.repo.root, backend.repo.getcwd(), - prefix) - if prefix != '': - prefix += '/' + prefix = _canonprefix(backend.repo, prefix) def pstrip(p): return pathtransform(p, strip - 1, prefix)[1] @@ -2183,20 +2185,22 @@ return internalpatch(ui, repo, patchname, strip, prefix, files, eolmode, similarity) -def changedfiles(ui, repo, patchpath, strip=1): +def changedfiles(ui, repo, patchpath, strip=1, prefix=''): backend = fsbackend(ui, repo.root) + prefix = _canonprefix(repo, prefix) with open(patchpath, 'rb') as fp: changed = set() for state, values in iterhunks(fp): if state == 'file': afile, bfile, first_hunk, gp = values if gp: - gp.path = pathtransform(gp.path, strip - 1, '')[1] + gp.path = pathtransform(gp.path, strip - 1, prefix)[1] if gp.oldpath: - gp.oldpath = pathtransform(gp.oldpath, strip - 1, '')[1] + gp.oldpath = pathtransform(gp.oldpath, strip - 1, + prefix)[1] else: gp = makepatchmeta(backend, afile, bfile, first_hunk, strip, - '') + prefix) changed.add(gp.path) if gp.op == 'RENAME': changed.add(gp.oldpath)