git-mergetool-lib provides common merge tool functions. Signed-off-by: David Aguilar <davvid@xxxxxxxxx> --- .gitignore | 1 + Documentation/git-mergetool-lib.txt | 42 +++++++++++++++++++++++++++++++++++ Makefile | 1 + command-list.txt | 1 + git-mergetool-lib.sh | 41 ++++++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+), 0 deletions(-) create mode 100644 Documentation/git-mergetool-lib.txt create mode 100644 git-mergetool-lib.sh diff --git a/.gitignore b/.gitignore index 966c886..75c154a 100644 --- a/.gitignore +++ b/.gitignore @@ -80,6 +80,7 @@ git-merge-recursive git-merge-resolve git-merge-subtree git-mergetool +git-mergetool-lib git-mktag git-mktree git-name-rev diff --git a/Documentation/git-mergetool-lib.txt b/Documentation/git-mergetool-lib.txt new file mode 100644 index 0000000..a8d62f5 --- /dev/null +++ b/Documentation/git-mergetool-lib.txt @@ -0,0 +1,42 @@ +git-mergetool-lib(1) +==================== + +NAME +---- +git-mergetool-lib - Common git merge tool shell scriptlets + +SYNOPSIS +-------- +'. "$(git --exec-path)/git-mergetool-lib"' + +DESCRIPTION +----------- + +This is not a command the end user would want to run. Ever. +This documentation is meant for people who are studying the +Porcelain-ish scripts and/or are writing new ones. + +The 'git-mergetool-lib' scriptlet is designed to be sourced (using +`.`) by other shell scripts to set up functions for working +with git merge tools. + +Before sourcing it, your script should set up a few variables; +`TOOL_MODE` is used to define the operation mode for various +functions. 'diff' and 'merge' are valid values. + +FUNCTIONS +--------- +get_merge_tool_path:: + returns the `merge_tool_path` for a `merge_tool`. + +Author +------ +Written by David Aguilar <davvid@xxxxxxxxx> + +Documentation +-------------- +Documentation by David Aguilar and the git-list <git@xxxxxxxxxxxxxxx>. + +GIT +--- +Part of the linkgit:git[1] suite diff --git a/Makefile b/Makefile index d77fd71..086f9e7 100644 --- a/Makefile +++ b/Makefile @@ -284,6 +284,7 @@ SCRIPT_SH += git-merge-octopus.sh SCRIPT_SH += git-merge-one-file.sh SCRIPT_SH += git-merge-resolve.sh SCRIPT_SH += git-mergetool.sh +SCRIPT_SH += git-mergetool-lib.sh SCRIPT_SH += git-parse-remote.sh SCRIPT_SH += git-pull.sh SCRIPT_SH += git-quiltimport.sh diff --git a/command-list.txt b/command-list.txt index fb03a2e..922c815 100644 --- a/command-list.txt +++ b/command-list.txt @@ -69,6 +69,7 @@ git-merge-file plumbingmanipulators git-merge-index plumbingmanipulators git-merge-one-file purehelpers git-mergetool ancillarymanipulators +git-mergetool-lib purehelpers git-merge-tree ancillaryinterrogators git-mktag plumbingmanipulators git-mktree plumbingmanipulators diff --git a/git-mergetool-lib.sh b/git-mergetool-lib.sh new file mode 100644 index 0000000..c307a5d --- /dev/null +++ b/git-mergetool-lib.sh @@ -0,0 +1,41 @@ +# git-mergetool-lib is a library for common merge tool functions +diff_mode() { + test $TOOL_MODE = "diff" +} + +get_merge_tool_path () { + if test -z "$2"; then + case "$1" in + emerge) + path=emacs + ;; + *) + path="$1" + ;; + esac + fi + echo "$path" +} + +valid_tool () { + case "$1" in + kdiff3 | kompare | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge) + if test "$1" = "kompare" && ! diff_mode; then + return 1 + fi + ;; # happy + *) + if ! test -n "$(get_custom_cmd "$1")"; then + return 1 + fi ;; + esac +} + +get_custom_cmd () { + diff_mode && + custom_cmd="$(git config difftool.$1.cmd)" + test -z "$custom_cmd" && + custom_cmd="$(git config mergetool.$1.cmd)" + test -n "$custom_cmd" && + echo "$custom_cmd" +} -- 1.6.1.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html