[Updated] D12193: filemerge: make `_maketempfiles()` more reusable
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Wed Feb 16 10:31:34 UTC 2022
Closed by commit rHGf90337706ce7: filemerge: make `_maketempfiles()` more reusable (authored by martinvonz).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D12193?vs=32231&id=32250
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D12193/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D12193
AFFECTED FILES
mercurial/filemerge.py
CHANGE DETAILS
diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -742,20 +742,26 @@
return False, 1, None
localpath = _workingpath(repo, fcd)
args = _toolstr(repo.ui, tool, b"args")
- localoutputpath = None
+
+ files = [
+ (b"base", fca.path(), fca.decodeddata()),
+ (b"other", fco.path(), fco.decodeddata()),
+ ]
+ outpath = b""
if b"$output" in args:
+ # read input from backup, write to original
+ outpath = localpath
localoutputpath = backup.path()
# Remove the .orig to make syntax-highlighting more likely.
if localoutputpath.endswith(b'.orig'):
localoutputpath, ext = os.path.splitext(localoutputpath)
+ localdata = util.readfile(localpath)
+ files.append((b"local", localoutputpath, localdata))
- with _maketempfiles(
- fco,
- fca,
- localoutputpath,
- ) as temppaths:
- basepath, otherpath, localoutputpath = temppaths
- outpath = b""
+ with _maketempfiles(files) as temppaths:
+ basepath, otherpath = temppaths[:2]
+ if len(temppaths) == 3:
+ localpath = temppaths[2]
def format_label(input):
if input.label_detail:
@@ -777,10 +783,6 @@
}
ui = repo.ui
- if b"$output" in args:
- # read input from backup, write to original
- outpath = localpath
- localpath = localoutputpath
replace = {
b'local': localpath,
b'base': basepath,
@@ -915,10 +917,9 @@
@contextlib.contextmanager
-def _maketempfiles(fco, fca, localpath):
- """Writes out `fco` and `fca` as temporary files, and (if localpath is not
- None) copies `localpath` to another temporary file, so an external merge
- tool may use them.
+def _maketempfiles(files):
+ """Creates a temporary file for each (prefix, path, data) tuple in `files`,
+ so an external merge tool may use them.
"""
tmproot = pycompat.mkdtemp(prefix=b'hgmerge-')
@@ -931,18 +932,11 @@
util.writefile(name, data)
return name
- def tempfromcontext(prefix, ctx):
- return maketempfrompath(prefix, ctx.path(), ctx.decodeddata())
-
- b = tempfromcontext(b"base", fca)
- c = tempfromcontext(b"other", fco)
- d = localpath
- if localpath is not None:
- data = util.readfile(localpath)
- d = maketempfrompath(b"local", localpath, data)
-
+ temp_files = []
+ for prefix, path, data in files:
+ temp_files.append(maketempfrompath(prefix, path, data))
try:
- yield b, c, d
+ yield temp_files
finally:
shutil.rmtree(tmproot)
To: martinvonz, #hg-reviewers, Alphare
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20220216/34697a2a/attachment-0002.html>
More information about the Mercurial-patches
mailing list