使用命令行应用 "Eclipse Workspace Patch"

Apply "Eclipse Workspace Patch" using command line

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

补丁是这样的:

### 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

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

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

#P project1

我的解决方法是:

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

  • 使用 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>