mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
filemerge: return whether the file is deleted for nomerge internal tools
We're going to support the filemerge code resolving change/delete conflicts in upcoming patches. Some of these resolutions require that the dirstate be modified. Modifying the dirstate directly from in here would be (a) a pretty bad layering violation and (b) wrong because all dirstate removals should happen before adds. So in this and upcoming patches we're instead going to pass whether the file is deleted up to merge.mergestate, then in there figure out what dirstate action needs to be taken.
This commit is contained in:
parent
c5b488f2d2
commit
4155f9cde2
@ -232,18 +232,18 @@ def _iprompt(repo, mynode, orig, fcd, fco, fca, toolconf):
|
||||
return _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf)
|
||||
except error.ResponseExpected:
|
||||
ui.write("\n")
|
||||
return 1
|
||||
return 1, False
|
||||
|
||||
@internaltool('local', nomerge)
|
||||
def _ilocal(repo, mynode, orig, fcd, fco, fca, toolconf):
|
||||
"""Uses the local version of files as the merged version."""
|
||||
return 0
|
||||
return 0, False
|
||||
|
||||
@internaltool('other', nomerge)
|
||||
def _iother(repo, mynode, orig, fcd, fco, fca, toolconf):
|
||||
"""Uses the other version of files as the merged version."""
|
||||
repo.wwrite(fcd.path(), fco.data(), fco.flags())
|
||||
return 0
|
||||
return 0, False
|
||||
|
||||
@internaltool('fail', nomerge)
|
||||
def _ifail(repo, mynode, orig, fcd, fco, fca, toolconf):
|
||||
@ -251,7 +251,7 @@ def _ifail(repo, mynode, orig, fcd, fco, fca, toolconf):
|
||||
Rather than attempting to merge files that were modified on both
|
||||
branches, it marks them as unresolved. The resolve command must be
|
||||
used to resolve these conflicts."""
|
||||
return 1
|
||||
return 1, False
|
||||
|
||||
def _premerge(repo, toolconf, files, labels=None):
|
||||
tool, toolpath, binary, symlink = toolconf
|
||||
@ -536,7 +536,8 @@ def _filemerge(premerge, repo, mynode, orig, fcd, fco, fca, labels=None):
|
||||
toolconf = tool, toolpath, binary, symlink
|
||||
|
||||
if mergetype == nomerge:
|
||||
return True, func(repo, mynode, orig, fcd, fco, fca, toolconf)
|
||||
r, deleted = func(repo, mynode, orig, fcd, fco, fca, toolconf)
|
||||
return True, r
|
||||
|
||||
if premerge:
|
||||
if orig != fco.path():
|
||||
|
Loading…
Reference in New Issue
Block a user