GNU 和 Linux 内核等项目不使用 Gitlab 或 Github,它们使用cgit。例如,这里是main.c
GNU make 的第 114 行:
https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c#n114
printk.c
这是 Linux 内核的第 1340 行:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/printk/printk.c#n1340
问题是这些 URL 没有提交 ID,所以它们实际上是指向当前提交的任何内容的链接,而不是指向特定提交的永久链接。因此,如果文件被重命名或删除,行号可能最终指向完全不同的代码部分或完全中断。更好的链接应该是这样的:
这是指向当前树中不存在的文件的链接示例:
所以我很确定这些算作永久链接。
如果我使用的是 Gitlab 或 Github,只需按一下y
键就会给我一个永久链接。有了cgit
,我需要这样做:
记下行号(写下来或复制到某处)。
https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c#n114
单击“日志”。
找到最近的提交并单击提交消息。
单击“树”字段中指向实际文件的链接(第二个链接)。
查找我记下的行号并导航到该行。
复制网址。
cgit
早在 2016 年 6 月,有人在邮件列表上发布了有关此内容的信息:
我一直在使用一些由 cgit 支持的服务,在访问它们时,我发现获取代码行的永久链接很尴尬。
[。. . ]
虽然可用的默认链接便于立即讨论,但我通常更喜欢使用电子邮件和问题跟踪器的永久链接。
[。. . ]
这似乎有点不必要。我想知道是否有一种方法可以让 cgit 轻松地从我从 codesearch.openstack.org 打开的第一页获取到我到达的存储库中同一文件和行号的永久链接一步到位?有没有像github的'按“y”'这样的键,或者可以激活的额外链接,或者这是一个增强?
--- Darragh Bailey,“访问永久链接”,2016 年 6 月 15 日星期三 15:32:20 CEST
https://lists.zx2c4.com/pipermail/cgit/2016-June/003095.html
但看起来没有任何结果。
所以这里有问题:
这些链接是真正的永久链接吗?
是否有更有效的方法从 git 存储库获取永久链接
cgit
?