Skip to content

Commit cac7f0a

Browse files
committed
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]>
1 parent 89dfd5d commit cac7f0a

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)