1

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

让我给你举个例子。假设我有一个尚未合并的旧功能分支,我想看看它是怎么做的。所以从master开始,我会签出那个分支,然后将master合并到它里面,然后编译。一切都很好,如果功能很小,那么与 master 的差异也应该很小。除了如果功能分支真的很旧,我在文件系统中撤消然后重新做了很多修改。

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

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

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

有没有这样的工具,还是我必须自己写一个?

请注意,使用原始创建/修改时间戳检查旧文件似乎并不完全符合我的要求,并且无论如何都会花费太长时间。

4

2 回答 2

1

找不到合适的工具,我最终编写了自己的工具。事实证明它没有我想象的那么困难,主要是因为散列所有这些文件的内容比我想象的要便宜,至少在热文件系统缓存中是这样。

于 2014-04-25T16:16:45.417 回答
0

If the production of derived versions is too costly, and if this kind of branch switching and going back to some old baseline is something you do frequently (why?) then you should consider checking in these derived versions along with their inputs, and baseline-label them.

于 2014-04-24T14:24:52.147 回答