7

我知道我可以使用git difftool--dir-diff选项来一次性比较所有文件。

但是使用difftoolwith prompt 有其用途(对于相当少量的文件进行比较),特别是从 git 1.7.8 开始,您可以在其中跳过文件

但是,该提示不会显示差异队列中有多少文件或已经区分了多少文件。
您将如何在difftool提示中显示该信息?

4

1 回答 1

1

单独使用 git,你不能(git 1.8.x)。
但该功能即将推出(在 Git 1.9/2.0 Q1 2014 中)

请参阅Zoltan Klinger补丁中的提交 6904f9a

--prompt设置选项时,git-difftool显示在外部差异程序中查看每个已修改文件的提示。此时,显示一个计数器和差异队列中的文件总数可能很有用。

以下是 5 个已修改文件中第一个的当前 difftool 提示:

Viewing: 'diff.c'
Launch 'vimdiff' [Y/n]:

考虑修改后的提示:

Viewing (1/5): 'diff.c'
Launch 'vimdiff' [Y/n]:

当前GIT_EXTERNAL_DIFF机制不告诉差异队列中的路径数,也不告诉当前计数器。要在不破坏现有程序的情况下
使此“ counter/total”信息可用于程序:GIT_EXTERNAL_DIFF

  1. 修改run_external_diff()函数indiff.c为计数器设置一个环境变量,为差异队列中的文件总数设置一个环境变量。
    diff 队列的大小已经在diff_queue_struct.
    对于计数器,在diff_options结构中定义一个新变量并在函数中将其重置为零diff_setup_done()
    预先增加run_external_diff()函数内的计数器。
  2. 修改git-difftool--helper.sh脚本以在提示中显示计数器和差异队列计数值difftool

这导致:

git-difftool--helper.sh @@ launch_merge_tool () {

 # the user with the real $MERGED name before launching $merge_tool.
 if should_prompt
 then
   printf "\nViewing (%s/%s): '%s'\n" "$GIT_DIFF_PATH_COUNTER" \
     "$GIT_DIFF_PATH_TOTAL" "$MERGED"
 if use_ext_cmd
 then
   printf "Launch '%s' [Y/n]: " \
于 2013-12-29T08:16:06.747 回答