我想从我的代码存储库中分离二进制文件(媒体)。这值得么?如果是这样,我该如何管理它们?

时间:2010-10-21 17:57:22

标签: version-control cvs

我们的存储库变得越来越大,因为我们拥有大量的媒体(数百个1 MB的jpeg,数百个PDF等)。

我们检查这些存储库的开发人员必须等待异常很长时间,因为这对于某些回购。

之前还有其他人有这种困境吗?我是通过将代码与媒体分开来以正确的方式进行的吗?以下是我遇到的一些问题/担忧:

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

我很欣赏有关管理媒体和代码的问题。

1 个答案:

答案 0 :(得分:0)

首先,是的,从源代码控制中分离媒体和生成的内容(如生成的pdf)是一个好主意 那是因为:

  • 磁盘空间和结帐时间(正如您在问题中描述的那样)
  • 这种文件实际上没有使用CVS功能(没有差异,没有合并,只有标签和分支)

也就是说,任何这种过渡都是昂贵的 您需要将开发管理过程(在正确的位置生成正确的文件)与开发过程分开(从一两个参考资料开发/更新您的项目)

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

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