2010-11-13 65 views
2

我正在编写一个桌面应用程序,它必须在Linux和Windows上工作,因为在Windows上我需要使用JNI来实现一个功能。但这不是问题。 我有一个Eclipse IDE的Windows和Linux安装,我使用Subversive提交到我的存储库。 一个Windows后提交,我开始在Linux上工作落实Linux实现,但我发现自己有冲突:为什么这是Subversive的SVN冲突?

的.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"/> 
    <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。为什么? Coundn't Subversive只是更新工作版本?

回答

2

你有2个不同性质的问题。首先,如果你从转156工作副本修改文件SVN产生冲突,但在此期间从别人的工作拷贝该文件承诺修订版157.当你更新你的文件时,可能会发生两种情况:

  • 合并(G):意味着你和你的同事正在处理文件,但在不同的地方工作,所以'diff'工具认为合并它是可以的。
  • 冲突(C):在“差异”工具确定二者你和你的同事的变化是不兼容的,所以你需要解决的第二个问题是对(只)你的工作副本

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

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

+0

好吧,我,所以我认为,因为谁犯了,然后更新用户是同一个人,这种冲突不应该有单独工作。 – dierre 2010-11-13 18:15:40

+0

不,svn通过检查你的本地代码和你试图更新的版本来查看不同的工作副本的提交,这就是它如何确定diff的。我也有3-4个不同的工作副本(家庭,笔记本电脑,工作,舞台服务器)和svn是很好的同步帮助。 – vonPetrushev 2010-11-13 18:17:43

+0

好的,tnx!你是否意识到不同的工作副本只是选择文件到svn:忽略还是需要创建一个“配置文件”? – dierre 2010-11-13 18:24:00

0

有时版本控制系统无法弄清楚如何处理更改。这可能是因为许多原因。但是确定如何合并库中的变化并不是一件微不足道的事情。