Skip to content

Commit f3a3a02

Browse files
dschogitster
authored andcommitted
difftool --no-index: error out on --dir-diff (and don't crash)
In `--no-index` mode, we now no longer require a worktree nor a repository. But some code paths in `difftool` expect those to be present. The most notable such code path is the `--dir-diff` one: we use the existing checkout machinery to copy the files, and that machinery looks up replacement refs, looks at alternate ODBs, wants to use the worktree path, etc. Rather than running into segmentation faults, let's die with an informative error message. Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 20de316 commit f3a3a02

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

builtin/difftool.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,8 @@ int cmd_difftool(int argc, const char **argv, const char *prefix)
735735
setup_work_tree();
736736
setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
737737
setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
738-
}
738+
} else if (dir_diff)
739+
die(_("--dir-diff is incompatible with --no-index"));
739740

740741
if (use_gui_tool && diff_gui_tool && *diff_gui_tool)
741742
setenv("GIT_DIFF_TOOL", diff_gui_tool, 1);

0 commit comments

Comments
 (0)