git
97 строк · 2.2 Кб
1diff_cmd () {
2"$merge_tool_path" "$LOCAL" "$REMOTE"
3}
4
5diff_cmd_help () {
6echo "Use Meld (requires a graphical session)"
7}
8
9merge_cmd () {
10check_meld_for_features
11
12option_auto_merge=
13if test "$meld_use_auto_merge_option" = true
14then
15option_auto_merge="--auto-merge"
16fi
17
18if test "$meld_has_output_option" = true
19then
20"$merge_tool_path" $option_auto_merge --output="$MERGED" \
21"$LOCAL" "$BASE" "$REMOTE"
22else
23"$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
24fi
25}
26
27merge_cmd_help () {
28echo "Use Meld (requires a graphical session) with optional \`auto merge\` (see \`git help mergetool\`'s \`CONFIGURATION\` section)"
29}
30
31# Get meld help message
32init_meld_help_msg () {
33if test -z "$meld_help_msg"
34then
35meld_path="$(git config mergetool.meld.path || echo meld)"
36meld_help_msg=$("$meld_path" --help 2>&1)
37fi
38}
39
40# Check the features and set flags
41check_meld_for_features () {
42# Check whether we should use 'meld --output <file>'
43if test -z "$meld_has_output_option"
44then
45meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
46case "$meld_has_output_option" in
47true | false)
48: use configured value
49;;
50*)
51: empty or invalid configured value, detecting "--output" automatically
52init_meld_help_msg
53
54case "$meld_help_msg" in
55*"--output="* | *'[OPTION...]'*)
56# All version that has [OPTION...] supports --output
57meld_has_output_option=true
58;;
59*)
60meld_has_output_option=false
61;;
62esac
63;;
64esac
65fi
66# Check whether we should use 'meld --auto-merge ...'
67if test -z "$meld_use_auto_merge_option"
68then
69meld_use_auto_merge_option=$(
70git config --bool-or-str mergetool.meld.useAutoMerge
71)
72case "$meld_use_auto_merge_option" in
73true | false)
74: use well formatted boolean value
75;;
76auto)
77# testing the "--auto-merge" option only if config is "auto"
78init_meld_help_msg
79
80case "$meld_help_msg" in
81*"--auto-merge"* | *'[OPTION...]'*)
82meld_use_auto_merge_option=true
83;;
84*)
85meld_use_auto_merge_option=false
86;;
87esac
88;;
89"")
90meld_use_auto_merge_option=false
91;;
92*)
93die "unknown mergetool.meld.useAutoMerge: $meld_use_auto_merge_option"
94;;
95esac
96fi
97}
98