Reorganize get_filechanges

So it's more extensible.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
This commit is contained in:
Felipe Contreras
2023-03-20 01:44:13 -06:00
parent 740c681c1d
commit 4ad9c8d70c

View File

@@ -309,25 +309,30 @@ def export_files(files):
return final
def get_filechanges(repo, ctx, parent):
modified = set()
added = set()
removed = set()
def get_filechanges(repo, ctx, parents, files):
if not parents:
modified = files
removed = []
return modified, removed
else:
modified = set()
added = set()
removed = set()
# load earliest manifest first for caching reasons
prev = parent.manifest().copy()
cur = ctx.manifest()
# load earliest manifest first for caching reasons
prev = parents[0].manifest().copy()
cur = ctx.manifest()
for fn in cur:
if fn in prev:
if (cur.flags(fn) != prev.flags(fn) or cur[fn] != prev[fn]):
modified.add(fn)
del prev[fn]
else:
added.add(fn)
removed |= set(prev.keys())
for fn in cur:
if fn in prev:
if (cur.flags(fn) != prev.flags(fn) or cur[fn] != prev[fn]):
modified.add(fn)
del prev[fn]
else:
added.add(fn)
removed |= set(prev.keys())
return added | modified, removed
return added | modified, removed
def fixup_user_git(user):
name = mail = None
@@ -506,11 +511,7 @@ def export_ref(repo, name, kind, head):
parents = [repo[p] for p in repo.changelog.parentrevs(rev) if p >= 0]
if not parents:
modified = files
removed = []
else:
modified, removed = get_filechanges(repo, c, parents[0])
modified, removed = get_filechanges(repo, c, parents, files)
desc += b'\n'