我找不到 git 文档在哪里谈论 -- 选项,顺便说一句,这很有效
其实这是必要的,因为“git blame”准备采取
古代奇怪的参数顺序“blame <path> <rev>”除了
通常是“blame [<rev>] <path>”。
这意味着,由于 Git 2.17(2018 年第二季度)将解释“git blame HEAD COPYING”在裸存储库中无法运行,而“git blame HEAD -- COPYING”运行正常。
但从 2.17 开始,您将不再需要 '--'。
参见Junio C Hamano (gitster)commit 0c668f5(2018 年 2 月 5 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 0c668f5,2018 年 2 月 7 日)
blame: 收紧命令行解析器
一个古老的奇怪参数顺序“blame <path> <rev>”
通常“blame [<rev>] <path>”至少有两个否定
后果:
为了区分这两个,它检查最后一个命令是否
行参数命名工作树中的路径,使用
file_exists().
但是,“blame <rev> <path>”是一个请求
解释存储在<path> 中的每一行内容
修订版<rev> 并且不需要工作树版本
的文件。使用file_exists() 进行检查是完全错误的。
为了强制错误的file_exists()检查工作,代码
在这样做之前调用setup_work_tree(),因为它拥有的路径
相对于项目树的顶层。
但是,“blame <rev> <path>”即使在裸存储库中也必须可用,
也没有理由让setup_work_tree() 抱怨
并以“此操作必须在工作树中运行”而死。
要更正前者,请切换到检查最后一个标记是否为
修订版(如果是,请使用“blame <path> <rev>”解析参数
规则)。
通过删除setup_work_tree() 和
file_exists() 检查——唯一调用此函数很重要的情况
是当我们运行“blame <path>”时(即没有开始修订和
要求责怪<path> 的工作树文件,挖掘
HEAD 修订版),但在setup_scoreboard() 中有一个电话只是
在它调用fake_working_tree_commit()之前。
简而言之,从 Git 2.17 开始,这将在一个裸仓库中运行:
git blame master -- README.txt
在 Git 2.22 中,错误消息“This operation must be run in a work tree”应该会消失!
非裸存储库中的“git blame -- path”从工作树开始指责,并且裸存储库中的相同命令出错,因为根据定义没有工作树。
该命令已被教导改为从 HEAD 的提交开始责备,
哪个更有用。
参见SZEDER Gábor (szeder) 的commit a544fb0(2019 年 4 月 7 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit d8620d3,2019 年 4 月 25 日)
blame:当没有给出开始提交时,默认为裸仓库中的 HEAD
当调用 'git blame' 时未指定要启动的提交
归咎于,它从工作树中给定文件的状态开始。
但是,当在没有开始提交的裸存储库中调用时,
那么没有工作树状态可以开始,它会随着
以下错误信息:
$ git rev-parse --is-bare-repository
true
$ git blame file.c
fatal: this operation must be run in a work tree
这是一种误导,因为它暗示“git blame”不起作用
完全在裸存储库中,但实际上,它确实可以正常工作
它被赋予了开始的承诺。
当然,我们可以改进错误消息,但让我们在裸存储库中默认为 HEAD,因为这很可能是用户想要的(如果他们想从另一个提交开始,那么他们会首先指定)。
'git annotate' 只是 'git blame' 的一个薄包装,所以在
在相同的情况下,它打印出相同的误导性错误消息,而这
补丁也修复了它。
注意:如果您使用 gitweb 来查看“责备”,如 Jakub Narębski 的 recommended,则 gitweb 中有一个相当老的错误,其中 javascript 操作模式下的增量责备输出从未起作用。
Git 2.24(2019 年第四季度)已解决此问题。
参见 Robert Luberda (roblub) 的 commit 52bd3e4(2019 年 10 月 27 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit 0d6799e,2019 年 10 月 30 日)
gitweb: 在 javascript-actions 模式下正确存储上一个版本
签字人:Jonathan Nieder
签字人:Robert Luberda
签字人:Jakub Narębski支持>
没有这个改变,设置
$feature{'javascript-actions'}{'default'} = 2;
在gitweb.conf打破gitweb的责备页面:点击页面第二列显示的行号没有效果。
作为比较,在禁用 javascript-actions 的情况下,单击行号会加载该行的先前版本。
地址https://bugs.debian.org/741883。