Version control 我想将二进制文件(媒体)从代码存储库中分离出来。值得吗?如果是,我如何管理它们?

Version control 我想将二进制文件(媒体)从代码存储库中分离出来。值得吗?如果是,我如何管理它们?,version-control,cvs,Version Control,Cvs,我们的存储库越来越庞大,因为我们拥有大量的媒体(数百个1MB JPEG、数百个PDF等等) 我们签出这些存储库的开发人员必须等待异常长的时间,因为这对于某些repo来说是不正常的 以前还有其他人遇到过这种困境吗?通过将代码与媒体分离,我的做法是否正确?以下是我遇到的一些问题/担忧: 如果我将这些迁移到媒体服务器中,那么我担心开发人员使用起来可能会很痛苦。如果两台服务器同时进行编程逻辑和媒体更新,他/她现在必须更新两台服务器,而不是对一台服务器进行更新 如果我将这些迁移到媒体服务器,我仍然需要对

我们的存储库越来越庞大,因为我们拥有大量的媒体(数百个1MB JPEG、数百个PDF等等)

我们签出这些存储库的开发人员必须等待异常长的时间,因为这对于某些repo来说是不正常的

以前还有其他人遇到过这种困境吗?通过将代码与媒体分离,我的做法是否正确?以下是我遇到的一些问题/担忧:

  • 如果我将这些迁移到媒体服务器中,那么我担心开发人员使用起来可能会很痛苦。如果两台服务器同时进行编程逻辑和媒体更新,他/她现在必须更新两台服务器,而不是对一台服务器进行更新
  • 如果我将这些迁移到媒体服务器,我仍然需要对媒体进行版本控制,不是吗?因此,开发人员必须提交代码更新和媒体更新
  • 开发人员如何在本地进行测试?我可以让我的网站使用绝对URL,例如
    src=”http://media.domain.com/site/blah/image.gif“
    ,但这在本地不起作用。我假设我必须更改我的站点模板,以决定它是本地的/开发的还是生产的,并在此基础上更改基本URL
  • 这么做值得费心吗?我们处理大约100-150个站点,而不是十几个左右的主要站点,因此我们有大约100-150个存储库。我们将没有时间或资源来改变现有的网站,我们只能在全新的网站上实现这一点
  • 我仍然需要将生成媒体的脚本(pdf生成器)和生成的媒体保存在代码库中,对吗?更新所有这些pdf生成器以将文件发布到外部媒体服务器将是一个巨大的难题,考虑到缓存,这将是一个额外的难题

如果您能深入了解有关管理媒体和代码的问题,我将不胜感激。

首先,是的,将媒体和生成的内容(如生成的pdf)与源代码管理分离是一个好主意。
这是因为:

  • 磁盘空间和签出时间(如您在问题中所述)
  • 缺少此类文件实际使用的CVS功能(无差异、无合并、仅标签和分支)
这就是说,任何这种过渡都是代价高昂的。
您需要将发布管理流程(在正确的位置生成正确的文件)与开发流程(从一个或两个参考资料中获取正确的材料以开发/更新您的项目)分开

二进制文件通常分为两类:

  • 未生成的二进制文件
    它们最好保存在工件存储库中(例如),在与VCS中文本源使用的标签匹配的标签下
  • 生成的二进制文件(如您的pdf):
    理想情况下,它们不应保存在任何存储库中,而应仅在发布管理阶段生成,以便部署

您可能想告诉我们您正在使用哪些VCS。(我很好奇,现代风投会因为存储库中有很多大文件而变得缓慢。)啊,你抓住我了。我们实际上(是的,是的,是的,1980年)仍然在使用CVS。我们还没有时间或资源迁移到git。在您开始工具转换之前,您现在询问这一点是很好的。这些二元资产的变化频率有多高?它们的修改模式将影响您想要使用的策略。@Novelocrat-图像更新每天都会在几十个站点上进行。好的,所以像Git这样的历史记录将变得巨大,即使每个站点都有自己的存储库。下一个问题:代码和媒体的耦合有多紧密?特别是,媒体内容更改是否直接对应于代码更改?