2

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

.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 一起使用的部分。为什么?Subversive 不只是更新工作版本吗?

4

2 回答 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

于 2010-11-13T18:12:29.060 回答
0

有时版本控制系统无法弄清楚如何处理更改。出于多种原因,我可能会这样做。但是像这样确定如何在存储库中合并更改并不是一件容易的事。

于 2010-11-13T18:07:21.760 回答