summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/difftool.c8
-rwxr-xr-xt/t7800-difftool.sh13
2 files changed, 17 insertions, 4 deletions
diff --git a/builtin/difftool.c b/builtin/difftool.c
index b5e85ab079..d13350ce83 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -647,10 +647,6 @@ int cmd_difftool(int argc, const char **argv, const char *prefix)
OPT_END()
};
- /* NEEDSWORK: once we no longer spawn anything, remove this */
- setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
- setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
-
git_config(difftool_config, NULL);
symlinks = has_symlinks;
@@ -661,6 +657,10 @@ int cmd_difftool(int argc, const char **argv, const char *prefix)
if (tool_help)
return print_tool_help();
+ /* NEEDSWORK: once we no longer spawn anything, remove this */
+ setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
+ setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
+
if (use_gui_tool && diff_gui_tool && *diff_gui_tool)
setenv("GIT_DIFF_TOOL", diff_gui_tool, 1);
else if (difftool_cmd) {
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index 81a2de2b9d..1c81f46cbf 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -23,6 +23,19 @@ prompt_given ()
test "$prompt" = "Launch 'test-tool' [Y/n]? branch"
}
+test_expect_success 'basic usage requires no repo' '
+ lines=$(git difftool -h | grep ^usage: | wc -l) &&
+ test "$lines" -eq 1 &&
+ # create a ceiling directory to prevent Git from finding a repo
+ mkdir -p not/repo &&
+ ceiling="$PWD/not" &&
+ lines=$(cd not/repo &&
+ GIT_CEILING_DIRECTORIES="$ceiling" git difftool -h |
+ grep ^usage: | wc -l) &&
+ test "$lines" -eq 1 &&
+ rmdir -p not/repo
+'
+
# Create a file on master and change it on branch
test_expect_success 'setup' '
echo master >file &&