从 cgit 获取永久链接

从 cgit 获取永久链接

GNU 和 Linux 内核等项目不使用 Gitlab 或 Github,而是使用中央银行。例如,这是main.cGNU 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,因此它们实际上是指向当前提交的链接,而不是指向特定提交的永久链接。因此,如果文件被重命名或删除,行号最终可能会指向完全不同的代码部分或完全中断。更好的链接应该是这样的:

https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c?id=d7ff21ecd70bbf9dfda7b3a136b22f631cd80d22#n114

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/printk/printk.c?id=457c89965399115e5cd8bf38f9c597293405703d#n1340

以下是指向当前树中不存在的文件的链接示例:

https://git.savannah.gnu.org/cgit/make.git/tree/INSTALL?id=6c9e53d64804a856580876f2019ce4ea1e42b4e0#n70

所以我很确定这些算作永久链接。

如果我使用 Gitlab 或 Github,按下y给我一个永久链接。使用cgit,我需要执行以下操作:

  1. 记下行号(写下来或复制到某处)。

    https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c#n114

  2. 点击“日志”。

    https://git.savannah.gnu.org/cgit/make.git/log/src/main.c

  3. 找到最近的提交并单击提交消息。

    [SV 46013] 允许从 Makefile 中递归覆盖变量

    https://git.savannah.gnu.org/cgit/make.git/commit/src/main.c?id=d7ff21ecd70bbf9dfda7b3a136b22f631cd80d22

  4. 单击“树”字段中指向实际文件的链接(第二个链接)。

    65d7554922d1bc9bebfa22ca30741f4d6cd4c8ca /src/main.c

    https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c?id=d7ff21ecd70bbf9dfda7b3a136b22f631cd80d22

  5. 查找我记下的行号并导航到该行。

    https://git.savannah.gnu.org/cgit/make.git/tree/src/main.c?id=d7ff21ecd70bbf9dfda7b3a136b22f631cd80d22#n114

  6. 复制 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 返回)

当然,它不是自动化的,但它至少看起来不那么乏味。

相关内容