From patchwork Wed Jul 29 16:57:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [14,of,15] commitctx: directly updated the set of removed files From: Pierre-Yves David X-Patchwork-Id: 46927 Message-Id: <8a38230c8e7b189066e0.1596041864@nodosa.octobus.net> To: mercurial-devel@mercurial-scm.org Date: Wed, 29 Jul 2020 18:57:44 +0200 # HG changeset patch # User Pierre-Yves David # Date 1595960349 -7200 # Tue Jul 28 20:19:09 2020 +0200 # Node ID 8a38230c8e7b189066e0d58d8134228917368fd7 # Parent d1faf95bdf57bf8d1054b2ea717d24052a7692c1 # EXP-Topic files-change # Available At https://foss.heptapod.net/octobus/mercurial-devel/ # hg pull https://foss.heptapod.net/octobus/mercurial-devel/ -r 8a38230c8e7b commitctx: directly updated the set of removed files The change is non-trivial so I made it in its own changeset. diff --git a/mercurial/commit.py b/mercurial/commit.py --- a/mercurial/commit.py +++ b/mercurial/commit.py @@ -191,20 +191,20 @@ def _process_files(tr, ctx, error=False) repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) raise + files = metadata.ChangingFiles(touched=touched, added=filesadded) # update manifest removed = [f for f in removed if f in m1 or f in m2] drop = sorted([f for f in removed if f in m]) for f in drop: del m[f] - if p2.rev() != nullrev: + if p2.rev() == nullrev: + files.update_removed(removed) + else: rf = metadata.get_removal_filter(ctx, (p1, p2, m1, m2)) - removed = [f for f in removed if not rf(f)] + for f in removed: + if not rf(f): + files.mark_removed(f) - touched.extend(removed) - - files = metadata.ChangingFiles( - touched=touched, added=filesadded, removed=removed - ) mn = _commit_manifest(tr, linkrev, ctx, mctx, m, files.touched, added, drop) return mn, files