Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commit.py @ 45352:027f3dd76302
commitctx: directly updated the set of removed files
The change is non-trivial so I made it in its own changeset.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 28 Jul 2020 20:19:09 +0200 |
parents | a852e5058e69 |
children | 54eeb1a0e325 |
comparison
equal
deleted
inserted
replaced
45351:a852e5058e69 | 45352:027f3dd76302 |
---|---|
189 errcode = getattr(inst, 'errno', errno.ENOENT) | 189 errcode = getattr(inst, 'errno', errno.ENOENT) |
190 if error or errcode and errcode != errno.ENOENT: | 190 if error or errcode and errcode != errno.ENOENT: |
191 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) | 191 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) |
192 raise | 192 raise |
193 | 193 |
194 files = metadata.ChangingFiles(touched=touched, added=filesadded) | |
194 # update manifest | 195 # update manifest |
195 removed = [f for f in removed if f in m1 or f in m2] | 196 removed = [f for f in removed if f in m1 or f in m2] |
196 drop = sorted([f for f in removed if f in m]) | 197 drop = sorted([f for f in removed if f in m]) |
197 for f in drop: | 198 for f in drop: |
198 del m[f] | 199 del m[f] |
199 if p2.rev() != nullrev: | 200 if p2.rev() == nullrev: |
201 files.update_removed(removed) | |
202 else: | |
200 rf = metadata.get_removal_filter(ctx, (p1, p2, m1, m2)) | 203 rf = metadata.get_removal_filter(ctx, (p1, p2, m1, m2)) |
201 removed = [f for f in removed if not rf(f)] | 204 for f in removed: |
202 | 205 if not rf(f): |
203 touched.extend(removed) | 206 files.mark_removed(f) |
204 | 207 |
205 files = metadata.ChangingFiles( | |
206 touched=touched, added=filesadded, removed=removed | |
207 ) | |
208 mn = _commit_manifest(tr, linkrev, ctx, mctx, m, files.touched, added, drop) | 208 mn = _commit_manifest(tr, linkrev, ctx, mctx, m, files.touched, added, drop) |
209 | 209 |
210 return mn, files | 210 return mn, files |
211 | 211 |
212 | 212 |