Mercurial > hg-stable
comparison mercurial/metadata.py @ 45666:f6811e5bd994
changing-files: add clean computation of changed files for roots
The `files` field is not reliable, so we need to compute things from scratch. We
start with the simplest case root changesets. In the beginning they was nothing,
then user said "let there be files" and there were added files.
Differential Revision: https://phab.mercurial-scm.org/D9126
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 29 Sep 2020 22:38:08 +0200 |
parents | cf474af69766 |
children | 0303fc1f43f8 |
comparison
equal
deleted
inserted
replaced
45665:308ca5528ee6 | 45666:f6811e5bd994 |
---|---|
224 self.mark_copied_from_p2(source, dest) | 224 self.mark_copied_from_p2(source, dest) |
225 | 225 |
226 | 226 |
227 def compute_all_files_changes(ctx): | 227 def compute_all_files_changes(ctx): |
228 """compute the files changed by a revision""" | 228 """compute the files changed by a revision""" |
229 p1 = ctx.p1() | |
230 p2 = ctx.p2() | |
231 if p1.rev() == node.nullrev and p2.rev() == node.nullrev: | |
232 return _process_root(ctx) | |
229 filescopies = computechangesetcopies(ctx) | 233 filescopies = computechangesetcopies(ctx) |
230 filesadded = computechangesetfilesadded(ctx) | 234 filesadded = computechangesetfilesadded(ctx) |
231 filesremoved = computechangesetfilesremoved(ctx) | 235 filesremoved = computechangesetfilesremoved(ctx) |
232 filesmerged = computechangesetfilesmerged(ctx) | 236 filesmerged = computechangesetfilesmerged(ctx) |
233 files = ChangingFiles() | 237 files = ChangingFiles() |
236 files.update_removed(filesremoved) | 240 files.update_removed(filesremoved) |
237 files.update_merged(filesmerged) | 241 files.update_merged(filesmerged) |
238 files.update_copies_from_p1(filescopies[0]) | 242 files.update_copies_from_p1(filescopies[0]) |
239 files.update_copies_from_p2(filescopies[1]) | 243 files.update_copies_from_p2(filescopies[1]) |
240 return files | 244 return files |
245 | |
246 | |
247 def _process_root(ctx): | |
248 """compute the appropriate changed files for a changeset with no parents | |
249 """ | |
250 # Simple, there was nothing before it, so everything is added. | |
251 md = ChangingFiles() | |
252 manifest = ctx.manifest() | |
253 for filename in manifest: | |
254 md.mark_added(filename) | |
255 return md | |
241 | 256 |
242 | 257 |
243 def computechangesetfilesadded(ctx): | 258 def computechangesetfilesadded(ctx): |
244 """return the list of files added in a changeset | 259 """return the list of files added in a changeset |
245 """ | 260 """ |