* [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
@ 2020-07-07 7:18 lin.sun
0 siblings, 0 replies; 5+ messages in thread
From: lin.sun @ 2020-07-07 7:18 UTC (permalink / raw)
To: 'Junio C Hamano', 'sunlin via GitGitGadget'
Cc: git, 'sunlin'
Hi Junio,
The [PATCH v11] is uploaded, it correct the misunderstanding in preview patch.
https://lore.kernel.org/git/pull.781.v11.git.git.1594106024078.gitgitgadget@gmail.com
Please review again, thank you so much.
Regards
Lin
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v9] Support auto-merge for meld to follow the vim-diff behavior
@ 2020-07-06 2:27 sunlin via GitGitGadget
2020-07-07 6:17 ` [PATCH v10] " sunlin via GitGitGadget
0 siblings, 1 reply; 5+ messages in thread
From: sunlin via GitGitGadget @ 2020-07-06 2:27 UTC (permalink / raw)
To: git; +Cc: sunlin, Lin Sun
From: Lin Sun <lin.sun@zoom.us>
Make the mergetool used with "meld" backend behave similarly to "vimdiff" by
telling it to auto-merge non-conflicting parts and highlight the conflicting
parts when `mergetool.meld.useAutoMerge` is configured with `true`, or `auto`
for detecting the `--auto-merge` option automatically.
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Lin Sun <lin.sun@zoom.us>
---
Enable auto-merge for meld to follow the vimdiff beharior
Hi, the mergetool "meld" does NOT merge the no-conflict changes, while
the mergetool "vimdiff" will merge the no-conflict changes and highlight
the conflict parts. This patch will make the mergetool "meld" similar to
"vimdiff", auto-merge the no-conflict changes, highlight conflict parts.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-781%2Fsunlin7%2Fmaster-v9
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-781/sunlin7/master-v9
Pull-Request: https://github.com/git/git/pull/781
Range-diff vs v8:
1: f28a32c66e ! 1: 95586fb2c2 Support auto-merge for meld to follow the vim-diff behavior
@@ mergetools/meld: diff_cmd () {
- else
- meld_has_output_option=false
+ meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
-+ if test -z "$meld_use_auto_merge_option"
-+ then
++ case "$meld_use_auto_merge_option" in
++ "")
+ meld_use_auto_merge_option=false
-+ else
++ ;;
++ [Aa]uto)
++ # testing the "--auto-merge" option only if config is "[Aa]uto"
++ init_meld_help_msg
++
++ case "$meld_help_msg" in
++ *"--auto-merge"*)
++ meld_use_auto_merge_option=true
++ ;;
++ *)
++ meld_use_auto_merge_option=false
++ ;;
++ esac
++ ;;
++ *)
+ bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
+ if test -n "$bool_value"
+ then
+ meld_use_auto_merge_option="$bool_value"
-+ elif test "$meld_use_auto_merge_option" = "auto" \
-+ || test "$meld_use_auto_merge_option" = "Auto"
-+ then
-+ # testing the "--auto-merge" option only if config is "[Aa]uto"
-+ init_meld_help_msg
-+
-+ case "$meld_help_msg" in
-+ *"--auto-merge"*)
-+ meld_use_auto_merge_option=true
-+ ;;
-+ *)
-+ meld_use_auto_merge_option=false
-+ ;;
-+ esac
+ else
+ meld_use_auto_merge_option=false
+ fi
-+ fi
++ ;;
++ esac
fi
}
Documentation/config/mergetool.txt | 10 ++++
mergetools/meld | 86 ++++++++++++++++++++++++------
2 files changed, 80 insertions(+), 16 deletions(-)
diff --git a/Documentation/config/mergetool.txt b/Documentation/config/mergetool.txt
index 09ed31dbfa..031c78aa95 100644
--- a/Documentation/config/mergetool.txt
+++ b/Documentation/config/mergetool.txt
@@ -30,6 +30,16 @@ mergetool.meld.hasOutput::
to `true` tells Git to unconditionally use the `--output` option,
and `false` avoids using `--output`.
+mergetool.meld.useAutoMerge::
+ When the `--auto-merge` is given, meld will merge all non-conflicting
+ parts automatically, highlight the conflicting parts and waiting for
+ user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
+ Git to unconditionally use the `--auto-merge` option with `meld`.
+ Setting this value to `auto` makes git detect whether `--auto-merge`
+ is supported and will only use `--auto-merge` when available. A
+ value of `false` avoids using `--auto-merge` altogether, and is the
+ default value.
+
mergetool.keepBackup::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
diff --git a/mergetools/meld b/mergetools/meld
index 7a08470f88..ba6607a088 100644
--- a/mergetools/meld
+++ b/mergetools/meld
@@ -3,34 +3,88 @@ diff_cmd () {
}
merge_cmd () {
- if test -z "${meld_has_output_option:+set}"
+ check_meld_for_features
+
+ option_auto_merge=
+ if test "$meld_use_auto_merge_option" = true
then
- check_meld_for_output_version
+ option_auto_merge="--auto-merge"
fi
if test "$meld_has_output_option" = true
then
- "$merge_tool_path" --output="$MERGED" \
+ "$merge_tool_path" $option_auto_merge --output="$MERGED" \
"$LOCAL" "$BASE" "$REMOTE"
else
- "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
+ "$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
fi
}
-# Check whether we should use 'meld --output <file>'
-check_meld_for_output_version () {
- meld_path="$(git config mergetool.meld.path)"
- meld_path="${meld_path:-meld}"
+# Get meld help message
+init_meld_help_msg () {
+ if test -z "$meld_help_msg"
+ then
+ meld_path="$(git config mergetool.meld.path || echo meld)"
+ meld_help_msg=$($meld_path --help 2>&1)
+ fi
+}
- if meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
+# Check the features and set flags
+check_meld_for_features () {
+ # Check whether we should use 'meld --output <file>'
+ if test -z "$meld_has_output_option"
then
- : use configured value
- elif "$meld_path" --help 2>&1 |
- grep -e '--output=' -e '\[OPTION\.\.\.\]' >/dev/null
+ meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
+ case "$meld_has_output_option" in
+ true|false)
+ : use configured value
+ ;;
+ *)
+ : empty or invalid configured value, detecting "--output" automatically
+ init_meld_help_msg
+
+ case "$meld_help_msg" in
+ *"--output="* | *'[OPTION...]'*)
+ # All version that has [OPTION...] supports --output
+ meld_has_output_option=true
+ ;;
+ *)
+ meld_has_output_option=false
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ # Check whether we should use 'meld --auto-merge ...'
+ if test -z "$meld_use_auto_merge_option"
then
- : old ones mention --output and new ones just say OPTION...
- meld_has_output_option=true
- else
- meld_has_output_option=false
+ meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
+ case "$meld_use_auto_merge_option" in
+ "")
+ meld_use_auto_merge_option=false
+ ;;
+ [Aa]uto)
+ # testing the "--auto-merge" option only if config is "[Aa]uto"
+ init_meld_help_msg
+
+ case "$meld_help_msg" in
+ *"--auto-merge"*)
+ meld_use_auto_merge_option=true
+ ;;
+ *)
+ meld_use_auto_merge_option=false
+ ;;
+ esac
+ ;;
+ *)
+ bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
+ if test -n "$bool_value"
+ then
+ meld_use_auto_merge_option="$bool_value"
+ else
+ meld_use_auto_merge_option=false
+ fi
+ ;;
+ esac
fi
}
base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
--
gitgitgadget
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
2020-07-06 2:27 [PATCH v9] " sunlin via GitGitGadget
@ 2020-07-07 6:17 ` sunlin via GitGitGadget
2020-07-07 6:25 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: sunlin via GitGitGadget @ 2020-07-07 6:17 UTC (permalink / raw)
To: git; +Cc: sunlin, Lin Sun
From: Lin Sun <lin.sun@zoom.us>
Make the mergetool used with "meld" backend behave similarly to "vimdiff" by
telling it to auto-merge non-conflicting parts and highlight the conflicting
parts when `mergetool.meld.useAutoMerge` is configured with `true`, or `auto`
for detecting the `--auto-merge` option automatically.
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Helped-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Lin Sun <lin.sun@zoom.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
Enable auto-merge for meld to follow the vimdiff beharior
Hi, the mergetool "meld" does NOT merge the no-conflict changes, while
the mergetool "vimdiff" will merge the no-conflict changes and highlight
the conflict parts. This patch will make the mergetool "meld" similar to
"vimdiff", auto-merge the no-conflict changes, highlight conflict parts.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-781%2Fsunlin7%2Fmaster-v10
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-781/sunlin7/master-v10
Pull-Request: https://github.com/git/git/pull/781
Range-diff vs v9:
1: 95586fb2c2 ! 1: a4f1b8c2fa Support auto-merge for meld to follow the vim-diff behavior
@@ Commit message
for detecting the `--auto-merge` option automatically.
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
- Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Lin Sun <lin.sun@zoom.us>
+ Signed-off-by: Junio C Hamano <gitster@pobox.com>
## Documentation/config/mergetool.txt ##
@@ Documentation/config/mergetool.txt: mergetool.meld.hasOutput::
@@ Documentation/config/mergetool.txt: mergetool.meld.hasOutput::
+mergetool.meld.useAutoMerge::
+ When the `--auto-merge` is given, meld will merge all non-conflicting
-+ parts automatically, highlight the conflicting parts and waiting for
++ parts automatically, highlight the conflicting parts and wait for
+ user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
+ Git to unconditionally use the `--auto-merge` option with `meld`.
+ Setting this value to `auto` makes git detect whether `--auto-merge`
@@ mergetools/meld: diff_cmd () {
+ "")
+ meld_use_auto_merge_option=false
+ ;;
-+ [Aa]uto)
-+ # testing the "--auto-merge" option only if config is "[Aa]uto"
++ [Tt]ure|TRUE)
++ meld_use_auto_merge_option=true
++ ;;
++ [Ff]alse|FALSE)
++ meld_use_auto_merge_option=false
++ ;;
++ [Aa]uto|AUTO)
++ # testing the "--auto-merge" option only if config is "auto"
+ init_meld_help_msg
+
+ case "$meld_help_msg" in
@@ mergetools/meld: diff_cmd () {
+ esac
+ ;;
+ *)
++ # try detect boolean for 'on'||'yes'||numberic value
+ bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
+ if test -n "$bool_value"
+ then
Documentation/config/mergetool.txt | 10 ++++
mergetools/meld | 93 +++++++++++++++++++++++++-----
2 files changed, 87 insertions(+), 16 deletions(-)
diff --git a/Documentation/config/mergetool.txt b/Documentation/config/mergetool.txt
index 09ed31dbfa..16a27443a3 100644
--- a/Documentation/config/mergetool.txt
+++ b/Documentation/config/mergetool.txt
@@ -30,6 +30,16 @@ mergetool.meld.hasOutput::
to `true` tells Git to unconditionally use the `--output` option,
and `false` avoids using `--output`.
+mergetool.meld.useAutoMerge::
+ When the `--auto-merge` is given, meld will merge all non-conflicting
+ parts automatically, highlight the conflicting parts and wait for
+ user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
+ Git to unconditionally use the `--auto-merge` option with `meld`.
+ Setting this value to `auto` makes git detect whether `--auto-merge`
+ is supported and will only use `--auto-merge` when available. A
+ value of `false` avoids using `--auto-merge` altogether, and is the
+ default value.
+
mergetool.keepBackup::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
diff --git a/mergetools/meld b/mergetools/meld
index 7a08470f88..0250c1554a 100644
--- a/mergetools/meld
+++ b/mergetools/meld
@@ -3,34 +3,95 @@ diff_cmd () {
}
merge_cmd () {
- if test -z "${meld_has_output_option:+set}"
+ check_meld_for_features
+
+ option_auto_merge=
+ if test "$meld_use_auto_merge_option" = true
then
- check_meld_for_output_version
+ option_auto_merge="--auto-merge"
fi
if test "$meld_has_output_option" = true
then
- "$merge_tool_path" --output="$MERGED" \
+ "$merge_tool_path" $option_auto_merge --output="$MERGED" \
"$LOCAL" "$BASE" "$REMOTE"
else
- "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
+ "$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
fi
}
-# Check whether we should use 'meld --output <file>'
-check_meld_for_output_version () {
- meld_path="$(git config mergetool.meld.path)"
- meld_path="${meld_path:-meld}"
+# Get meld help message
+init_meld_help_msg () {
+ if test -z "$meld_help_msg"
+ then
+ meld_path="$(git config mergetool.meld.path || echo meld)"
+ meld_help_msg=$($meld_path --help 2>&1)
+ fi
+}
- if meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
+# Check the features and set flags
+check_meld_for_features () {
+ # Check whether we should use 'meld --output <file>'
+ if test -z "$meld_has_output_option"
then
- : use configured value
- elif "$meld_path" --help 2>&1 |
- grep -e '--output=' -e '\[OPTION\.\.\.\]' >/dev/null
+ meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
+ case "$meld_has_output_option" in
+ true|false)
+ : use configured value
+ ;;
+ *)
+ : empty or invalid configured value, detecting "--output" automatically
+ init_meld_help_msg
+
+ case "$meld_help_msg" in
+ *"--output="* | *'[OPTION...]'*)
+ # All version that has [OPTION...] supports --output
+ meld_has_output_option=true
+ ;;
+ *)
+ meld_has_output_option=false
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ # Check whether we should use 'meld --auto-merge ...'
+ if test -z "$meld_use_auto_merge_option"
then
- : old ones mention --output and new ones just say OPTION...
- meld_has_output_option=true
- else
- meld_has_output_option=false
+ meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
+ case "$meld_use_auto_merge_option" in
+ "")
+ meld_use_auto_merge_option=false
+ ;;
+ [Tt]ure|TRUE)
+ meld_use_auto_merge_option=true
+ ;;
+ [Ff]alse|FALSE)
+ meld_use_auto_merge_option=false
+ ;;
+ [Aa]uto|AUTO)
+ # testing the "--auto-merge" option only if config is "auto"
+ init_meld_help_msg
+
+ case "$meld_help_msg" in
+ *"--auto-merge"*)
+ meld_use_auto_merge_option=true
+ ;;
+ *)
+ meld_use_auto_merge_option=false
+ ;;
+ esac
+ ;;
+ *)
+ # try detect boolean for 'on'||'yes'||numberic value
+ bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
+ if test -n "$bool_value"
+ then
+ meld_use_auto_merge_option="$bool_value"
+ else
+ meld_use_auto_merge_option=false
+ fi
+ ;;
+ esac
fi
}
base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
--
gitgitgadget
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
2020-07-07 6:17 ` [PATCH v10] " sunlin via GitGitGadget
@ 2020-07-07 6:25 ` Junio C Hamano
2020-07-07 6:38 ` lin.sun
0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2020-07-07 6:25 UTC (permalink / raw)
To: sunlin via GitGitGadget; +Cc: git, sunlin, Lin Sun
"sunlin via GitGitGadget" <gitgitgadget@gmail.com> writes:
> + meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
> + case "$meld_use_auto_merge_option" in
> + "")
> + meld_use_auto_merge_option=false
> + ;;
I somehow thought that I already pointed out that this is wrong,
didn't I? You cannot tell between a "[section] var" (which is
"true") and not having any "[section] var = val" (which I think you
are trying to treat as "not configured---do not use") from the
output of "git config section.var".
Perhaps our mails crossed?
> + [Tt]ure|TRUE)
> + meld_use_auto_merge_option=true
> + ;;
> + [Ff]alse|FALSE)
> + meld_use_auto_merge_option=false
> + ;;
These are probably premature optimizations.
> + [Aa]uto|AUTO)
Sigh. I somehow thought that I already said we shouldn't do this
"aCCEpt AnY CaSES" unless all other variables that take 'auto' take
it case insensitively.
> + # testing the "--auto-merge" option only if config is "auto"
> + init_meld_help_msg
> +
> + case "$meld_help_msg" in
> + *"--auto-merge"*)
> + meld_use_auto_merge_option=true
> + ;;
> + *)
> + meld_use_auto_merge_option=false
> + ;;
> + esac
> + ;;
> + *)
> + # try detect boolean for 'on'||'yes'||numberic value
> + bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
> + if test -n "$bool_value"
> + then
> + meld_use_auto_merge_option="$bool_value"
> + else
> + meld_use_auto_merge_option=false
I think this case (i.e. set to a non-bool value, and we do not
recognise because it is not 'auto') should be flagged as an error,
instead of treated as a silent "do not use", as it would leave the
user scratching his or her head without realizing that there is a
typo in the configuration file.
> + fi
> + ;;
> + esac
> fi
> }
>
> base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
2020-07-07 6:25 ` Junio C Hamano
@ 2020-07-07 6:38 ` lin.sun
2020-07-07 6:44 ` lin.sun
0 siblings, 1 reply; 5+ messages in thread
From: lin.sun @ 2020-07-07 6:38 UTC (permalink / raw)
To: 'Junio C Hamano', 'sunlin via GitGitGadget'
Cc: git, 'sunlin'
Hi Junio,
It seems our mails crossed. I'll read your comments in this mail and reply you later.
Lin
-----Original Message-----
From: Junio C Hamano <gitster@pobox.com>
Sent: Tuesday, July 7, 2020 14:26
To: sunlin via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org; sunlin <sunlin7@yahoo.com>; Lin Sun <lin.sun@zoom.us>
Subject: Re: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
"sunlin via GitGitGadget" <gitgitgadget@gmail.com> writes:
> + meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
> + case "$meld_use_auto_merge_option" in
> + "")
> + meld_use_auto_merge_option=false
> + ;;
I somehow thought that I already pointed out that this is wrong, didn't I? You cannot tell between a "[section] var" (which is
"true") and not having any "[section] var = val" (which I think you are trying to treat as "not configured---do not use") from the output of "git config section.var".
Perhaps our mails crossed?
> + [Tt]ure|TRUE)
> + meld_use_auto_merge_option=true
> + ;;
> + [Ff]alse|FALSE)
> + meld_use_auto_merge_option=false
> + ;;
These are probably premature optimizations.
> + [Aa]uto|AUTO)
Sigh. I somehow thought that I already said we shouldn't do this "aCCEpt AnY CaSES" unless all other variables that take 'auto' take it case insensitively.
> + # testing the "--auto-merge" option only if config is "auto"
> + init_meld_help_msg
> +
> + case "$meld_help_msg" in
> + *"--auto-merge"*)
> + meld_use_auto_merge_option=true
> + ;;
> + *)
> + meld_use_auto_merge_option=false
> + ;;
> + esac
> + ;;
> + *)
> + # try detect boolean for 'on'||'yes'||numberic value
> + bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
> + if test -n "$bool_value"
> + then
> + meld_use_auto_merge_option="$bool_value"
> + else
> + meld_use_auto_merge_option=false
I think this case (i.e. set to a non-bool value, and we do not recognise because it is not 'auto') should be flagged as an error, instead of treated as a silent "do not use", as it would leave the user scratching his or her head without realizing that there is a typo in the configuration file.
> + fi
> + ;;
> + esac
> fi
> }
>
> base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
2020-07-07 6:38 ` lin.sun
@ 2020-07-07 6:44 ` lin.sun
0 siblings, 0 replies; 5+ messages in thread
From: lin.sun @ 2020-07-07 6:44 UTC (permalink / raw)
To: 'Junio C Hamano', 'sunlin via GitGitGadget'
Cc: git, 'sunlin'
Hi Junio,
I got your points now, I will upload another patch soon.
Thank you.
Regards
Lin
-----Original Message-----
From: lin.sun@zoom.us <lin.sun@zoom.us>
Sent: Tuesday, July 7, 2020 14:39
To: 'Junio C Hamano' <gitster@pobox.com>; 'sunlin via GitGitGadget' <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org; 'sunlin' <sunlin7@yahoo.com>
Subject: RE: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
Hi Junio,
It seems our mails crossed. I'll read your comments in this mail and reply you later.
Lin
-----Original Message-----
From: Junio C Hamano <gitster@pobox.com>
Sent: Tuesday, July 7, 2020 14:26
To: sunlin via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org; sunlin <sunlin7@yahoo.com>; Lin Sun <lin.sun@zoom.us>
Subject: Re: [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior
"sunlin via GitGitGadget" <gitgitgadget@gmail.com> writes:
> + meld_use_auto_merge_option=$(git config mergetool.meld.useAutoMerge)
> + case "$meld_use_auto_merge_option" in
> + "")
> + meld_use_auto_merge_option=false
> + ;;
I somehow thought that I already pointed out that this is wrong, didn't I? You cannot tell between a "[section] var" (which is
"true") and not having any "[section] var = val" (which I think you are trying to treat as "not configured---do not use") from the output of "git config section.var".
Perhaps our mails crossed?
> + [Tt]ure|TRUE)
> + meld_use_auto_merge_option=true
> + ;;
> + [Ff]alse|FALSE)
> + meld_use_auto_merge_option=false
> + ;;
These are probably premature optimizations.
> + [Aa]uto|AUTO)
Sigh. I somehow thought that I already said we shouldn't do this "aCCEpt AnY CaSES" unless all other variables that take 'auto' take it case insensitively.
> + # testing the "--auto-merge" option only if config is "auto"
> + init_meld_help_msg
> +
> + case "$meld_help_msg" in
> + *"--auto-merge"*)
> + meld_use_auto_merge_option=true
> + ;;
> + *)
> + meld_use_auto_merge_option=false
> + ;;
> + esac
> + ;;
> + *)
> + # try detect boolean for 'on'||'yes'||numberic value
> + bool_value=$(git config --bool mergetool.meld.useAutoMerge 2>/dev/null)
> + if test -n "$bool_value"
> + then
> + meld_use_auto_merge_option="$bool_value"
> + else
> + meld_use_auto_merge_option=false
I think this case (i.e. set to a non-bool value, and we do not recognise because it is not 'auto') should be flagged as an error, instead of treated as a silent "do not use", as it would leave the user scratching his or her head without realizing that there is a typo in the configuration file.
> + fi
> + ;;
> + esac
> fi
> }
>
> base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-07-07 7:18 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-07 7:18 [PATCH v10] Support auto-merge for meld to follow the vim-diff behavior lin.sun
-- strict thread matches above, loose matches on Subject: below --
2020-07-06 2:27 [PATCH v9] " sunlin via GitGitGadget
2020-07-07 6:17 ` [PATCH v10] " sunlin via GitGitGadget
2020-07-07 6:25 ` Junio C Hamano
2020-07-07 6:38 ` lin.sun
2020-07-07 6:44 ` lin.sun
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).