GNU 和 Linux 内核等项目不使用 Gitlab 或 Github,而是使用中央银行。例如,这是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
点击“日志”。
找到最近的提交并单击提交消息。
单击“树”字段中指向实际文件的链接(第二个链接)。
查找我记下的行号并导航到该行。
复制 URL。
早在 2016 年 6 月,有人在邮件列表中发布了此消息cgit
:
我一直在使用一些由 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
?
答案1
只是稍微快一点,似乎您可以转到选项commit
卡并按下标记的按钮Head
(似乎只是将 HEAD 的哈希值添加到 url)然后返回选项tree
卡并单击您的行号。
https://i.stack.imgur.com/hXDwc.gif(我复制了行号并按 ctrl+f 返回)
当然,它不是自动化的,但它至少看起来不那么乏味。