为什么这是颠覆性的SVN冲突?

时间:2010-11-13 17:53:45

标签: java svn subversive conflict

我正在编写一个必须在Linux和Windows上运行的桌面应用程序,因为在Windows上我需要使用JNI来实现功能。但那不是问题。 我有一个Windows和Linux安装的Eclipse IDE,我使用Subversive来提交我的存储库。 在Windows提交之后,我开始使用Linux来实现linux实现,但我发现自己存在冲突:

.classpath [Working]

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="lib/sqlitejdbc-v056.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

的.classpath [库]

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="lib/sqlitejdbc-v056.jar">
        <attributes>
            <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="QuickBackup/bin"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="bin"/>
</classpath>

正如您所看到的,冲突位于 <attribute>...</attribute> 部分,该部分用于告诉jvm我的dll模块与jni一起使用的位置。为什么? Cound not Subversive只是更新工作版本?

2 个答案:

答案 0 :(得分:2)

你有2个不同性质的问题。首先,如果您使用rev 156修改工作副本中的文件,则会出现svn冲突,但同时此文件来自其他人的工作副本已提交到rev 157.当您更新文件时,可能会出现两种情况:

  • 合并(G):意味着您和您的同事正在处理该文件但在不同的地方,因此'diff'实用程序认为合并它是可以的。
  • 冲突(C):'diff'实用程序确定您和您的同事的更改都不兼容,因此您需要解决(仅)您的工作副本上的差异

第二个问题是与部署无关的ini(或conf)文件。我的意思是,在部署代码的每台机器上,此文件应该不同。在这种情况下(我认为这是你的情况)你需要在其上放置svn:ignore属性,并记住创建这个文件并将其细节放在每个部署上。

http://svnbook.red-bean.com/en/1.1/ch07s02.html#svn-ch-7-sect-2.3.3

答案 1 :(得分:0)

有时版本控制系统无法弄清楚如何处理更改。我可以出于各种原因。但是,确定如何合并这样的存储库中的更改并非易事。