在我的服务器上,我托管我的个人 git 远程项目(使用 gitosis),并且我构建了一个 Web 界面来浏览存储库(类似于 Github)。
在远程端,您不允许做很多事情,因为缺少工作树,这是正确的:顺便说一句,对于存储库资源管理器,只需很少的命令我就可以做几乎所有事情。
除了gitblame。
我无法找出如何在远程端存储库中归咎于没有工作树的文件。你有什么想法吗?
on my server I host my personal git remote-side projects (with gitosis), and I have built a web interface to browse the repositories (something like Github).
On the remote-side, you are not allowed to do a lot of stuff, because a working tree is missing, and this is correct: btw, for a repository explorer, with few commands I can do almost everything.
Except for git blame.
I'm not able to find out how to blame a file without a working tree, within the remote-side repository. Got you some ideas?
发布评论
评论(2)
即使在裸存储库中,以下内容也应该有效:
例如
The following should work even in bare repositories:
E.g.
实际上,这是必要的,因为“
git Blame
”准备采取古代奇怪的参数顺序“
blame ”除了
通常的“
责备[]
”。这意味着,Git 2.17(2018 年第 2 季度)将解释裸存储库中的“
git Blame HEAD COPYING
”无法运行,而“git Blame HEAD -- COPYING
”运行很好。但从 2.17 开始,您将不再需要“
--
”。请参阅 提交 0c668f5(2018 年 2 月 5 日),作者:Junio C Hamano (
gitster
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 0c668f5,2018 年 2 月 7 日)简而言之,从 Git 2.17 开始,这将在裸存储库中工作:
而使用 Git 2.22,错误消息“
此操作必须在工作树中运行
”应该消失!非裸存储库中的“
gitblame --path
”开始从工作树进行指责,并且裸存储库中的相同命令会出错,因为根据定义没有工作树。该命令已被教导从 HEAD 处的提交开始指责,
哪个更有用。
请参阅 提交 a544fb0(2019 年 4 月 7 日),作者:SZEDER Gábor (
szeder
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 d8620d3,2019 年 4 月 25 日)注意:如果您使用 gitweb 查看“指责”,如 由Jakub Narębski推荐,gitweb中有一个相当老的错误,其中 javascript 操作模式下的增量指责输出从未起作用。
Git 2.24(2019 年第 4 季度)已修复此问题。
请参阅 提交 52bd3e4(2019 年 10 月 27 日),作者:罗伯特·卢伯达 (
roblub
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 0d6799e,2019 年 10 月 30 日)使用 Git 2.42(2023 年第 3 季度),“
git Blame --contents=文件
"(man) 已被教导如何在裸存储库中工作。请参阅 提交 835950b(2023 年 7 月 21 日),作者:Han Young (
eseedo
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 f4a7c24,2023 年 8 月 4 日)Actually, this is necessary because "
git blame
" is prepared to take anancient odd argument order "
blame <path> <rev>
" in addition to theusual "
blame [<rev>] <path>
".That means, as Git 2.17 (Q2 2018) will explain "
git blame HEAD COPYING
" in a bare repository failed to run, while "git blame HEAD -- COPYING
" run just fine.But from 2.17 on, you won't need '
--
' anymore.See commit 0c668f5 (05 Feb 2018) by Junio C Hamano (
gitster
).(Merged by Junio C Hamano --
gitster
-- in commit 0c668f5, 07 Feb 2018)So in short, starting Git 2.17, this will work in a bare repo:
And with Git 2.22, the error message "
This operation must be run in a work tree
" should disappear!"
git blame -- path
" in a non-bare repository starts blaming from the working tree, and the same command in a bare repository errors out because there is no working tree by definition.The command has been taught to instead start blaming from the commit at HEAD,
which is more useful.
See commit a544fb0 (07 Apr 2019) by SZEDER Gábor (
szeder
).(Merged by Junio C Hamano --
gitster
-- in commit d8620d3, 25 Apr 2019)Note: if you are using gitweb to see the "blames", as recommended by Jakub Narębski, there is a rather old bug in gitweb, where the incremental blame output in javascript actions mode never worked.
This is fixed with Git 2.24 (Q4 2019).
See commit 52bd3e4 (27 Oct 2019) by Robert Luberda (
roblub
).(Merged by Junio C Hamano --
gitster
-- in commit 0d6799e, 30 Oct 2019)With Git 2.42 (Q3 2023), "
git blame --contents=file
"(man) has been taught to work in a bare repository.See commit 835950b (21 Jul 2023) by Han Young (
eseedo
).(Merged by Junio C Hamano --
gitster
-- in commit f4a7c24, 04 Aug 2023)