large-files: larger "changing_parents" context in mergeupdate override
This since we are updating the lfdirstate early, it seems reasonable to include
the full function in that scope.
--- a/hgext/largefiles/overrides.py Sun Feb 19 03:14:44 2023 +0100
+++ b/hgext/largefiles/overrides.py Tue Feb 21 00:32:40 2023 +0100
@@ -1769,7 +1769,7 @@
matcher = kwargs.get('matcher', None)
# note if this is a partial update
partial = matcher and not matcher.always()
- with repo.wlock():
+ with repo.wlock(), repo.dirstate.changing_parents(repo):
# branch | | |
# merge | force | partial | action
# -------+-------+---------+--------------
@@ -1837,24 +1837,22 @@
raise error.ProgrammingError(
b'largefiles is not compatible with in-memory merge'
)
- with repo.dirstate.changing_parents(repo):
- lfdirstate = lfutil.openlfdirstate(repo.ui, repo)
- result = orig(repo, node, branchmerge, force, *args, **kwargs)
+ result = orig(repo, node, branchmerge, force, *args, **kwargs)
- newstandins = lfutil.getstandinsstate(repo)
- filelist = lfutil.getlfilestoupdate(oldstandins, newstandins)
+ newstandins = lfutil.getstandinsstate(repo)
+ filelist = lfutil.getlfilestoupdate(oldstandins, newstandins)
- # to avoid leaving all largefiles as dirty and thus rehash them, mark
- # all the ones that didn't change as clean
- for lfile in oldclean.difference(filelist):
- lfdirstate.update_file(lfile, p1_tracked=True, wc_tracked=True)
+ # to avoid leaving all largefiles as dirty and thus rehash them, mark
+ # all the ones that didn't change as clean
+ for lfile in oldclean.difference(filelist):
+ lfdirstate.update_file(lfile, p1_tracked=True, wc_tracked=True)
- if branchmerge or force or partial:
- filelist.extend(s.deleted + s.removed)
+ if branchmerge or force or partial:
+ filelist.extend(s.deleted + s.removed)
- lfcommands.updatelfiles(
- repo.ui, repo, filelist=filelist, normallookup=partial
- )
+ lfcommands.updatelfiles(
+ repo.ui, repo, filelist=filelist, normallookup=partial
+ )
return result