2013-02-26 24 views
1

在一个git存储库中,我可以在分支之间来回切换,文件修改时间如ruby中的mtime(或基于操作系统的修改度量时间,例如通过ls -l)显示上次更改分支的时间,而不是文件修改的实际时间。在git仓库中获取正确的文件修改时间(在ruby中)

我知道Git会为所有文件存储文件修改时间,但是如何获取显示的实际修改日期,例如,从一个红宝石电话?

例如我知道我可以通过命令行得到这样的:

git log -1 --format="%ad" -- path/to/file

,但不知道什么是最好的红宝石的方式做到这一点。

回答

1

我相信这是不可能的;即git只存储提交时间,而不是修改时间。但是,您可能想要查看metastore,它是将此元数据存储在单独文件中的git的补充。

但是,由于提交时间足够满足您的需要,您可以直接从ruby运行命令;例如:

%x(git log -1 --format='%ci' path/to/file) 

或者您可以使用ruby git libraries之一。我从来没有使用过这些库,所以我不能真正保证它们中的任何一个。

编辑:添加了关于提交时间的部分,因为这对于OP的目的来说已经足够了。

+0

不确定为什么提交时间不会是文件的最后修改时间。因此,访问上次提交的文件对我的情况会很好。不知道为什么我需要metastore。 – cboettig 2013-02-26 22:32:34

+0

提交时间本身就是提交,与提交树的任何内容无关。 – jthill 2013-02-26 23:18:25

+1

@cboettig啊,如果提交时间足够了,你可以通过查看文件的第一个日志条目来检索它。哦...现在我看到你已经用git log例子编辑了你的帖子。要从ruby访问它,你可以直接运行命令;像'%x(git log -1 --format ='%ci'path/to/file)',或者使用其中一个[ruby git库](https://www.ruby-toolbox.com/categories/git_Tools)。我从来没有使用过这些库,所以我不能真正保证它们中的任何一个。 – Steinar 2013-02-26 23:21:03

相关问题