使用命令行应用“Eclipse Workspace Patch”

时间:2015-03-18 22:29:34

标签: eclipse cvs patch

对于我们的项目,我们使用cvs,我们希望使用eclipse创建的补丁进行共享更改,并在映像中进行配置: enter image description here

补丁是这样的:

### Eclipse Workspace Patch 1.0
#P project2
Index: testFile2.txt
===================================================================
RCS file: testFile2.txt
diff -N testFile2.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ testFile2.txt   1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+
+xxxxxx
#P project1
Index: testFile1.txt
===================================================================
RCS file: testFile1.txt
diff -N testFile1.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ testFile1.txt   1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+
+yyyyyy

是否有命令/库允许在没有eclipse的情况下应用此补丁? 我尝试'patch'命令,但似乎不支持这种补丁格式。

1 个答案:

答案 0 :(得分:0)

问题没有简单的解决方案,因为Multi-project的格式不是标准的,只有eclipse知道如何应用该格式。 标准补丁格式不知道命令:

#P project1

我的解决方法是:

  • 为单个项目生成一个补丁,项目名称后跟'.path'(示例projectName = project1; patchName = project1.patch);
  • 使用下图中的格式显示genarate补丁

enter image description here

  • 使用ant任务应用路径(包装补丁命令)

    <target name="applyPatch">
    <echo message="Apply patch:${patchFileName}"/>
    <echo message="workspace.home:${workspace.home}"/>
    <sequential>
        <local name="projectName" />
        <basename  property="projectName" file="${patchFileName}" suffix=".patch" />
        <echo message="${projectName}"/>
    
        <exec executable="patch">
            <arg value="-d"/>
            <arg value="${workspace.home}/${projectName}"/>
            <arg value="-i"/>
            <arg value="${patchFileName}"/>
            <arg value="-p" />
            <arg value="0" />
            <arg value="-u" />
            <arg value="-N" />
        </exec>
    </sequential>
    </target>