我正在尝试使用nodegit将git视为内容的DB。因此,我正在编写功能以访问存储库中的内容。我可以检索文件斑点和有关给定文件的其他信息,但是我正在努力获取时间戳信息。
我想获得1)创建文件的日期,以及2)最后更新的日期。但是到目前为止,我还没有弄清楚这是怎么可能的。
为了获取文件,我需要按照以下步骤操作:
1)使用getMasterCommit
检索最新的Commit
。
2)在Commit
中,使用getEntry
获取文件TreeEntry
。
3)从 TreeEntry
中获取各种元数据,然后用 getBlob
获取Blob
。
4)从Blob
中获取其他元数据以及文件的原始文本。
问题是,我发现我发现的日期唯一的地方是来自Commit
的date
功能。这可能有助于获取最后的更新日期,但实际上没有帮助,因为它只是返回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