在Windows上,是否有用于管理Git中大型二进制文件的工具?

6

我已经熟悉如何在git中管理大型二进制文件(或大量文件)的解决方法。我也看过 git-annex, bup, 和 git-media.,但没有一个声称能够为Windows用户提供很好的支持。

有没有一些适用于Windows系统的类似程序呢?


为了更好地说明,我正在尝试对系统部署位进行版本控制:操作系统镜像、驱动程序、第三方安装程序、第一方安装程序(我们的应用程序)。我需要将所有内容放在一个连贯的捆绑包中(标签)。并且能够获取任何活动发布版本的整个捆绑包。

我已经更新了我的答案以适应你的情境。 - VonC
git-annex似乎在Windows上有所进展,而且它的助手也将于本月移植到Windows。很快,也许就能用了!这种东西多年前就应该存在了,有点傻。 - iono
2个回答

3
我不知道有没有这样的解决方案,正如你所知,大型二进制文件与以下内容不兼容:
  • VCS(因为对它们进行差异和合并没有意义)
  • DVCS(分布式存储库旨在被克隆,使用肥胖的存储库会很快变得繁琐)
唯一剩下的解决方案(实际上是操作系统无关的)是使用外部工件存储库(例如 Nexus),来存储那些二进制文件。

OP Anthony Mastrean指出他需要:

对系统部署文件进行版本控制:操作系统映像、驱动程序、第三方安装程序、第一方安装程序(我们的应用程序)。
我需要将所有内容放在一个连贯的捆绑包中(标签),并能够获取任何一个活跃发布的整个捆绑包。

这将混合:

  • 开发需求(版本控制,即分支和比较版本)
  • 部署需求(获取所有正确的标签以便部署和运行)

除了非开发的内容(即已构建或已存在的内容),其他任何东西都不应该在版本控制系统中(除了非常小的资源,例如图标,这些资源变化不大)。

通常版本控制的是“发布文件”,其中包含所有额外信息(校验和、其他参考路径等),供部署脚本使用,以获取正确的构件。


所以,我们知道版本控制开发代码是可行的。那么由此产生的就是发布文件。你的意思是只需将它们倒出到已知共享目录上,并使用某种标记方案(版本号、发行名称等)。并为部署脚本做版本控制,这些脚本作用于发布文件? - Anthony Mastrean
@Anthony:你刚刚描述了Maven的功能;)pom.xml是有版本控制的,但所有的构件都存储在Maven仓库中,这只是一个遵循精确命名约定(组、构件、版本)结构的共享目录。因此,即使您的项目与Java-Maven项目无关,这些发布策略背后的思想仍然适用。 - VonC
Perforce非常支持大文件,并且是一个优秀的版本控制系统。 - ptman
@ptman确实是一个非常优秀的版本控制系统,但由于它是一种分布式系统,最好不要将大文件放入其中,以保持克隆的合理性。 - VonC
好的,看到你说“大型二进制文件与版本控制系统不兼容”的评论,我只是想指出Perforce是一个可以很好处理大型二进制文件的版本控制系统,所以这个说法是不正确的。但接着你却称Perforce是一个分布式版本控制系统,实际上它并不是。所以你并没有纠正错误信息,反而提出了另一个虚假的说法。 - ptman
显示剩余2条评论

2
在GIT或任何其他版本控制系统中,管理大型二进制文件没有好的方法。共识是您需要数字资产管理系统来完成此操作。数字资产是指照片、音频剪辑、视频等内容。
有许多开源DAM软件可用,本页面对所有主要软件进行了评估http://www.opensourcedigitalassetmanagement.org/
如果您不需要版本控制支持,许多人会使用像MongoDB这样的存储快速构建解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接