我需要本地和服务器上的文件时间戳同步.这是通过在配置中设置use-commit-times = true来完成Subversion,以便每个文件的最后修改时间是在提交时.
每次我克隆我的存储库时,我都希望文件的时间戳能够反映最后一次更改它们在远程存储库中的时间,而不是在克隆存储库时.
有没有办法用git做到这一点?
我经常在分支之间来回切换.我有一个脚本,它将结帐的内容推送到"运行"环境,在那里我可以看到代码运行并测试它(它是一个Web应用程序).此推送脚本的核心使用rsync,它使用时间戳来检测应该传输哪些文件.因为git-checkout似乎将文件的时间戳设置为当前时间,所以rsync报告所有文件都被推送,只是因为时间戳将被更新.
如何在分支之间切换时让git-checkout保留时间戳,以便rsync仅报告内容更改?
我不想使用rsync的校验和参数,因为它非常慢.
使用 本地构建我的 Haskell 项目时stack build,仅重新编译更改的源文件。不幸的是,我无法让 Stack 在 GitHub Actions 上表现得像这样。请问有什么建议吗?
例子
我用Lib.hsand创建了一个简单的例子Fib.hs,我什至检查缓存的 .stack-work 文件夹是否在构建之间更新,但它总是编译两个文件,即使只更改一个文件。
这是示例:
Lib.hs和Fib.hs+ 依赖项):https : //github.com/MarekSuchanek/stack-test/runs/542163994Lib.hs更改,同时构建Lib.hs和Fib.hs):https : //github.com/MarekSuchanek/stack-test/runs/542174351我可以从日志(详细堆栈)中观察到缓存中的某些内容正在更新,但我完全不清楚是什么以及为什么。它正确地发现只有Lib.hs被改变了:“ stack-test-0.1.0.0: unregistering (local file changes: src/Lib.hs)”所以我不明白为什么所有的都被编译了。我注意到,在2Fib.hi没有更新,.stack-work但其他人(Fib.o,Fib.dyn_hi,和Fib.dyn_o)是。
笔记
当没有更改源文件时, ~/.stack 缓存是可以的,也可以不构建。当然,这是一个虚拟示例,但我们有不同的项目,其中包含更多源文件,可以显着加快构建速度。当更改非源文件(例如 README 文件)时,不会按预期构建任何内容。
如何在新机器上从服务器获取源代码的副本,但保留文件时间戳?
使用以下过程,所有时间戳都设置为当前日期/时间.
hg init是否有选项或不同的程序来保存时间戳?
在这个具体案例中,使用Kiln with TortoiseHg.