如何在DVCS中适当pipe理大型艺术品?

有没有什么好的方法来处理大型资产(即1000年的图像,Flash电影等)与DVCS工具,如HG和GIT 。 正如我所看到的,要克隆充满4 GB资源的存储库似乎是不必要的开销,因为您将检出这些文件。 如果您将源代码与资产文件混合在一起,看起来相当麻烦。

有没有人有任何想法或经验在网页开发的情况下做到这一点?

这是我在这个问题上的一些想法。 最后,您可能需要将资产和代码尽可能分开。 我可以想到几个可能的策略:

分布式,两个存储库

资产在一个回购和代码在另一个。

优点

  • 在Web开发环境中,如果您不直接使用graphics文件,则不需要克隆巨型资产存储库。 如果您有一个处理与dynamic内容(PHP,ASP.NET,RoR等)分离的资产的Web服务器,并且与资产回购同步,则可以这样做。

缺点

  • DVCS工具不跟踪其他存储库,因此没有任何直接的BOM(物料清单)支持,也就是说没有明确的方法来判断两个存储库是否同步。 (我想这是什么git子模块或回购是)。

    例如:艺术家在一个存储库中添加了一个新的图片,程序员添加了使用图片的function,但是当有人需要回溯版本时,他们被迫以某种方式自己跟踪这些更改。

  • 资产库的开销,尽pipe它只影响那些使用它的人。

分布式,一个存储库

资产和代码驻留在同一个存储库中,但它们位于两个单独的目录中。

优点

  • 代码和资产的版本是交织在一起的,所以BOM是实用的。 回溯是可能的,没有太多的麻烦。

缺点

  • 由于分布式版本控制工具跟踪整个项目结构,因此通常无法检出一个目录。
  • 您仍然遇到存储库开销的问题。 更重要的是,您需要检查资产以及代码。

由于您需要克隆大型资产存储库,因此上述两种策略仍具有大量开销的缺点。 这个问题的一个解决scheme是上述第一个策略的一个变体,即两个知识库; 将代码保存在分布式VCS回购中,并将资产保存在一个集中的VCS回购(如SVN,Alienbrain等)中。

考虑到大多数平面devise师如何处理二进制文件,除非真的有必要,否则通常不需要进行分支(新function需要很多资源,而这些资源之后才需要)。 缺点是你需要find备份中央资料库的方法。 因此,第三个策略是:

代码仓库资产(或CMS中的资产)

像往常一样在存储库中存储代码,资产不在存储库中。 资产应该放在某种内容/媒体/资产pipe理系统中,或者至less放在一个定期备份的文件夹中。 这个假设很less需要使用graphics来回溯版本。 如果需要回溯,则graphics变化可以忽略不计。

优点

  • 不会膨胀代码库(有助于例如git,因为它经常进行文件检查)
  • 实现资产的灵活处理,例如将资产部署到专门用于资产的服务器上
  • 如果在CMS上使用API​​,资源应该在代码中相对容易处理

缺点

  • 没有BOM支持
  • 没有简单的广泛版本的回溯支持,这取决于您的资产的备份策略

想法,没有经验:我确实会从数据分离代码。 假设有一组属于该应用程序的图像,我只是将它保存在一个中央服务器上。 在代码中,我会安排(通过显式编码)应用程序可以集成本地或远程资产。 然后人们可以在他们的本地商店里放入新的图像,并在需要和批准时将其与某种(明确的)上传程序整合到中央商店中。

我自己一直在努力。 正如你所说,资产版本化可能是一个巨大的痛苦。

对于需要外部参与的项目,我发现Mercurial是一个可行的解决scheme,但不是一个很好的解决scheme。 它占用大文件的磁盘空间,可能会相当慢,具体取决于具体情况。

对于我的内部devise工作,我更喜欢使用简单的同步工具(rsync,synctoy,其他任何)来使目录在服务器/机器之间保持最新,然后手动进行版本控制。 我发现我很less需要版本控制超越重大修改的任何东西。