difftool: retire the scripted version
It served its purpose, but now we have a builtin difftool. Time for the Perl script to enjoy Florida. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
03831ef7b5
commit
019678d6b1
1
.gitignore
vendored
1
.gitignore
vendored
@ -76,7 +76,6 @@
|
|||||||
/git-init-db
|
/git-init-db
|
||||||
/git-interpret-trailers
|
/git-interpret-trailers
|
||||||
/git-instaweb
|
/git-instaweb
|
||||||
/git-legacy-difftool
|
|
||||||
/git-log
|
/git-log
|
||||||
/git-ls-files
|
/git-ls-files
|
||||||
/git-ls-remote
|
/git-ls-remote
|
||||||
|
1
Makefile
1
Makefile
@ -527,7 +527,6 @@ SCRIPT_LIB += git-sh-setup
|
|||||||
SCRIPT_LIB += git-sh-i18n
|
SCRIPT_LIB += git-sh-i18n
|
||||||
|
|
||||||
SCRIPT_PERL += git-add--interactive.perl
|
SCRIPT_PERL += git-add--interactive.perl
|
||||||
SCRIPT_PERL += git-legacy-difftool.perl
|
|
||||||
SCRIPT_PERL += git-archimport.perl
|
SCRIPT_PERL += git-archimport.perl
|
||||||
SCRIPT_PERL += git-cvsexportcommit.perl
|
SCRIPT_PERL += git-cvsexportcommit.perl
|
||||||
SCRIPT_PERL += git-cvsimport.perl
|
SCRIPT_PERL += git-cvsimport.perl
|
||||||
|
@ -616,30 +616,6 @@ static int run_file_diff(int prompt, const char *prefix,
|
|||||||
exit(ret);
|
exit(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* NEEDSWORK: this function can go once the legacy-difftool Perl script is
|
|
||||||
* retired.
|
|
||||||
*
|
|
||||||
* We intentionally avoid reading the config directly here, to avoid messing up
|
|
||||||
* the GIT_* environment variables when we need to fall back to exec()ing the
|
|
||||||
* Perl script.
|
|
||||||
*/
|
|
||||||
static int use_builtin_difftool(void) {
|
|
||||||
struct child_process cp = CHILD_PROCESS_INIT;
|
|
||||||
struct strbuf out = STRBUF_INIT;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
argv_array_pushl(&cp.args,
|
|
||||||
"config", "--bool", "difftool.usebuiltin", NULL);
|
|
||||||
cp.git_cmd = 1;
|
|
||||||
if (capture_command(&cp, &out, 6))
|
|
||||||
return 0;
|
|
||||||
strbuf_trim(&out);
|
|
||||||
ret = !strcmp("true", out.buf);
|
|
||||||
strbuf_release(&out);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cmd_difftool(int argc, const char **argv, const char *prefix)
|
int cmd_difftool(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
int use_gui_tool = 0, dir_diff = 0, prompt = -1, symlinks = 0,
|
int use_gui_tool = 0, dir_diff = 0, prompt = -1, symlinks = 0,
|
||||||
@ -671,23 +647,6 @@ int cmd_difftool(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* NEEDSWORK: Once the builtin difftool has been tested enough
|
|
||||||
* and git-legacy-difftool.perl is retired to contrib/, this preamble
|
|
||||||
* can be removed.
|
|
||||||
*/
|
|
||||||
if (!use_builtin_difftool()) {
|
|
||||||
const char *path = mkpath("%s/git-legacy-difftool",
|
|
||||||
git_exec_path());
|
|
||||||
|
|
||||||
if (sane_execvp(path, (char **)argv) < 0)
|
|
||||||
die_errno("could not exec %s", path);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
prefix = setup_git_directory();
|
|
||||||
trace_repo_setup(prefix);
|
|
||||||
setup_work_tree();
|
|
||||||
/* NEEDSWORK: once we no longer spawn anything, remove this */
|
/* NEEDSWORK: once we no longer spawn anything, remove this */
|
||||||
setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
|
setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
|
||||||
setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
|
setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
|
||||||
|
7
git.c
7
git.c
@ -424,12 +424,7 @@ static struct cmd_struct commands[] = {
|
|||||||
{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
|
{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "diff-index", cmd_diff_index, RUN_SETUP },
|
{ "diff-index", cmd_diff_index, RUN_SETUP },
|
||||||
{ "diff-tree", cmd_diff_tree, RUN_SETUP },
|
{ "diff-tree", cmd_diff_tree, RUN_SETUP },
|
||||||
/*
|
{ "difftool", cmd_difftool, RUN_SETUP | NEED_WORK_TREE },
|
||||||
* NEEDSWORK: Once the redirection to git-legacy-difftool.perl in
|
|
||||||
* builtin/difftool.c has been removed, this entry should be changed to
|
|
||||||
* RUN_SETUP | NEED_WORK_TREE
|
|
||||||
*/
|
|
||||||
{ "difftool", cmd_difftool },
|
|
||||||
{ "fast-export", cmd_fast_export, RUN_SETUP },
|
{ "fast-export", cmd_fast_export, RUN_SETUP },
|
||||||
{ "fetch", cmd_fetch, RUN_SETUP },
|
{ "fetch", cmd_fetch, RUN_SETUP },
|
||||||
{ "fetch-pack", cmd_fetch_pack, RUN_SETUP },
|
{ "fetch-pack", cmd_fetch_pack, RUN_SETUP },
|
||||||
|
@ -23,10 +23,8 @@ prompt_given ()
|
|||||||
test "$prompt" = "Launch 'test-tool' [Y/n]? branch"
|
test "$prompt" = "Launch 'test-tool' [Y/n]? branch"
|
||||||
}
|
}
|
||||||
|
|
||||||
# NEEDSWORK: lose all the PERL prereqs once legacy-difftool is retired.
|
|
||||||
|
|
||||||
# Create a file on master and change it on branch
|
# Create a file on master and change it on branch
|
||||||
test_expect_success PERL 'setup' '
|
test_expect_success 'setup' '
|
||||||
echo master >file &&
|
echo master >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
git commit -m "added file" &&
|
git commit -m "added file" &&
|
||||||
@ -38,7 +36,7 @@ test_expect_success PERL 'setup' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Configure a custom difftool.<tool>.cmd and use it
|
# Configure a custom difftool.<tool>.cmd and use it
|
||||||
test_expect_success PERL 'custom commands' '
|
test_expect_success 'custom commands' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config difftool.test-tool.cmd "cat \"\$REMOTE\"" &&
|
test_config difftool.test-tool.cmd "cat \"\$REMOTE\"" &&
|
||||||
echo master >expect &&
|
echo master >expect &&
|
||||||
@ -51,21 +49,21 @@ test_expect_success PERL 'custom commands' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'custom tool commands override built-ins' '
|
test_expect_success 'custom tool commands override built-ins' '
|
||||||
test_config difftool.vimdiff.cmd "cat \"\$REMOTE\"" &&
|
test_config difftool.vimdiff.cmd "cat \"\$REMOTE\"" &&
|
||||||
echo master >expect &&
|
echo master >expect &&
|
||||||
git difftool --tool vimdiff --no-prompt branch >actual &&
|
git difftool --tool vimdiff --no-prompt branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool ignores bad --tool values' '
|
test_expect_success 'difftool ignores bad --tool values' '
|
||||||
: >expect &&
|
: >expect &&
|
||||||
test_must_fail \
|
test_must_fail \
|
||||||
git difftool --no-prompt --tool=bad-tool branch >actual &&
|
git difftool --no-prompt --tool=bad-tool branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool forwards arguments to diff' '
|
test_expect_success 'difftool forwards arguments to diff' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
>for-diff &&
|
>for-diff &&
|
||||||
git add for-diff &&
|
git add for-diff &&
|
||||||
@ -78,40 +76,40 @@ test_expect_success PERL 'difftool forwards arguments to diff' '
|
|||||||
rm for-diff
|
rm for-diff
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool ignores exit code' '
|
test_expect_success 'difftool ignores exit code' '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
git difftool -y -t error branch
|
git difftool -y -t error branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool forwards exit code with --trust-exit-code' '
|
test_expect_success 'difftool forwards exit code with --trust-exit-code' '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_must_fail git difftool -y --trust-exit-code -t error branch
|
test_must_fail git difftool -y --trust-exit-code -t error branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool forwards exit code with --trust-exit-code for built-ins' '
|
test_expect_success 'difftool forwards exit code with --trust-exit-code for built-ins' '
|
||||||
test_config difftool.vimdiff.path false &&
|
test_config difftool.vimdiff.path false &&
|
||||||
test_must_fail git difftool -y --trust-exit-code -t vimdiff branch
|
test_must_fail git difftool -y --trust-exit-code -t vimdiff branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool honors difftool.trustExitCode = true' '
|
test_expect_success 'difftool honors difftool.trustExitCode = true' '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode true &&
|
test_config difftool.trustExitCode true &&
|
||||||
test_must_fail git difftool -y -t error branch
|
test_must_fail git difftool -y -t error branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool honors difftool.trustExitCode = false' '
|
test_expect_success 'difftool honors difftool.trustExitCode = false' '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode false &&
|
test_config difftool.trustExitCode false &&
|
||||||
git difftool -y -t error branch
|
git difftool -y -t error branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool ignores exit code with --no-trust-exit-code' '
|
test_expect_success 'difftool ignores exit code with --no-trust-exit-code' '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode true &&
|
test_config difftool.trustExitCode true &&
|
||||||
git difftool -y --no-trust-exit-code -t error branch
|
git difftool -y --no-trust-exit-code -t error branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool stops on error with --trust-exit-code' '
|
test_expect_success 'difftool stops on error with --trust-exit-code' '
|
||||||
test_when_finished "rm -f for-diff .git/fail-right-file" &&
|
test_when_finished "rm -f for-diff .git/fail-right-file" &&
|
||||||
test_when_finished "git reset -- for-diff" &&
|
test_when_finished "git reset -- for-diff" &&
|
||||||
write_script .git/fail-right-file <<-\EOF &&
|
write_script .git/fail-right-file <<-\EOF &&
|
||||||
@ -126,13 +124,13 @@ test_expect_success PERL 'difftool stops on error with --trust-exit-code' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool honors exit status if command not found' '
|
test_expect_success 'difftool honors exit status if command not found' '
|
||||||
test_config difftool.nonexistent.cmd i-dont-exist &&
|
test_config difftool.nonexistent.cmd i-dont-exist &&
|
||||||
test_config difftool.trustExitCode false &&
|
test_config difftool.trustExitCode false &&
|
||||||
test_must_fail git difftool -y -t nonexistent branch
|
test_must_fail git difftool -y -t nonexistent branch
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool honors --gui' '
|
test_expect_success 'difftool honors --gui' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config merge.tool bogus-tool &&
|
test_config merge.tool bogus-tool &&
|
||||||
test_config diff.tool bogus-tool &&
|
test_config diff.tool bogus-tool &&
|
||||||
@ -143,7 +141,7 @@ test_expect_success PERL 'difftool honors --gui' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --gui last setting wins' '
|
test_expect_success 'difftool --gui last setting wins' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
: >expect &&
|
: >expect &&
|
||||||
git difftool --no-prompt --gui --no-gui >actual &&
|
git difftool --no-prompt --gui --no-gui >actual &&
|
||||||
@ -157,7 +155,7 @@ test_expect_success PERL 'difftool --gui last setting wins' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --gui works without configured diff.guitool' '
|
test_expect_success 'difftool --gui works without configured diff.guitool' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
git difftool --no-prompt --gui branch >actual &&
|
git difftool --no-prompt --gui branch >actual &&
|
||||||
@ -165,7 +163,7 @@ test_expect_success PERL 'difftool --gui works without configured diff.guitool'
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Specify the diff tool using $GIT_DIFF_TOOL
|
# Specify the diff tool using $GIT_DIFF_TOOL
|
||||||
test_expect_success PERL 'GIT_DIFF_TOOL variable' '
|
test_expect_success 'GIT_DIFF_TOOL variable' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
git config --unset diff.tool &&
|
git config --unset diff.tool &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
@ -175,7 +173,7 @@ test_expect_success PERL 'GIT_DIFF_TOOL variable' '
|
|||||||
|
|
||||||
# Test the $GIT_*_TOOL variables and ensure
|
# Test the $GIT_*_TOOL variables and ensure
|
||||||
# that $GIT_DIFF_TOOL always wins unless --tool is specified
|
# that $GIT_DIFF_TOOL always wins unless --tool is specified
|
||||||
test_expect_success PERL 'GIT_DIFF_TOOL overrides' '
|
test_expect_success 'GIT_DIFF_TOOL overrides' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config diff.tool bogus-tool &&
|
test_config diff.tool bogus-tool &&
|
||||||
test_config merge.tool bogus-tool &&
|
test_config merge.tool bogus-tool &&
|
||||||
@ -193,7 +191,7 @@ test_expect_success PERL 'GIT_DIFF_TOOL overrides' '
|
|||||||
|
|
||||||
# Test that we don't have to pass --no-prompt to difftool
|
# Test that we don't have to pass --no-prompt to difftool
|
||||||
# when $GIT_DIFFTOOL_NO_PROMPT is true
|
# when $GIT_DIFFTOOL_NO_PROMPT is true
|
||||||
test_expect_success PERL 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
test_expect_success 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
GIT_DIFFTOOL_NO_PROMPT=true git difftool branch >actual &&
|
GIT_DIFFTOOL_NO_PROMPT=true git difftool branch >actual &&
|
||||||
@ -202,7 +200,7 @@ test_expect_success PERL 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
|||||||
|
|
||||||
# git-difftool supports the difftool.prompt variable.
|
# git-difftool supports the difftool.prompt variable.
|
||||||
# Test that GIT_DIFFTOOL_PROMPT can override difftool.prompt = false
|
# Test that GIT_DIFFTOOL_PROMPT can override difftool.prompt = false
|
||||||
test_expect_success PERL 'GIT_DIFFTOOL_PROMPT variable' '
|
test_expect_success 'GIT_DIFFTOOL_PROMPT variable' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config difftool.prompt false &&
|
test_config difftool.prompt false &&
|
||||||
echo >input &&
|
echo >input &&
|
||||||
@ -212,7 +210,7 @@ test_expect_success PERL 'GIT_DIFFTOOL_PROMPT variable' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that we don't have to pass --no-prompt when difftool.prompt is false
|
# Test that we don't have to pass --no-prompt when difftool.prompt is false
|
||||||
test_expect_success PERL 'difftool.prompt config variable is false' '
|
test_expect_success 'difftool.prompt config variable is false' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config difftool.prompt false &&
|
test_config difftool.prompt false &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
@ -221,7 +219,7 @@ test_expect_success PERL 'difftool.prompt config variable is false' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that we don't have to pass --no-prompt when mergetool.prompt is false
|
# Test that we don't have to pass --no-prompt when mergetool.prompt is false
|
||||||
test_expect_success PERL 'difftool merge.prompt = false' '
|
test_expect_success 'difftool merge.prompt = false' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_might_fail git config --unset difftool.prompt &&
|
test_might_fail git config --unset difftool.prompt &&
|
||||||
test_config mergetool.prompt false &&
|
test_config mergetool.prompt false &&
|
||||||
@ -231,7 +229,7 @@ test_expect_success PERL 'difftool merge.prompt = false' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the -y flag can override difftool.prompt = true
|
# Test that the -y flag can override difftool.prompt = true
|
||||||
test_expect_success PERL 'difftool.prompt can overridden with -y' '
|
test_expect_success 'difftool.prompt can overridden with -y' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config difftool.prompt true &&
|
test_config difftool.prompt true &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
@ -240,7 +238,7 @@ test_expect_success PERL 'difftool.prompt can overridden with -y' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the --prompt flag can override difftool.prompt = false
|
# Test that the --prompt flag can override difftool.prompt = false
|
||||||
test_expect_success PERL 'difftool.prompt can overridden with --prompt' '
|
test_expect_success 'difftool.prompt can overridden with --prompt' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
test_config difftool.prompt false &&
|
test_config difftool.prompt false &&
|
||||||
echo >input &&
|
echo >input &&
|
||||||
@ -250,7 +248,7 @@ test_expect_success PERL 'difftool.prompt can overridden with --prompt' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the last flag passed on the command-line wins
|
# Test that the last flag passed on the command-line wins
|
||||||
test_expect_success PERL 'difftool last flag wins' '
|
test_expect_success 'difftool last flag wins' '
|
||||||
difftool_test_setup &&
|
difftool_test_setup &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
git difftool --prompt --no-prompt branch >actual &&
|
git difftool --prompt --no-prompt branch >actual &&
|
||||||
@ -263,7 +261,7 @@ test_expect_success PERL 'difftool last flag wins' '
|
|||||||
|
|
||||||
# git-difftool falls back to git-mergetool config variables
|
# git-difftool falls back to git-mergetool config variables
|
||||||
# so test that behavior here
|
# so test that behavior here
|
||||||
test_expect_success PERL 'difftool + mergetool config variables' '
|
test_expect_success 'difftool + mergetool config variables' '
|
||||||
test_config merge.tool test-tool &&
|
test_config merge.tool test-tool &&
|
||||||
test_config mergetool.test-tool.cmd "cat \$LOCAL" &&
|
test_config mergetool.test-tool.cmd "cat \$LOCAL" &&
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
@ -277,49 +275,49 @@ test_expect_success PERL 'difftool + mergetool config variables' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool.<tool>.path' '
|
test_expect_success 'difftool.<tool>.path' '
|
||||||
test_config difftool.tkdiff.path echo &&
|
test_config difftool.tkdiff.path echo &&
|
||||||
git difftool --tool=tkdiff --no-prompt branch >output &&
|
git difftool --tool=tkdiff --no-prompt branch >output &&
|
||||||
lines=$(grep file output | wc -l) &&
|
lines=$(grep file output | wc -l) &&
|
||||||
test "$lines" -eq 1
|
test "$lines" -eq 1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --extcmd=cat' '
|
test_expect_success 'difftool --extcmd=cat' '
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
echo master >>expect &&
|
echo master >>expect &&
|
||||||
git difftool --no-prompt --extcmd=cat branch >actual &&
|
git difftool --no-prompt --extcmd=cat branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --extcmd cat' '
|
test_expect_success 'difftool --extcmd cat' '
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
echo master >>expect &&
|
echo master >>expect &&
|
||||||
git difftool --no-prompt --extcmd=cat branch >actual &&
|
git difftool --no-prompt --extcmd=cat branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool -x cat' '
|
test_expect_success 'difftool -x cat' '
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
echo master >>expect &&
|
echo master >>expect &&
|
||||||
git difftool --no-prompt -x cat branch >actual &&
|
git difftool --no-prompt -x cat branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --extcmd echo arg1' '
|
test_expect_success 'difftool --extcmd echo arg1' '
|
||||||
echo file >expect &&
|
echo file >expect &&
|
||||||
git difftool --no-prompt \
|
git difftool --no-prompt \
|
||||||
--extcmd sh\ -c\ \"echo\ \$1\" branch >actual &&
|
--extcmd sh\ -c\ \"echo\ \$1\" branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --extcmd cat arg1' '
|
test_expect_success 'difftool --extcmd cat arg1' '
|
||||||
echo master >expect &&
|
echo master >expect &&
|
||||||
git difftool --no-prompt \
|
git difftool --no-prompt \
|
||||||
--extcmd sh\ -c\ \"cat\ \$1\" branch >actual &&
|
--extcmd sh\ -c\ \"cat\ \$1\" branch >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --extcmd cat arg2' '
|
test_expect_success 'difftool --extcmd cat arg2' '
|
||||||
echo branch >expect &&
|
echo branch >expect &&
|
||||||
git difftool --no-prompt \
|
git difftool --no-prompt \
|
||||||
--extcmd sh\ -c\ \"cat\ \$2\" branch >actual &&
|
--extcmd sh\ -c\ \"cat\ \$2\" branch >actual &&
|
||||||
@ -327,7 +325,7 @@ test_expect_success PERL 'difftool --extcmd cat arg2' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Create a second file on master and a different version on branch
|
# Create a second file on master and a different version on branch
|
||||||
test_expect_success PERL 'setup with 2 files different' '
|
test_expect_success 'setup with 2 files different' '
|
||||||
echo m2 >file2 &&
|
echo m2 >file2 &&
|
||||||
git add file2 &&
|
git add file2 &&
|
||||||
git commit -m "added file2" &&
|
git commit -m "added file2" &&
|
||||||
@ -339,7 +337,7 @@ test_expect_success PERL 'setup with 2 files different' '
|
|||||||
git checkout master
|
git checkout master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'say no to the first file' '
|
test_expect_success 'say no to the first file' '
|
||||||
(echo n && echo) >input &&
|
(echo n && echo) >input &&
|
||||||
git difftool -x cat branch <input >output &&
|
git difftool -x cat branch <input >output &&
|
||||||
grep m2 output &&
|
grep m2 output &&
|
||||||
@ -348,7 +346,7 @@ test_expect_success PERL 'say no to the first file' '
|
|||||||
! grep branch output
|
! grep branch output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'say no to the second file' '
|
test_expect_success 'say no to the second file' '
|
||||||
(echo && echo n) >input &&
|
(echo && echo n) >input &&
|
||||||
git difftool -x cat branch <input >output &&
|
git difftool -x cat branch <input >output &&
|
||||||
grep master output &&
|
grep master output &&
|
||||||
@ -357,7 +355,7 @@ test_expect_success PERL 'say no to the second file' '
|
|||||||
! grep br2 output
|
! grep br2 output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'ending prompt input with EOF' '
|
test_expect_success 'ending prompt input with EOF' '
|
||||||
git difftool -x cat branch </dev/null >output &&
|
git difftool -x cat branch </dev/null >output &&
|
||||||
! grep master output &&
|
! grep master output &&
|
||||||
! grep branch output &&
|
! grep branch output &&
|
||||||
@ -365,12 +363,12 @@ test_expect_success PERL 'ending prompt input with EOF' '
|
|||||||
! grep br2 output
|
! grep br2 output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --tool-help' '
|
test_expect_success 'difftool --tool-help' '
|
||||||
git difftool --tool-help >output &&
|
git difftool --tool-help >output &&
|
||||||
grep tool output
|
grep tool output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'setup change in subdirectory' '
|
test_expect_success 'setup change in subdirectory' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
mkdir sub &&
|
mkdir sub &&
|
||||||
echo master >sub/sub &&
|
echo master >sub/sub &&
|
||||||
@ -383,11 +381,11 @@ test_expect_success PERL 'setup change in subdirectory' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
run_dir_diff_test () {
|
run_dir_diff_test () {
|
||||||
test_expect_success PERL "$1 --no-symlinks" "
|
test_expect_success "$1 --no-symlinks" "
|
||||||
symlinks=--no-symlinks &&
|
symlinks=--no-symlinks &&
|
||||||
$2
|
$2
|
||||||
"
|
"
|
||||||
test_expect_success PERL,SYMLINKS "$1 --symlinks" "
|
test_expect_success SYMLINKS "$1 --symlinks" "
|
||||||
symlinks=--symlinks &&
|
symlinks=--symlinks &&
|
||||||
$2
|
$2
|
||||||
"
|
"
|
||||||
@ -472,7 +470,7 @@ do
|
|||||||
done >actual
|
done >actual
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
|
test_expect_success SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
file
|
file
|
||||||
$PWD/file
|
$PWD/file
|
||||||
@ -509,7 +507,7 @@ write_script modify-file <<\EOF
|
|||||||
echo "new content" >file
|
echo "new content" >file
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --no-symlinks does not overwrite working tree file ' '
|
test_expect_success 'difftool --no-symlinks does not overwrite working tree file ' '
|
||||||
echo "orig content" >file &&
|
echo "orig content" >file &&
|
||||||
git difftool --dir-diff --no-symlinks --extcmd "$PWD/modify-file" branch &&
|
git difftool --dir-diff --no-symlinks --extcmd "$PWD/modify-file" branch &&
|
||||||
echo "new content" >expect &&
|
echo "new content" >expect &&
|
||||||
@ -522,7 +520,7 @@ echo "tmp content" >"$2/file" &&
|
|||||||
echo "$2" >tmpdir
|
echo "$2" >tmpdir
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success PERL 'difftool --no-symlinks detects conflict ' '
|
test_expect_success 'difftool --no-symlinks detects conflict ' '
|
||||||
(
|
(
|
||||||
TMPDIR=$TRASH_DIRECTORY &&
|
TMPDIR=$TRASH_DIRECTORY &&
|
||||||
export TMPDIR &&
|
export TMPDIR &&
|
||||||
@ -535,7 +533,7 @@ test_expect_success PERL 'difftool --no-symlinks detects conflict ' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL 'difftool properly honors gitlink and core.worktree' '
|
test_expect_success 'difftool properly honors gitlink and core.worktree' '
|
||||||
git submodule add ./. submod/ule &&
|
git submodule add ./. submod/ule &&
|
||||||
test_config -C submod/ule diff.tool checktrees &&
|
test_config -C submod/ule diff.tool checktrees &&
|
||||||
test_config -C submod/ule difftool.checktrees.cmd '\''
|
test_config -C submod/ule difftool.checktrees.cmd '\''
|
||||||
@ -549,7 +547,7 @@ test_expect_success PERL 'difftool properly honors gitlink and core.worktree' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success PERL,SYMLINKS 'difftool --dir-diff symlinked directories' '
|
test_expect_success SYMLINKS 'difftool --dir-diff symlinked directories' '
|
||||||
git init dirlinks &&
|
git init dirlinks &&
|
||||||
(
|
(
|
||||||
cd dirlinks &&
|
cd dirlinks &&
|
||||||
|
Loading…
Reference in New Issue
Block a user