2007年5月20日日曜日

Subversionのリビジョン間差分をExport.

 Subversionを会社でテスト導入.
 最終的にVSSからの置き換えが出来るかどうかは置いておき、あらゆる作成物のバージョン管理が出来る、FSFSで運用している場合、リポジトリのバックアップもコピーも簡単に可能と言う利点がありますので、十分役にはたつでしょう.

 と言う事で実際にテスト運用してみると、リビジョン間の差分のみをExportしたいケースがある事に気づきました.
 何百ページもあるWebサイトのデータ管理なんかがそうです.

※ここから以下、すべてWindows上での話です

 結論から言えば、TortoiseSVNで普通に出来ますね.

 ◆リポジトリブラウザ→リポジトリ選択→右クリック→ログを表示→対象リビジョン(2つ)選択→リビジョンを比較→リストのファイルをすべて選択→右クリック→選択をエクスポート

 がしかし、lightmaterialはこのExport方法にまったく気づかず orz

 探してもなかなかリビジョン間差分をExportするツールが見つからず(TortoiseSVNで出来るので当たり前かもしれませんが)、やっと探し当てたのが「SvnChangeList」と言うソフト.
 しかし、このソフトでは何故かエクスポートに失敗してしまうので(ファイルが1つも出力されない. lightmaterialの環境が悪いのか?)、仕方ないから自分で作ろうと手っ取り早くVB.Netを起動.
 TortoiseSVNで出来るにも拘らず…拘らず…拘らず… orz

 まぁ、そのマヌケ過ぎて笑える程悲しい現実は置いておき.
 このメモで本当に書きたかったのはここから.
 作り始めようと思ってすぐ問題が.
 直接Subversionのクライアント機能を実装しようとすると面倒なので、「SvnChangeList」に倣ってSubversion付属のクライアント(svn.exe)を起動する方法で試みた所、日本語が思い切り文字化けします.

C:\Subversion\bin>svn
?\228?\189?\191?\231?\148?\168?\230?\150?\185?\230?\179?\149?\227?\130?\146?\231
?\159?\165?\227?\130?\138?\227?\129?\159?\227?\129?\132?\227?\129?\168?\227?\129
?\141?\227?\129?\175 'svn help' ?\227?\129?\168?\230?\137?\147?\227?\129?\163?\227
?\129?\166?\227?\129?\143?\227?\129?\160?\227?\129?\149?\227?\129?\132?\227?\128
?\130

 は?

 と思いつつネット探索してみると、この現象はかなーり有名な現象の様で、インストーラでインストールしていない場合やTortoiseSVNと同居させていると発生するとの事.
 どうやらiconvのパス指定が正常に取れていないのが原因らしいので、PATH指定してあげる事で解消します.

set APR_ICONV_PATH=[iconv diretory]
C:\Subversion\bin\svn
使用方法を知りたいときは 'svn help' と打ってください。

 [iconv directory]はSubversionのディレクトリ下にある「iconv」ディレクトリを指定します.
 これで訳の分からない文字化けからは解消されます.

 System.Diagnostics.Process(とProcessInfo)でこの辺をどう処理して良いのか思い浮かばなかったので、結局文字化けする場合はbatファイルを出力して、それを起動する方法を選択.
 何度も言うようにTortoiseSVNで出来るにも拘らず…拘らず…拘らず… orz

 完成させる前に気づきましたし、文字化けの解消方法も分かったので、すべてが無駄だった訳ではありません!!

 …はい、無駄過ぎます orz
 4時間オール無駄.
 涙でディスプレイが霞んで見えるけど気のせい気のせい.

0 件のコメント: