IDEA7のShelve Changesまがいをパッチ生成・適用で試してみた。
かなり誇張したタイトルになってしまったが,要するにSubversionのパッチ生成・パッチ適用をそれぞれの実装系で試してみたって話。自分自身が生成したパッチを正しく戻せるのはもちろんのこと,他の実装系で作ったパッチも適用可能かどうかを確認してみた。
とりあえず,手元にあったのが以下の実装系で試す。
- TortoiseSVN 1.4.1, Build 7992
- IntelliJ IDEA7(#7096)
- NetBeans 6.0M10
- Eclipse 3.3 + Suversive 1.1.4
結果は下表の通り。
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で作るのが吉ってわけか。