IDEA7のShelve Changesまがいをパッチ生成・適用で試してみた。

かなり誇張したタイトルになってしまったが,要するにSubversionのパッチ生成・パッチ適用をそれぞれの実装系で試してみたって話。自分自身が生成したパッチを正しく戻せるのはもちろんのこと,他の実装系で作ったパッチも適用可能かどうかを確認してみた。


とりあえず,手元にあったのが以下の実装系で試す。

結果は下表の通り。

1 2 3 4
1.TortoiseSVN × ×
2.IDEA7 × ×
3.NetBeans6.0 × ×
4.Eclipse3.3 × ×

横軸がパッチを適用する実装系で,縦軸がそのパッチを作成した実装系。例えば「△」つけた部分は「Eclipseで作ったパッチを,TortoiseSVNで使えた」って読む。
ちなみに,「○」はパッチをそのまま適用できたケース。「△」はパッチをちょっと加工したら適用できたケース。
「×」はダメ(いや,これも加工すりゃ適用できるんで,△は限りなく×に近いと言えよう)。


どうゆうわけか,NetBeans6.0とEclipse3.3(Suversive)は,自分で作ったパッチを自分に適用できなかった。原因とおぼしき部分は,後述する。


それぞれの実装系が生成したパッチのフォーマットを以下に示す。SubversionはUnified Diff形式のパッチが望ましいらしいんだが,どうゆうのが厳密なUnified Diffなのかよーわかってない。:-(


TortoiseSVN 1.4.1, Build 7992で作ったパッチ
これがUnified Diffなのかしらん?

Index: conf/build.properties
===================================================================
--- conf/build.properties	(リビジョン 2098)
+++ conf/build.properties	(作業コピー)
@@ -1,4 +1,3 @@
:||<


<b>IntelliJ IDEA 7(#7096)で作ったパッチ</b>
TortoiseSVNのパッチに似てるだけど,'Index:'行がないためTortoiseSVNではパッチとして認識されなかった(そのくせ,TortoiseSVNのパッチは適用できる)。
>||
--- conf/build.properties	Tue Jul 31 14:05:32 JST 2007
+++ conf/build.properties	(revision 2098)
@@ -1,3 +1,4 @@
:


NetBeans 6.0M10で作ったパッチ
TortoiseSVNのそれとは明らかにフォーマットが異なる。しかもフルパスで書いてるし,自分で作ったパッチを適用できないとはどうゆうこっちゃ?

# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: C:?temp?test?conf
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and ?n newlines.
# Above lines and this line are ignored by the patching process.
Index: buld.properties
*** C:?temp?test?conf?build.properties Base (BASE)
--- C:?temp?test?conf?build.properties Locally Modified (Based On LOCAL)
***************
*** 1,4 ****
:


Eclipse 3.3 + Suversive 1.1.4で作ったパッチ
TortoiseSVNのパッチに一番近いんだけど,フルパスで書くなってば。これのせいでパッチ適用に失敗してるとしか思えない。
TortoiseSVNの「△」は,フルパス部分を加工して相対パスにして適用してみた結果なのだ。

Index: C:/temp/test/conf/build.properties
===================================================================
--- C:/temp/test/conf/build.properties	(revision 2104)
+++ C:/temp/test/conf/build.properties	(working copy)
@@ -1,4 +1,3 @@
:


うむ,パッチも一筋縄ではいかんのだな。
とりあえず,パッチ作ってあれこれしようと思ったら,TortoiseSVNで作るのが吉ってわけか。