SVN二进制文件合并处理

3

我有一条主干和从该主干分支出来的A分支。

我将一个二进制文件更新了两次,先到了版本A,然后到了版本B。

如果我先合并版本B,然后再合并版本A,是否一定会发生冲突,还是冲突取决于二进制文件的内容?

如果必须发生冲突,那么我可以手动处理它。否则,有没有人可以建议一个在这种合并情况下处理二进制文件的方法?

1个回答

3
有两种方法来解决这个问题:

不要在你的代码库中存储二进制文件

很多网站将编译后的文件存储在Subversion代码库中,但这并不是一个好主意。它们会占用大量空间,而且通常寿命很短。由于无法轻松地清理Subversion代码库,因此它往往会快速增长。我曾经看到过几乎占用1TB空间的Subversion仓库,在清除二进制垃圾后仅剩下几GB。

此外,这些二进制文件也不是那么容易获取。那些确实需要它们的人 - 比如正在进行测试或部署的人 - 必须在自己的计算机上安装Subversion并学习如何使用Subversion才能获得它们。此外,对于开发人员来说,保留这些文件的各种版本没有任何真正的目的。它们的历史很少对开发人员有所启示。

最好将编译后的文件存储在一个发布仓库中。我们使用ArtifactoryJenkins的组合。即使我没有使用Maven,我也使用Maven仓库。我将它们与Ant和Ivy一起使用,甚至在使用C / C ++的地方也使用它。这使得一个项目生成的构件可以被另一个项目使用。

在二进制文件上使用svn:mime-type属性

有时你必须存储二进制文件,因为它们是源文件。例如,GIF和JPG。在这种情况下,你可以在该文件上使用Subversion的svn:mime-type。这可以防止Subversion首先尝试合并二进制文件。

当你进行合并时,如果二进制文件存在冲突会发生什么?你只有两个选择,你可以接受你的版本,意思是保留当前文件的我的版本,或者你可以接受它们的版本,意思是用另一个分支的此二进制文件替换你当前的版本。这简化了合并/解决过程。


谢谢。我了解MIME类型二进制,以防止SVN合并它们的方法。 - Felipe Alvarez
当添加二进制文件时,是否可以自动设置svn:mime-type属性?我知道tortoiseSVN会为我完成此操作,但我想知道命令行用户是否也能实现这一点... - 9a3eedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接