2

我正在尝试$Id: $用 git 复制 Subversion 的功能。我知道我可以.gitattributes用来设置ident属性,这将允许我将 blob ID 嵌入到源代码注释中。这是基本要求,我被覆盖了。

但是我正在努力弄清楚如何使 ID 在实际意义上有用。git log并且git blame需要一个文件名,所以我不能用他们的 ID。git show只显示 blob 内容,但不提供任何指向提交的链接。

我想要的是,给定一个 blob ID,以获取创建该 blob 的提交。(最终,获取文件的数据,git log或者git blame能够检出包含该文件的修订版)。

我很欣赏像 git 这样的分布式系统中的提交历史比颠覆更复杂,但如果我能得到任何东西作为起点,那就足够了。我真正需要的是能够证明给定源代码,我可以追溯到版本控制历史。

4

2 回答 2

0

git tag 命令呢?检查此链接作为起点:

https://git-scm.com/book/en/v2/Git-Basics-Tagging

于 2017-02-14T15:35:32.810 回答
0

除了 blob id 之外,gitattributes手册还描述了一个export-subst过滤器,因此您可以打开它并使用它$Format:%H$来添加提交哈希,或$Format:%d$包含分支/标签名称。您必须使用git archive.

例如:

$ cat .gitattributes
* export-subst ident
$ cat foo.c
// Blob hash: $Id$
// Commit hash: $Format:%H%d$
$ git archive master | tar -xO
* export-subst ident
// Blob hash: $Id: 9e0569a55a4eaacdf8d100a2c3d3654cf767650b $
// Commit hash: 3802b7884faf182ce0994ac9d94925dad375be05 (HEAD -> master, tag: v2)
于 2017-02-14T15:54:38.980 回答