我们需要在我们的存储库中保留.dll。我们的团队经常在.dll文件上遇到SVN冲突,这非常烦人。出于某种原因,即使.dll的mime类型设置为application / octet-stream,svn仍然试图合并它们。
从我发现的here(我发誓过去的方式)它说,只要mime类型不是文本,svn就不会尝试合并它们。但是看着我的dll告诉我svn也在合并我的应用程序/八位字节流文件(至少我假设SVN正在合并,不知道为什么没有合并会有冲突)。为什么hen会尝试合并二进制文件?这只是愚蠢......
有人遇到过这个问题吗?
我的目标是找到一个解决方案,允许二进制文件成为存储库的一部分,但绝不会发生冲突。我希望SVN只用最新的二进制代替,并称之为好。
请不要讨论为什么我应该或不应该将二进制文件放在存储库中 - 我必须也不想要冲突问题。
作为一个FYI:我同时使用Tortoise 1.5.0和Ankh。
答案 0 :(得分:3)
为了确保我理解正确,让我们概括一下:
AFAIK,svn这样做的方法是:
我不认为这可以在一个命令中完成,我也不认为它应该在一个命令中可行,因为第一个命令可能会丢失有价值的数据。
答案 1 :(得分:1)
如果在服务器和本地更改了文件,您显然会发生冲突。当然,更新工作副本包括更新二进制文件,因为它们是修订的一部分。这并不意味着svn尝试合并它们,但你肯定会遇到冲突。如果经常更改这些文件,我猜它们经常生成 - 甚至可能是编译器输出文件。这些文件根本不应该在存储库中。
如果您需要存档发布二进制文件(或类似文件),则应在标记或发布分支上执行此操作,但不应在主干上执行此操作。
答案 2 :(得分:1)
我们对某些文件存在同样的问题。
CVS很好地解决了这个问题,但不幸的是我的公司正在转向Subversion。
每次运行时,我们的应用都会修改某些配置文件,但是当开发人员检查新的更改时,我们希望它们始终覆盖用户存储库。
在.CVSwrappers
文件中,添加*.fileext -k b -m COPY
。这告诉CVS始终在本地存储库中制作文件的备份副本,并在发生冲突时下载新版本。太优雅了。
没有SVN的等效设置。如果有人知道如何,请发布。
答案 3 :(得分:0)
你确定它正在尝试合并它们吗?这听起来更像是你遇到冲突,因为subversion不知道如何合并它们(你不想让它做任何事情)。
如果你有一个本地修改的dll并且有人在你做之前提交相同的dll,你到底想要发生什么?你期望发生什么?这显然是冲突,颠覆不知道你是否希望它使用你的dll或他们的dll。
答案 4 :(得分:-1)
这些dll文件是否构建了实际项目的输出?
如果是这种情况,则不应将它们放入svn中。 Subversion应该包含源文件,构建服务器/ dev框可以从那里构建dll。