是否有任何良好的方式可以使用诸如hg和git之类的DVCS工具处理大型资源(即1000张图像,闪光电影等)。在我看来,克隆充满4 GB资产的存储库似乎是一个不必要的开销,因为你将检查文件。如果您将源代码与资产文件混合在一起,这似乎相当麻烦。
有没有人在网络开发环境中有任何想法或经验?
答案 0 :(得分:35)
这些是我在这个主题问题上的一些想法。最后,您可能需要将资产和代码尽可能分开。我可以想到几种可能的策略:
一个仓库中的资产和另一个仓库中的代码。
DVCS工具不跟踪他们自己的其他存储库,因此没有任何直接的BOM(物料清单)支持,即没有明确的方法来判断两个存储库何时同步。 (我想这是git-submodule或repo的用途。)
示例:艺术家在一个存储库中添加了一张新图片,程序员添加了使用图片的功能,但是当有人必须回溯版本时,他们不得不以某种方式自行跟踪这些更改。
资产存储库开销,即使它只会影响那些使用它的人。
资产和代码驻留在同一个存储库中,但它们位于两个单独的目录中。
由于您需要克隆大型资产存储库,因此上面列出的两种策略仍然具有开销较大的缺点。这个问题的一个解决方案是上面第一个策略的变体,两个存储库;将代码保存在分布式VCS存储库中,将资产保存在集中式VCS存储库中(例如SVN,Alienbrain等)。
考虑到大多数图形设计师如何使用二进制文件,除非确实需要,否则通常不需要分支(新功能需要大量资产,直到很久以后才需要)。缺点是您需要找到备份中央存储库的方法。因此,第三个策略:
存储库中的代码与往常一样,资产不在存储库中。资产应该放在某种内容/媒体/资产管理系统中,或者至少放在经常备份的文件夹中。这假设很少需要使用图形来回溯版本。如果需要回溯,那么图形变化可以忽略不计。
答案 1 :(得分:3)
思考,没有经验:我确实会从数据中分离代码。假设存在一组属于应用程序的图像,我会将其保留在集中式服务器上。在代码中,我将安排(通过显式编码)应用程序可以集成本地或远程资产。然后,贡献的人可以首先在他们的本地商店中放置新图像,并在需要和批准时将其与某种(显式)上传程序集成到中央商店。
答案 2 :(得分:2)
我自己也在努力解决这个问题。如你所说,版本化GB的资产可能是一个巨大的痛苦。
对于需要外部参与的项目,我发现Mercurial是工作解决方案,但不是很好。它会占用大型文件的磁盘空间,并且根据具体情况可能会相当慢。
对于我的内部设计工作,我更喜欢使用简单的同步工具(rsync,synctoy,其他)来使目录在服务器/机器之间保持最新,然后手动进行版本控制。我发现除了重大版本之外,我很少需要进行版本控制。
答案 3 :(得分:0)
答案 4 :(得分:0)
也许在这种情况下应该提到GIT LFS(另请参见Atlassian's git lfs tutorial)