代码之家  ›  专栏  ›  技术社区  ›  Spoike Otávio Décio

如何在DVC中适当地管理大型艺术资产?

  •  48
  • Spoike Otávio Décio  · 技术社区  · 15 年前

    有没有 好的 使用DVCS工具处理大型资产(即1000张图像、Flash电影等)的方法,如 hg git . 如我所见,克隆包含4GB资产的存储库似乎是不必要的开销,因为您将要签出这些文件。如果将源代码与资产文件混合在一起,这看起来相当麻烦。

    在Web开发环境中,是否有人对此有任何想法或经验?

    3 回复  |  直到 7 年前
        1
  •  35
  •   Dave Anderson    10 年前

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

    分布式,两个存储库

    一个回购中的资产,另一个回购中的代码。

    优势

    • 在Web开发环境中,如果不直接使用图形文件,则无需克隆巨型资产存储库。如果您有一个Web服务器,它处理与动态内容(php、asp.net、ror等)分开的资产,并且正在与资产回购同步,那么这是可能的。

    缺点

    • DVC工具不跟踪其他存储库,而只跟踪它们自己的存储库,因此没有任何直接的BOM(物料清单)支持,也就是说,没有明确的方法来判断两个存储库何时同步。(我想这就是 git-submodule repo 是)。

      例子: 艺术家在一个存储库中添加了一张新图片,程序员添加了使用图片的功能,但是当有人不得不回溯版本时,他们就不得不以某种方式跟踪这些更改。

    • 资产存储库开销,即使它只影响使用它的人。

    分布式,一个存储库

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

    优势

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

    缺点

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

    由于需要克隆大型资产存储库,上面列出的这两种策略仍然存在开销过大的缺点。此问题的一个解决方案是上述第一个策略的变体,即两个存储库;将代码保存在分布式VCS repo中,将资产保存在集中式VCS repo中(如SVN、Alienbrain等)。

    考虑到大多数图形设计人员如何处理二进制文件,通常不需要进行分支,除非确实有必要(新功能需要大量资产,直到很久以后才需要这些资产)。缺点是您需要找到一种方法来备份中央存储库。因此,第三种战略:

    非存储库资产(或CMS中的资产)

    通常,存储库中的代码和资产不在存储库中。资产应该放在某种内容/媒体/资产管理系统中,或者至少放在定期备份的文件夹中。这假设很少需要用图形来回溯版本。如果需要进行反向跟踪,则图形更改可以忽略不计。

    优势

    • 不会膨胀代码存储库(对于Git很有帮助,因为它经常进行文件检查)
    • 能够灵活地处理资产,例如将资产部署到专门用于资产的服务器
    • 如果在带有API的CMS上,资产在代码中应该相对容易处理。

    缺点

    • 无BOM支持
    • 没有简单的广泛版本回溯支持,这取决于您资产的备份策略。
        2
  •  3
  •   Martin v. Löwis    15 年前

    思想,没有经验:我确实会把代码和数据分开。假设有一组图像属于应用程序,我将把它保存在一个集中的服务器上。在代码中,我将(通过显式编码)安排应用程序可以集成本地或远程资产。然后,贡献者可以首先在本地存储中放置新图像,并在需要和批准时将其与某种(显式)上载过程集成到中央存储中。

        3
  •  2
  •   Gabriel Hurley    15 年前

    我自己也曾为此挣扎过。正如您所说,对资产的GBS进行版本控制可能是一个巨大的痛苦。

    对于需要外部参与的项目,我发现mercurial是 工作 解决方案,但不是很好。它会占用大量文件的磁盘空间,并且根据具体情况会相当慢。

    对于我的内部设计工作,我更喜欢使用简单的同步工具(rsync、synctoy等)在服务器/机器之间保持目录的最新,然后手动进行版本控制。我发现除了主要的修订外,我很少需要版本控制。

    推荐文章