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