使用nodegit,如何找到给定文件的日期最后一次更新



我正在尝试使用nodegit将git视为内容的DB。因此,我正在编写功能以访问存储库中的内容。我可以检索文件斑点和有关给定文件的其他信息,但是我正在努力获取时间戳信息。

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

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

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

问题是,我发现我发现的日期唯一的地方是来自Commitdate功能。这可能有助于获取最后的更新日期,但实际上没有帮助,因为它只是返回Commmit的日期(显然!),但尚不清楚该提交的文件已更新。

我也希望能够获得为给定文件创建的日期。我可以想象,通过通过给定的Treeentry的提交历史进行搜索,这可能是可能的,但是我还不清楚如何做到这一点。实际上,能够搜索给定文件的提交历史记录可能是这里需要的。但是我一直无法看到这是否可能。

任何人都可以在这里提供指导吗?

有一个Rev Walker可以用来漫步历史记录,就像您在进行git log一样。请查看此示例:https://github.com/nodegit/nodegit/blob/master/master/examples/walk-history-for-file.js

使用fileHistoryWalk,您可以过滤文件以查找您感兴趣的文件,然后获得最早的参考文献。

您可以iterate through each file并查看
commit-hash date-time commit-message user file-name。使用终端在存储库中运行以下命令。

$ git ls-tree -r --name-only HEAD | while read filename; do
 echo "$(git log -1 --format="%h %ad- %s [%an]" -- $filename) $filename"
done     

样本输出:

6ea69fa Sun Nov 20 04:29:08 2016 +0600- commit-message-1 [user-1] c.txt
f83fad2 Thu Oct 27 00:14:37 2016 +0600- commit-message-10 [user-4] b.txt
b5356e3 Mon Oct 31 14:55:43 2016 +0600- commit-message-7 [user-2] a.txt

相关内容

  • 没有找到相关文章

最新更新