Mercurial > hg
view tests/readlink.py @ 47372:9e6e12e1a87e
merge: make applyupdates() not mutate mresult argument
We have an extension at work that overrides `merge.applyupdates()` to
make it skip some writes and instead instruct the virtual filesystem
we use to get a different version. That override doesn't work
correctly when doing `hg co -m` and there's a modified file in the
dirstate that's deleted in the destination. That's because
`applyupdates()` mutates its `mresult` argument and our extension had
passed in a modified copied of `mresult` to the overridden function,
which resulted in the mutation not having any effect. This patch fixes
that by letting the caller (i.e. `merge._update()`) update `mresult`
with the extra actions instead. Besides fixing our internal extension,
that seems cleaner to me anyway (better to not mutate `mresult` only
in some cases and we can skip some of the logic if we're not going to
update the dirstate anyway).
Differential Revision: https://phab.mercurial-scm.org/D10830
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 01 Jun 2021 15:19:08 -0700 |
parents | c102b704edb5 |
children | 6000f5b25c9b |
line wrap: on
line source
#!/usr/bin/env python3 from __future__ import absolute_import, print_function import errno import os import sys for f in sys.argv[1:]: try: print(f, '->', os.readlink(f)) except OSError as err: if err.errno != errno.EINVAL: raise print(f, '->', f, 'not a symlink') sys.exit(0)