我是一名软件开发人员,我想测试我的软件的多个版本,使用不同的配置文件和数据库中的不同内容(所有内容都在 Windows 上运行)。
例如,我在生产环境中安装了大约 10 个不同的软件版本、配置和数据库。在更新其中一个安装之前,我希望在测试机器上复制整个环境,然后更新、测试,如果一切正常,再更新生产环境。
解决方案是使用虚拟机来复制每个安装。或者更好的是,由于我一次只测试一台机器,所以我可以使用一台虚拟机,每个安装都有一个快照(这将占用更少的磁盘空间,并且只需要一个 Windows 许可证)。
由于我对 Git 和版本控制系统有一些经验,我想知道使用 Git 代替虚拟机快照是否有意义。我会将二进制文件、配置文件、数据库文件置于版本控制之下(每个安装一个分支),并在 Git 分支之间切换,而不是虚拟机快照。这有意义吗?
Git 分支相对于 VM 快照的主要优势在于文件级别的灵活性。例如,可以更轻松地比较两个分支中存在的文本文件的差异。此外,如果我有两个存储库(bin 和 db),我可以使用任何二进制文件集测试任何数据库。使用 Git,我可以使用我的开发机器而无需使用虚拟化(即使我不会复制生产机器上安装的所有软件)。
那么将整个 Windows 文件系统保留在 Git 下怎么样?我想这会复杂得多,并且安装的应用程序、Windows 注册表都会出现问题……
答案1
这听起来不像是 Git 的理想应用程序。Git 不适用于存储大型二进制文件。您可以查看git 附件项目使用 Git 对二进制文件进行版本控制,但实际上并不将二进制文件存储在 Git 中。
如果您只是在谈论动态交换目录和文件的层次结构,那么只需保留该层次结构的“黄金主”副本(最好处于只读状态)并使用脚本将其复制到位即可相当简单地完成此操作。这将是一些相当简单的cmd.exe
脚本。