Skip to content

Commit c8998b4

Browse files
schacongitster
authored andcommitted
mergetool--lib: add p4merge as a pre-configured mergetool option
Add p4merge to the set of built-in diff/merge tools, and update bash completion and documentation. Signed-off-by: Scott Chacon <schacon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent cd0f8e6 commit c8998b4

File tree

5 files changed

+19
-6
lines changed

5 files changed

+19
-6
lines changed

Documentation/git-difftool.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ OPTIONS
3131
Use the diff tool specified by <tool>.
3232
Valid merge tools are:
3333
kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
34-
ecmerge, diffuse, opendiff and araxis.
34+
ecmerge, diffuse, opendiff, p4merge and araxis.
3535
+
3636
If a diff tool is not specified, 'git-difftool'
3737
will use the configuration variable `diff.tool`. If the

Documentation/git-mergetool.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ OPTIONS
2727
Use the merge resolution program specified by <tool>.
2828
Valid merge tools are:
2929
kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
30-
diffuse, tortoisemerge, opendiff and araxis.
30+
diffuse, tortoisemerge, opendiff, p4merge and araxis.
3131
+
3232
If a merge resolution program is not specified, 'git-mergetool'
3333
will use the configuration variable `merge.tool`. If the

Documentation/merge-config.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ merge.tool::
2323
Controls which merge resolution program is used by
2424
linkgit:git-mergetool[1]. Valid built-in values are: "kdiff3",
2525
"tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
26-
"diffuse", "ecmerge", "tortoisemerge", "araxis", and
26+
"diffuse", "ecmerge", "tortoisemerge", "p4merge", "araxis" and
2727
"opendiff". Any other value is treated is custom merge tool
2828
and there must be a corresponding mergetool.<tool>.cmd option.
2929

contrib/completion/git-completion.bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ _git_diff ()
953953
}
954954

955955
__git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
956-
tkdiff vimdiff gvimdiff xxdiff araxis
956+
tkdiff vimdiff gvimdiff xxdiff araxis p4merge
957957
"
958958

959959
_git_difftool ()

git-mergetool--lib.sh

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ check_unchanged () {
4646
valid_tool () {
4747
case "$1" in
4848
kdiff3 | tkdiff | xxdiff | meld | opendiff | \
49-
emerge | vimdiff | gvimdiff | ecmerge | diffuse | araxis)
49+
emerge | vimdiff | gvimdiff | ecmerge | diffuse | araxis | p4merge)
5050
;; # happy
5151
tortoisemerge)
5252
if ! merge_mode; then
@@ -130,6 +130,19 @@ run_merge_tool () {
130130
"$merge_tool_path" "$LOCAL" "$REMOTE"
131131
fi
132132
;;
133+
p4merge)
134+
if merge_mode; then
135+
touch "$BACKUP"
136+
if $base_present; then
137+
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
138+
else
139+
"$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
140+
fi
141+
check_unchanged
142+
else
143+
"$merge_tool_path" "$LOCAL" "$REMOTE"
144+
fi
145+
;;
133146
meld)
134147
if merge_mode; then
135148
touch "$BACKUP"
@@ -323,7 +336,7 @@ guess_merge_tool () {
323336
else
324337
tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
325338
fi
326-
tools="$tools gvimdiff diffuse ecmerge araxis"
339+
tools="$tools gvimdiff diffuse ecmerge p4merge araxis"
327340
fi
328341
if echo "${VISUAL:-$EDITOR}" | grep emacs > /dev/null 2>&1; then
329342
# $EDITOR is emacs so add emerge as a candidate

0 commit comments

Comments
 (0)