在vc操作后恢复修改时间

时间:2014-04-23 18:30:55

标签: git version-control makefile timestamp filemtime

Make纯粹是面向时间戳的:如果源比目标更旧,则重建目标。如果对某些主要版本控制进行绕道操作,这可能会导致大型应用程序中的长时间重新编译。

让我举个例子。假设我有一个旧的功能分支,但尚未合并,我想看看它是如何做的。所以从master开始,我会检查那个分支,然后将master合并到它中,然后编译。一切都非常好,如果功能很小,那么与主人的差异也应该很小。除非功能分支真的很旧,否则我会撤消,然后在文件系统中重新进行大量修改。

作为第二个例子,您可能会想到将大部分代码二等分,同时寻找一些超出git pickaxe但不需要重新编译代码的复杂条件。在找到我要找的东西之后,我应该回到我的主分公司。但在两者之间,如果二分窗口足够大,可能会修改许多文件。

所以我想知道的是:是否有一些工具可以让我预先拍摄修改时间的快照,并恢复那些内容被这些操作恢复的文件的mtimes。当然,当我完成时,我必须明确地告诉它,因为整个问题是文件可能会在两者之间发生变化。

我想我正在寻找一个与git集成的工具,因为对于一个通用工具,拍摄一个大源树的快照也需要相当长的时间,所以它必须是可以跟踪文件的东西他们被修改,例如使用一些钩子。另一方面,如果git status也必须检查每个文件的内容,那么通用工具的成本可能不会那么高。

是否有这样的工具,或者我必须自己写一个?

请注意Checking out old file WITH original create/modified timestamps似乎不是我想要的,在任何情况下都会花费太长时间。

2 个答案:

答案 0 :(得分:1)

找不到合适的工具,我最后写了my own tool。事实证明它比我想象的要困难,主要是因为哈希所有这些文件的内容比我想象的要便宜,至少在热文件系统缓存方面是这样。

答案 1 :(得分:0)

如果衍生版本的生产成本太高,并且如果这种分支切换并回到某个旧基线是你经常做的事情(为什么?)那么你应该考虑检查这些派生版本及其输入,和基线标签。