From patchwork Tue Feb 11 05:57:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8031: copy: rewrite walkpat() to depend less on dirstate From: phabricator X-Patchwork-Id: 45167 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 11 Feb 2020 05:57:35 +0000 martinvonz updated this revision to Diff 20150. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D8031?vs=20083&id=20150 BRANCH default CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8031/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8031 AFFECTED FILES mercurial/cmdutil.py CHANGE DETAILS To: martinvonz, #hg-reviewers, marmoute Cc: marmoute, mercurial-devel diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1422,6 +1422,7 @@ after = opts.get(b"after") dryrun = opts.get(b"dry_run") wctx = repo[None] + pctx = wctx.p1() uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=True) @@ -1481,27 +1482,29 @@ def walkpat(pat): srcs = [] - if after: - badstates = b'?' - else: - badstates = b'?r' m = scmutil.match(wctx, [pat], opts, globbed=True) for abs in wctx.walk(m): - state = repo.dirstate[abs] rel = uipathfn(abs) exact = m.exact(abs) - if state in badstates: - if exact and state == b'?': - ui.warn(_(b'%s: not copying - file is not managed\n') % rel) - if exact and state == b'r': - ui.warn( - _( - b'%s: not copying - file has been marked for' - b' remove\n' + if abs not in wctx: + if abs in pctx: + if not after: + if exact: + ui.warn( + _( + b'%s: not copying - file has been marked ' + b'for remove\n' + ) + % rel + ) + continue + else: + if exact: + ui.warn( + _(b'%s: not copying - file is not managed\n') % rel ) - % rel - ) - continue + continue + # abs: hgsep # rel: ossep srcs.append((abs, rel, exact))