我正在进行的一个项目涉及持续维护一个基本 Linux 磁盘映像,该磁盘映像被克隆到嵌入式设备上。
现在,每次进行更改时,我们都会在文件中记录我们所做的事情并保存磁盘映像的副本。然而,作为一名软件工程师,这与传统做法背道而驰:使用工具来处理配置管理和控制。
是否有好的工具基本上可以在文件级别执行此操作,允许我们提交/回滚对整个系统磁盘上实际文件的更改?或者,有没有什么东西可以比传统的源代码管理工具更好地处理大文件,而传统的源代码管理工具并不是专门为巨型二进制文件设计的?
我正在进行的一个项目涉及持续维护一个基本 Linux 磁盘映像,该磁盘映像被克隆到嵌入式设备上。
现在,每次进行更改时,我们都会在文件中记录我们所做的事情并保存磁盘映像的副本。然而,作为一名软件工程师,这与传统做法背道而驰:使用工具来处理配置管理和控制。
是否有好的工具基本上可以在文件级别执行此操作,允许我们提交/回滚对整个系统磁盘上实际文件的更改?或者,有没有什么东西可以比传统的源代码管理工具更好地处理大文件,而传统的源代码管理工具并不是专门为巨型二进制文件设计的?
在我发表评论五年后,我有了一个更好的解决方案。Artifactory 和 Nexus 旨在作为 CI/CD 代码管道的一部分来完成这项工作。
就我而言,我使用 Jenkins、Artifactory、GitHub、CircleCI 以及出于遗留原因 Perforce 来管理一个包含 70k+ 文件的代码树(代码树不是我的设计!),用于 C++ 和 Javascript 构建。
FOSS Artifactory 非常有限,您可以使用版本控制存储任意文件,但您不能使用让您控制管道的步进机制,因为它将工件从构建移动到测试到......部署。
Artifactory Pro 不是免费的,但它包含许多标准包的存储库,例如 Docker 容器、Debian、NPM、Gems 等。
配置管理应该以进行修改的首选形式进行。对于磁盘映像,这意味着实际文件,以及用于构建映像的构建脚本。这背后的原因与您首先保留历史记录的原因有关:
由于可以提取磁盘映像,因此如果仅跟踪二进制文件,您不会完全陷入困境,但通过跟踪源,这些操作会容易得多。
我们最终将关键文件放在源代码控制中,而不是整个系统。
我有完全一样的问题。目前我的版本库在 git 中超过 150G,从 CVS 转移。CVS 完美地处理了小文件,但对多 G 文件犹豫不决。所以。万一其他人路过,这里有一些我正在寻找的可能的解决方案:
http://git-annex.branchable.com/
https://github.com/jedbrown/git-fat
https://github.com/schacon/git-media
http://code.google.com/p/boar/
如果它可以处理 8G 文件,也可能是 Subversion。