使用 nodegit,如何在 git 存储库中找到给定文件上次更新的日期?

fra*_*ure 5 git nodegit

我正在尝试使用 nodegit 将 git 视为内容的数据库。因此,我正在编写函数来访问 repo 中的内容。我能够检索关于给定文件的文件 blob 和其他信息,但我正在努力获取时间戳信息。

我想获得 1) 创建文件的日期,以及 2) 上次更新的日期。但到目前为止,我还没有弄清楚这怎么可能。

为了获取文件,我需要按照以下步骤操作:

1)Commit使用检索最新的getMasterCommit
2) 从 中CommitTreeEntry使用getEntry.
3) 从TreeEntry,获取各种元数据,然后获取Blobwith getBlob
4) 从Blob,获取其他元数据以及文件的原始文本。

问题是,我唯一能得到我找到的日期的地方是Commit,它有一个date函数。这可能有助于获取上次更新日期,但实际上并没有帮助,因为它只返回Commmit(显然!)的日期,但尚不清楚该文件是否已针对该提交进行了更新。

我还希望能够获取为给定文件创建的日期。我可以想象这可能通过搜索给定 TreeEntry 的提交历史来获得,但我尚不清楚如何做到这一点。事实上,能够搜索给定文件的提交历史可能是这里需要的东西。但我一直无法看到这是否可能。

有人可以在这里提供指导吗?

yel*_*yed 2

您可以使用 Rev Walker 来漫步历史,就像您正在做的那样git log。看一下这个示例: https: //github.com/nodegit/nodegit/blob/master/examples/walk-history-for-file.js

使用fileHistoryWalk,您可以过滤文件以查找您感兴趣的文件,然后获取包含该文件的最早的引用。