Make 纯粹是面向时间戳的:如果源比它的目标更旧,则重新构建目标。如果做了一些主要的版本控制绕行,这可能会导致大型应用程序中的长时间重新编译。
让我给你举个例子。假设我有一个尚未合并的旧功能分支,我想看看它是怎么做的。所以从master开始,我会签出那个分支,然后将master合并到它里面,然后编译。一切都很好,如果功能很小,那么与 master 的差异也应该很小。除了如果功能分支真的很旧,我在文件系统中撤消然后重新做了很多修改。
作为第二个示例,您可能会想象将大部分代码一分为二,同时寻找一些复杂的条件,这些条件超出了 git pickaxe 但不需要重新编译代码。找到我要找的东西后,我应该回到我的主分支。但在这两者之间,如果二分窗口足够大,许多文件可能已被修改。
所以我想知道的是:是否有一些工具可以让我预先拍摄修改时间的快照,并恢复那些内容通过这些操作恢复的文件的 mtimes。当然,完成后我必须明确地告诉它,因为这样做的重点是文件可能会在两者之间发生变化。
我想我正在寻找一个与 git 集成的工具,因为对于一个通用工具,拍摄一个大源树的快照也需要相当长的时间,所以它必须是可以在文件被修改时跟踪文件的东西,例如使用一些钩子。另一方面,如果git status
还必须检查每个文件的内容,那么通用工具的成本可能不会那么高。
有没有这样的工具,还是我必须自己写一个?
请注意,使用原始创建/修改时间戳检查旧文件似乎并不完全符合我的要求,并且无论如何都会花费太长时间。