我正在尝试构建一个工具,使我可以将(私有)GitHub存储库中的文件与Web服务器上的文件进行比较。
我已经弄清楚了如何查询GH API的v3以获取回购中所有文件的列表。类似于以下内容:
https://api.github.com/repos/username/repo-name/git/trees/sha?recursive=1
username
,repo-name
和sha
都是我所知道的变量。这很好。但是,我需要能够获取仓库中每个文件的最新更新/修改的时间戳,以便可以将其与Web服务器上关联文件的最新更新/修改的时间戳进行比较,并知道文件在哪里。回购的master分支比服务器上的文件新。
有没有办法做到这一点?我已经仔细阅读了GH API文档,但找不到任何方法来获取存储库中文件的最新更新/修改时间戳。
我想我可以获取每个GH提交的时间戳,并查看提交中包含哪些文件,但是对于很长时间未更改/提交的文件,我将不得不进行过多的提交获取时间戳,这似乎不合理。
非常感谢您的帮助/指导。
答案 0 :(得分:1)
我认为最好在Web服务器上计算源文件的哈希值,并比较哈希值而不是时间戳。
您可以像这样获取源文件的git-hash:
git hash-object foo.php
如果您没有在Web服务器上安装git,则可以使用纯bash:
printf "blob $(wc -c < foo.php)\0$(cat foo.php)\n" | sha1sum