зеркало из https://github.com/microsoft/git.git
Merge branch 'da/mergetool-tool-help'
Allow "git mergetool --help" to run outside a Git repository. * da/mergetool-tool-help: difftool: don't assume that default sh is sane mergetool: don't require a work tree for --tool-help git-sh-setup: move GIT_DIR initialization into a function mergetool: use more conservative temporary filenames test-lib-functions: adjust style to match CodingGuidelines t7610-mergetool: prefer test_config over git config
This commit is contained in:
Коммит
e96e98b339
|
@ -47,13 +47,9 @@ sub find_worktree
|
||||||
|
|
||||||
sub print_tool_help
|
sub print_tool_help
|
||||||
{
|
{
|
||||||
my $cmd = 'TOOL_MODE=diff';
|
|
||||||
$cmd .= ' && . "$(git --exec-path)/git-mergetool--lib"';
|
|
||||||
$cmd .= ' && show_tool_help';
|
|
||||||
|
|
||||||
# See the comment at the bottom of file_diff() for the reason behind
|
# See the comment at the bottom of file_diff() for the reason behind
|
||||||
# using system() followed by exit() instead of exec().
|
# using system() followed by exit() instead of exec().
|
||||||
my $rc = system('sh', '-c', $cmd);
|
my $rc = system(qw(git mergetool --tool-help=diff));
|
||||||
exit($rc | ($rc >> 8));
|
exit($rc | ($rc >> 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@
|
||||||
|
|
||||||
USAGE='[--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [file to merge] ...'
|
USAGE='[--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [file to merge] ...'
|
||||||
SUBDIRECTORY_OK=Yes
|
SUBDIRECTORY_OK=Yes
|
||||||
|
NONGIT_OK=Yes
|
||||||
OPTIONS_SPEC=
|
OPTIONS_SPEC=
|
||||||
TOOL_MODE=merge
|
TOOL_MODE=merge
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
. git-mergetool--lib
|
. git-mergetool--lib
|
||||||
require_work_tree
|
|
||||||
|
|
||||||
# Returns true if the mode reflects a symlink
|
# Returns true if the mode reflects a symlink
|
||||||
is_symlink () {
|
is_symlink () {
|
||||||
|
@ -327,6 +327,10 @@ guessed_merge_tool=false
|
||||||
while test $# != 0
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
--tool-help=*)
|
||||||
|
TOOL_MODE=${1#--tool-help=}
|
||||||
|
show_tool_help
|
||||||
|
;;
|
||||||
--tool-help)
|
--tool-help)
|
||||||
show_tool_help
|
show_tool_help
|
||||||
;;
|
;;
|
||||||
|
@ -378,6 +382,9 @@ prompt_after_failed_merge () {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
git_dir_init
|
||||||
|
require_work_tree
|
||||||
|
|
||||||
if test -z "$merge_tool"
|
if test -z "$merge_tool"
|
||||||
then
|
then
|
||||||
# Check if a merge tool has been configured
|
# Check if a merge tool has been configured
|
||||||
|
|
|
@ -330,8 +330,7 @@ esac
|
||||||
|
|
||||||
# Make sure we are in a valid repository of a vintage we understand,
|
# Make sure we are in a valid repository of a vintage we understand,
|
||||||
# if we require to be in a git repository.
|
# if we require to be in a git repository.
|
||||||
if test -z "$NONGIT_OK"
|
git_dir_init () {
|
||||||
then
|
|
||||||
GIT_DIR=$(git rev-parse --git-dir) || exit
|
GIT_DIR=$(git rev-parse --git-dir) || exit
|
||||||
if [ -z "$SUBDIRECTORY_OK" ]
|
if [ -z "$SUBDIRECTORY_OK" ]
|
||||||
then
|
then
|
||||||
|
@ -346,6 +345,11 @@ then
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
: ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}
|
: ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"}
|
||||||
|
}
|
||||||
|
|
||||||
|
if test -z "$NONGIT_OK"
|
||||||
|
then
|
||||||
|
git_dir_init
|
||||||
fi
|
fi
|
||||||
|
|
||||||
peel_committish () {
|
peel_committish () {
|
||||||
|
|
|
@ -14,7 +14,7 @@ Testing basic merge tool invocation'
|
||||||
# running mergetool
|
# running mergetool
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
git config rerere.enabled true &&
|
test_config rerere.enabled true &&
|
||||||
echo master >file1 &&
|
echo master >file1 &&
|
||||||
echo master spaced >"spaced name" &&
|
echo master spaced >"spaced name" &&
|
||||||
echo master file11 >file11 &&
|
echo master file11 >file11 &&
|
||||||
|
@ -129,7 +129,7 @@ test_expect_success 'mergetool crlf' '
|
||||||
git submodule update -N &&
|
git submodule update -N &&
|
||||||
test "$(cat submod/bar)" = "master submodule" &&
|
test "$(cat submod/bar)" = "master submodule" &&
|
||||||
git commit -m "branch1 resolved with mergetool - autocrlf" &&
|
git commit -m "branch1 resolved with mergetool - autocrlf" &&
|
||||||
git config core.autocrlf false &&
|
test_config core.autocrlf false &&
|
||||||
git reset --hard
|
git reset --hard
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ test_expect_success 'mergetool skips autoresolved' '
|
||||||
test_expect_success 'mergetool merges all from subdir' '
|
test_expect_success 'mergetool merges all from subdir' '
|
||||||
(
|
(
|
||||||
cd subdir &&
|
cd subdir &&
|
||||||
git config rerere.enabled false &&
|
test_config rerere.enabled false &&
|
||||||
test_must_fail git merge master &&
|
test_must_fail git merge master &&
|
||||||
( yes "r" | git mergetool ../submod ) &&
|
( yes "r" | git mergetool ../submod ) &&
|
||||||
( yes "d" "d" | git mergetool --no-prompt ) &&
|
( yes "d" "d" | git mergetool --no-prompt ) &&
|
||||||
|
@ -190,7 +190,7 @@ test_expect_success 'mergetool merges all from subdir' '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'mergetool skips resolved paths when rerere is active' '
|
test_expect_success 'mergetool skips resolved paths when rerere is active' '
|
||||||
git config rerere.enabled true &&
|
test_config rerere.enabled true &&
|
||||||
rm -rf .git/rr-cache &&
|
rm -rf .git/rr-cache &&
|
||||||
git checkout -b test5 branch1 &&
|
git checkout -b test5 branch1 &&
|
||||||
git submodule update -N &&
|
git submodule update -N &&
|
||||||
|
@ -204,7 +204,7 @@ test_expect_success 'mergetool skips resolved paths when rerere is active' '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'conflicted stash sets up rerere' '
|
test_expect_success 'conflicted stash sets up rerere' '
|
||||||
git config rerere.enabled true &&
|
test_config rerere.enabled true &&
|
||||||
git checkout stash1 &&
|
git checkout stash1 &&
|
||||||
echo "Conflicting stash content" >file11 &&
|
echo "Conflicting stash content" >file11 &&
|
||||||
git stash &&
|
git stash &&
|
||||||
|
@ -232,7 +232,7 @@ test_expect_success 'conflicted stash sets up rerere' '
|
||||||
|
|
||||||
test_expect_success 'mergetool takes partial path' '
|
test_expect_success 'mergetool takes partial path' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git config rerere.enabled false &&
|
test_config rerere.enabled false &&
|
||||||
git checkout -b test12 branch1 &&
|
git checkout -b test12 branch1 &&
|
||||||
git submodule update -N &&
|
git submodule update -N &&
|
||||||
test_must_fail git merge master &&
|
test_must_fail git merge master &&
|
||||||
|
|
Загрузка…
Ссылка в новой задаче