我有一个构建步骤,它需要一个工作副本,对其进行一些处理,然后将它传递给我们的生产服务器。工作副本是使用裸存储库中的钩子创建的,该存储库会将更改推送到。为了减少构建步骤的时间,它将文件的修改时间与上一个构建步骤的结束时间进行比较,并且如果文件已更改,则仅进行额外处理(缩小,cdn uplaod等)。似乎构建步骤正在处理比它应该多得多的文件。我现在的主要嫌疑人是git。
当web钩子中发生git pull时,未更改的文件是否会更改其上次修改时间?如果是这样,有什么工作吗?
答案 0 :(得分:0)
我只是测试了它,不,git pull
不会改变未更改文件的mtime。您描述的行为将严重影响任何以Makefile为中心的构建过程。 Linux内核开发人员不会支持它。
Git does not store mtimes, for the reasons given in this thread,所以一旦触摸了文件,Git就无法恢复其mtime。如果您执行git checkout
,则会触及任何必须更改以使您的工作副本与签出的提交相匹配的文件。
你的网络钩子可能正在做一些额外的事情,比如结帐。