Mercurial > hg
comparison mercurial/commit.py @ 45332:54eeb1a0e325
commitctx: directly update the touched and added set of files
Instead of going through intermediate variable, we can simply use the
ChangingFiles object. The object will take care of the consistency.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 28 Jul 2020 20:21:06 +0200 |
parents | 027f3dd76302 |
children | 0652a533fe3c |
comparison
equal
deleted
inserted
replaced
45331:027f3dd76302 | 45332:54eeb1a0e325 |
---|---|
156 | 156 |
157 m = mctx.read() | 157 m = mctx.read() |
158 m1 = m1ctx.read() | 158 m1 = m1ctx.read() |
159 m2 = m2ctx.read() | 159 m2 = m2ctx.read() |
160 | 160 |
161 files = metadata.ChangingFiles() | |
162 | |
161 # check in files | 163 # check in files |
162 added = [] | 164 added = [] |
163 filesadded = [] | |
164 removed = list(ctx.removed()) | 165 removed = list(ctx.removed()) |
165 touched = [] | |
166 linkrev = len(repo) | 166 linkrev = len(repo) |
167 repo.ui.note(_(b"committing files:\n")) | 167 repo.ui.note(_(b"committing files:\n")) |
168 uipathfn = scmutil.getuipathfn(repo) | 168 uipathfn = scmutil.getuipathfn(repo) |
169 for f in sorted(ctx.modified() + ctx.added()): | 169 for f in sorted(ctx.modified() + ctx.added()): |
170 repo.ui.note(uipathfn(f) + b"\n") | 170 repo.ui.note(uipathfn(f) + b"\n") |
176 added.append(f) | 176 added.append(f) |
177 m[f], is_touched = _filecommit( | 177 m[f], is_touched = _filecommit( |
178 repo, fctx, m1, m2, linkrev, tr, writefilecopymeta, | 178 repo, fctx, m1, m2, linkrev, tr, writefilecopymeta, |
179 ) | 179 ) |
180 if is_touched: | 180 if is_touched: |
181 touched.append(f) | |
182 if is_touched == 'added': | 181 if is_touched == 'added': |
183 filesadded.append(f) | 182 files.mark_added(f) |
183 else: | |
184 files.mark_touched(f) | |
184 m.setflag(f, fctx.flags()) | 185 m.setflag(f, fctx.flags()) |
185 except OSError: | 186 except OSError: |
186 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) | 187 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) |
187 raise | 188 raise |
188 except IOError as inst: | 189 except IOError as inst: |
189 errcode = getattr(inst, 'errno', errno.ENOENT) | 190 errcode = getattr(inst, 'errno', errno.ENOENT) |
190 if error or errcode and errcode != errno.ENOENT: | 191 if error or errcode and errcode != errno.ENOENT: |
191 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) | 192 repo.ui.warn(_(b"trouble committing %s!\n") % uipathfn(f)) |
192 raise | 193 raise |
193 | 194 |
194 files = metadata.ChangingFiles(touched=touched, added=filesadded) | |
195 # update manifest | 195 # update manifest |
196 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] |
197 drop = sorted([f for f in removed if f in m]) | 197 drop = sorted([f for f in removed if f in m]) |
198 for f in drop: | 198 for f in drop: |
199 del m[f] | 199 del m[f] |