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

Java 为什么这是一场颠覆性的SVN冲突?,java,svn,subversive,conflict,Java,Svn,Subversive,Conflict,我正在编写一个桌面应用程序,它必须同时在Linux和Windows上运行,因为在Windows上我需要使用JNI来实现一个功能。但这不是问题所在。 我在Windows和Linux上安装了EclipseIDE,并使用Subversive提交到我的存储库。 在Windows提交后,我开始在Linux上执行Linux实现,但我发现自己遇到了冲突: .classpath[工作] .classpath[存储库] 正如您所看到的,冲突出现在…部分,该部分用于告诉jvm我的dll模块在哪里与jni一起

我正在编写一个桌面应用程序,它必须同时在Linux和Windows上运行,因为在Windows上我需要使用JNI来实现一个功能。但这不是问题所在。 我在Windows和Linux上安装了EclipseIDE,并使用Subversive提交到我的存储库。 在Windows提交后,我开始在Linux上执行Linux实现,但我发现自己遇到了冲突:

.classpath[工作]


.classpath[存储库]



正如您所看到的,冲突出现在
部分,该部分用于告诉jvm我的dll模块在哪里与jni一起使用。为什么?是否只更新工作版本就可以进行颠覆?

有时版本控制系统无法确定如何处理更改。它可能会因为许多原因而伤害我。但是,确定如何在这样的存储库中合并更改绝非易事。

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

  • 合并(G):表示您和您的同事在不同的位置处理该文件,因此“diff”实用程序认为可以合并该文件
  • 冲突(C):“diff”实用程序确定您和同事的更改不兼容,因此您需要(仅)解决工作副本上的差异
第二个问题是与部署无关的ini(或conf)文件。我的意思是,在部署代码的每台机器上,这个文件应该是不同的。在这种情况下(我认为这是您的情况),您需要在其上放置svn:ignore属性,并记住创建此文件并在每个部署上放置其细节


我是一个人,所以我假设,既然提交并更新的用户是同一个人,就不应该存在这种冲突。不,svn会查看不同工作副本的提交,这就是它通过检查本地代码和您尝试更新的版本来确定差异的方式。我还有3-4个不同的工作副本(家庭、笔记本电脑、工作、舞台服务器),svn对同步非常有帮助。好的,tnx!你是否意识到仅仅选择svn:ignore的文件就有不同的工作副本?还是你需要创建一个“概要文件”?好吧,我要做的是将依赖于部署的代码中的所有内容移动到一个conf文件中(这应该包含db连接字符串、lib路径、资源路径、日志路径等),然后将svn:ignore属性设置为conf文件。提交其父文件夹时,该属性将在存储库中设置,并将应用于所有工作副本。因此,为了回答您的问题,请在您的这个文件上标记svn:ignore,提交它的文件夹,svn将完成其余的工作。
<?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>
<?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>