我需要跟踪不同的软件安装,轻松升级文件。
我打算使用SCM来跟踪修改,并在需要时快速回滚,或者简化向新机器的迁移。
最初我尝试使用Mercurial(hg
),但我发现它确实修改了文件的修改日期,这是不可接受的。此外,我不愿意使用第三方插件来克服这种限制。
尽管如此,我对替代方案持开放态度,git
或svn
是否支持此功能而无需额外扩展?
此外,如果我可以将自定义放入补丁队列或类似的东西,那么我可以轻松地将安装升级到新版本。
答案 0 :(得分:2)
如果配置Subversion客户端配置文件,Subversion可以使用commit-time
而不是modification-time
。 (在Unix系统中,它位于$ HOME / .subversion / config下)。
我不相信Git中有一个等价的。之前在Stackoverflow中对此进行了讨论。最大的抱怨是,这将打破Make ,这是真的,但大多数版本控制系统都会给你这个选项。
如果这是针对您的公司而非个人使用,您可能需要查看Perforce。 Perforce是一种专有工具,需要花钱。也有例外:小型项目(不超过两个用户)和开源项目可以免费使用该工具。
Perforce的一大优势是它允许您覆盖目录结构。例如,您可能具有服务器的默认结构,但每个服务器稍微修改一下该结构。您可以将默认值保留在一个目录中,并将自定义更改为另一个目录中的每个单独服务器。当您结帐时,您创建一个将两者结合起来的视图。这有点难以解释,但我发现它非常适合跟踪多个服务器配置。
Perforce的缺点(除了成本)是它比Subversion更复杂。在Subversion中,您只需签出一个目录即可。在Perforce中,您可以创建要结帐的视图,然后将其签出。这意味着学习视图配置语言。与Subversion相比,Perforce的第三方工具插件更少,因为它不那么受欢迎。但是,它可能适合您的情况。
答案 1 :(得分:0)
修改时间:使用当前结账时间作为修改日期,因为包括gcc在内的大多数编译器将根据修改时间晚于目标文件的修改时间重新编译修改后的文件。 这样只允许重新编译修改过的文件,以节省编译时间。
答案 2 :(得分:0)
如果您想要版本配置(数据),而不是监控数据的变化,您可以考虑etckeeper
另请阅读Track changes to /etc (configuration files) with etckeeper和Managing Configuration Changes with Git
PS - 在vanilla之上的自定义配置仍然需要Mercurial和MQ
PS2 - 无论如何你都会有时间问题