在版本控制下存储非源文件的最佳实践

时间:2009-07-17 05:31:18

标签: version-control

我有一个受版本控制的项目,但该项目有一些图像,视频和zip文件经常变化。我不想将这些文件存储在版本控制之下,因为它们会占用大量空间并使更新和提交速度非常慢。

处理此问题的好方法是什么,仍然提交已更改的非源文件?有更好的方法吗?

我目前正在使用subversion,如果有另一个版本控制客户端更适合处理这个问题,请推荐它!

3 个答案:

答案 0 :(得分:6)

我在SVN中有很多非源文件,只有当我更改它时,它才会减慢提交速度。如果他们只是“经常”改变,我不明白这是怎么回事。这个尺寸也不应该是一个问题。如果您的存储库位于服务器上,并且您担心它占用了多少空间,则需要升级。硬盘很便宜。买他们。

有些人强烈认为非源文件不属于源代码控制,我说整个项目应该存储在源代码管理中。这样,如果我的开发系统出现故障,我可以切换到另一个系统,在下载项目几分钟后,我又回到了编码状态。

答案 1 :(得分:3)

您在评论中添加了:

  

我遇到的问题是我不关心那些zip / video文件的版本历史,只要它们是最新的,没有问题。

这意味着您有一个线性的开发工作流程,只能处理一个主分支的最新状态 您似乎没有处理“发布后”阶段,您必须:

  • 维护生产中运行的内容
  • 发展小变革......
  • ..同时进行大规模重构以试验一些重大变革

在最后三个案例中,“我必须使用”或“我当时正在使用的完全图像,视频和zip文件是什么”的问题可能会变得很重要。< / p>

无论如何,如果你觉得SVN没有适当地处理它们,我仍然会建议有一些方法来记住,对于SVN修订xxx到yyy,你使用的是你的二进制文件版本'z'。
为此,您可以设置一个外部存储库,如Maven。请参阅问题“Is it acceptable/good to store binaries in SVN?”(我在该问题的答案位于页面顶部附近,但我直接链接到Evan的回答,因为他提到了Maven)。

答案 2 :(得分:1)

虽然我发现在版本控制中处理非文本文件非常痛苦,特别是那些改变很多的文本,我接受了“如果构建/安装程序需要它应该在版本中的实践”控制”。这当然不是一个严格的规则。我不保持第三方库受版本控制(虽然知道有人这样做)。

在我的商店中设置持续集成服务器后,我得到了这个意见。拥有可能改变的构建所需的一切使得它变得更容易。如前所述,我不会将libs保留在版本控制之下,但这是因为我们很少升级/添加新库。如果您的商店不是这种情况,那么您可以考虑这样做。此外,如果您的图片/视频/拉链每年更改一次,那么我建议您将其置于版本控制之下。