我知道我可以使用git difftool
该--dir-diff
选项来一次性比较所有文件。
但是使用difftool
with prompt 有其用途(对于相当少量的文件进行比较),特别是从 git 1.7.8 开始,您可以在其中跳过文件。
但是,该提示不会显示差异队列中有多少文件或已经区分了多少文件。
您将如何在difftool
提示中显示该信息?
我知道我可以使用git difftool
该--dir-diff
选项来一次性比较所有文件。
但是使用difftool
with prompt 有其用途(对于相当少量的文件进行比较),特别是从 git 1.7.8 开始,您可以在其中跳过文件。
但是,该提示不会显示差异队列中有多少文件或已经区分了多少文件。
您将如何在difftool
提示中显示该信息?
单独使用 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
- 修改
run_external_diff()
函数indiff.c
为计数器设置一个环境变量,为差异队列中的文件总数设置一个环境变量。
diff 队列的大小已经在diff_queue_struct
.
对于计数器,在diff_options
结构中定义一个新变量并在函数中将其重置为零diff_setup_done()
。
预先增加run_external_diff()
函数内的计数器。- 修改
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]: " \