【Ant】Ant で、差分ファイルを適用する ~ Patch ~

■ はじめに

差分ファイル(パッチファイル)を使って、ソースをマージできる

注意

 * Windowsだとできない?
 (Windows上のEclipseで使用した際にはエラーになったがLinux上のEclipseでは問題なかった)

構文

<patch patchfile="【差分ファイル】" originalfile="【パッチを当てる対象ファイル】" />

サンプル

build.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="sample.patch" name="SampleCodes">
    <property name="original.file" value="./etc/HelloWorld.java.orig" />
    <property name="patch.file" value="./etc/HelloWorld.java.patch" />
    <property name="output.file" value="./src/com/sample/HelloWorld.java" />
    <target name="sample.patch">
        <copy file="${original.file}" tofile="${output.file}" overwrite="true" />
        <patch patchfile="${patch.file}" originalfile="${output.file}" />
    </target>
</project>

参考文献 http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/CoreTasks/patch.html

補足 : 差分ファイルについて

差分ファイルとは

* 差分ファイル(パッチファイル)とは、修正ファイルの変更点(差分情報)のみを抜き出したファイル

差分ファイル作成方法

Linux

diff -u [元ファイル] [変更後ファイル] > [パッチファイル]

[例]

diff -u HelloWorld.java.orig HelloWorld.java > HelloWorld.java.patch

Windows

* 調べたけど、フリーソフト使ったり、Cygwinでってあったけど、SVNを入れている場合、
   右クリックのメニューから[Unified形式で変更を表示]で出せる

サンプル

元ファイル : HelloWorld.java.orig

package com.sample;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World! Mike!!");
    }
}

変更後ファイル : HelloWorld.java

package com.sample;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World! Tom!!");
    }
}

パッチファイル : HelloWorld.java.patch

--- HelloWorld.java.orig 2015-02-27 00:22:21.207981409 +0900
+++ HelloWorld.java 2015-02-27 00:22:28.991981657 +0900
@@ -2,6 +2,6 @@
 
 public class HelloWorld {
    public static void main(String[] args) {
-       System.out.println("Hello World! Mike!!");
+       System.out.println("Hello World! Tom!!");
    }
 }

参考文献

http://qiita.com/tukiyo3/items/86df4992510d2e287ba5

関連記事

diff & patch コマンド ~ パッチ適用 ~
https://dk521123.hatenablog.com/entry/2023/10/16/141251