我使用svn作为一个与其他几个开发人员合作的项目.Svn适用于源代码控制,但是当我们提交dll时,我们都会遇到冲突.
当我解决冲突(删除我的dll作为差异程序无法处理二进制文件),然后必须重建提交.你是如何解决这样的冲突的?
编辑:
dll位于一个单独的svn文件夹中,因为该项目是游戏模式,非程序员需要访问最新版本.
如果它是一个你正在构建的DLL(而不是你没有源代码的外部代码)那么源应该在源代码控制中,而不是二进制代码.
如果您不想将其包含在该特定存储库中,则可以将其包含在svn:external中.
正如其他答案中所述:您不应该首先对生成的dll进行版本控制.但是如果你真的必须对它们进行版本化,那么你可以在不使用删除dll文件的diff工具的情况下解决冲突:
对于每个冲突的文件,Subversion在工作副本中放置三个额外的无版本文件:
filename.mine
这是您更新工作副本之前存在于工作副本中的文件,即没有冲突标记.此文件仅包含您的最新更改.(如果Subversion认为该文件不可合并,则不会创建.mine文件,因为它与工作文件相同.)
filename.rOLDREV
在更新工作副本之前,这是BASE修订版的文件.也就是说,您在进行最新编辑之前检出的文件.
filename.rNEWREV
这是您更新工作副本时Subversion客户端刚刚从服务器收到的文件.此文件对应于存储库的HEAD修订版.
这里OLDREV是.svn目录中文件的修订号,NEWREV是存储库HEAD的修订号.
现在,要解决此类冲突,请删除您不需要的其他文件:
如果你想保留自己的dll,删除文件filename.rOLDREV,filename.rNEWREV
如果要保留存储库中的dll,请删除文件filename.rOLDREV和filename.mine,然后将filename.rNEWREV复制到filename
之后,执行
svn resolved filename
告诉Subversion你自己解决了冲突.