summaryrefslogtreecommitdiff
path: root/mergetools
diff options
context:
space:
mode:
authorSeth House <seth@eseth.com>2021-02-14 02:28:40 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-02-23 19:37:13 (GMT)
commit30bb8088afd4502acd2e166ddf7e4b071e53b86d (patch)
tree5746e0530148de1814dfde127a06f66846231e0f /mergetools
parent966e671106b2fd38301e7c344c754fd118d0bb07 (diff)
downloadgit-30bb8088afd4502acd2e166ddf7e4b071e53b86d.zip
git-30bb8088afd4502acd2e166ddf7e4b071e53b86d.tar.gz
git-30bb8088afd4502acd2e166ddf7e4b071e53b86d.tar.bz2
mergetools/vimdiff: add vimdiff1 merge tool variant
This adds yet another vimdiff/gvimdiff variant and presents conflicts as a two-way diff between 'LOCAL' and 'REMOTE'. 'MERGED' is not opened which deviates from the norm so usage text is echoed as a Vim message on startup that instructs the user with how to proceed and how to abort. Vimdiff is well-suited to two-way diffs so this is an option for a more simple, more streamlined conflict resolution. For example: it is difficult to communicate differences across more than two files using only syntax highlighting; default vimdiff commands to get and put changes between buffers do not need the user to manually specify a source or destination buffer when only using two buffers. Like other merge tools that directly compare 'LOCAL' with 'REMOTE', this tool will benefit when paired with the new `mergetool.hideResolved` setting. Signed-off-by: Seth House <seth@eseth.com> Tested-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'mergetools')
-rw-r--r--mergetools/vimdiff13
1 files changed, 12 insertions, 1 deletions
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index abc8ce4..96f6209 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -15,6 +15,17 @@ merge_cmd () {
"$LOCAL" "$MERGED" "$REMOTE"
fi
;;
+ *vimdiff1)
+ "$merge_tool_path" -f -d \
+ -c 'echon "Resolve conflicts leftward then save. Use :cq to abort."' \
+ "$LOCAL" "$REMOTE"
+ ret="$?"
+ if test "$ret" -eq 0
+ then
+ cp -- "$LOCAL" "$MERGED"
+ fi
+ return "$ret"
+ ;;
*vimdiff2)
"$merge_tool_path" -f -d -c 'wincmd l' \
"$LOCAL" "$MERGED" "$REMOTE"
@@ -52,7 +63,7 @@ exit_code_trustable () {
list_tool_variants () {
for prefix in '' g n; do
- for suffix in '' 2 3; do
+ for suffix in '' 1 2 3; do
echo "${prefix}vimdiff${suffix}"
done
done