我继承了一个中等规模的iOS项目 - 大约30,000行代码 - 拥有疯狂数量的图像资产.当然我们使用Git/Github来scm.目前,这些图像都包含在目录树中,因此被摄入到回购中,从中淹没了它,并且通常使开发成为一个令人头痛的问题.
我们在项目上有4个开发人员,有些是虚拟的.我发现将图像移动到Dropbox,从iOS项目中引用它们并保持形状.
有没有人对这个想法发表评论?你做什么处理Git scm设置中的图像/视频/音频文件?
Ern*_*ill 32
实际上,我对此非常紧张; 如果你想更新图像,然后改变主意怎么办?或者,如果您需要使用旧图像构建维护版本,该怎么办?
如果这真的是一个问题 - 我从来没有看到这实际上是一个问题,但我会接受你的意见 - 为什么不只是使用一个回购图像,另一个用于其他一切?然后你可以懒得同步图像.
Bri*_*ell 15
处理可能有点痛苦,但我过去使用的是图像和媒体的子模块.这样,您可以在不获取图像的情况下仅下载代码,但仍可以使图像和媒体与代码保持同步.当子模块历史变得太大时,我们可以创建一个没有历史记录的新repo,并将旧的子模块替换为新的子模块.这样,人们可以与最新版本的媒体同步,而无需完整的历史记录.
我们经常会在子模块中开始使用视频的绿色屏幕,因此我们可以在视频处于最终形式之前进行开发,但是一旦它被合成,我们就会打破子模块历史并推出一个新的子模块只是合成的视频.这避免了为每个视频提供一个完整的额外副本,同时仍然允许你(通过交换子模块的一些手动工作)来获取旧版本,如果你需要的话.
子模块将增加您需要执行的工作量.如果要提交对图像的更改,则需要在子模块中更改它们,提交它,推送它,然后转到父项目,将更改提交到子模块,然后推送它.对于简单的情况,您可以编写一些脚本以使其更容易一些,但在更复杂的情况下,例如合并冲突,它将比使用单个项目更复杂.
git-lfs
似乎是解决这个问题的一个很好的现代解决方案.它将文件作为回购中的本地文本指针进行跟踪,同时将它们存储在外部大型文件存储中.这有点像subrepo解决方案,但不需要那么多的人工干预.
一方面,这使您更加依赖于访问Internet - 如果您无法访问外部文件存储,则可能无法在分支之间切换.另一方面,这意味着您在克隆repo时不会下载每个二进制文件的整个历史记录.
它受GitHub,Visual Studio Online和Bitbucket Server的支持.
归档时间: |
|
查看次数: |
24550 次 |
最近记录: |