アカベコマイリ

HEAR NOTHING SEE NOTHING SAY NOTHING

AnkhSVN

Visual Studio 用の Subversion 連携プラグイン AnkhSVN についての覚書。

Redmine と Subversion をさくらのVPS 上で稼働させて TortoiseSVN から操作していたのだけど Eclipse のように Visual Studio からリポジトリ操作したくなったので AnkhSVN というプラグインを導入してみた。

まず Visual Studio だが、Express Edition ではプラグインが利用できないので上位エディションにしなければならない。Eclipse に比べるとちょっとなぁと思いつつ Professional アップグレード版を購入。

  • 追記 2010/10/04

    • 表現が正確ではないので訂正
    • Visual Studio 2010 Express Edition でも拡張マネージャーを利用できる
    • ただし一部のプラグインを入れられない
    • AnkhSVN もその一つらしく、Express Edition では拡張マネージャーにリストアップされないようだ
    • はじめはサードパーティ製プラグイン全般がダメだと思っていたのだが、作者が個人名になっているものもあり、基準がよくわからない
  • Microsoft Visual Studio 2010 Professional アップグレード

Amazon の商品紹介を貼ってみたが、現時点ではカスタマーレビューが 1 件もない。発売から半年ぐらい経っているのだが、そんなに人気ないのだろうか?←この記事を書いた後にレビューが追加されていたようだ。ちょうど拡張マネージャに関する訂正があったので、前の表記を残しつつこちらも訂正。

Visual Studio 2010 には拡張マネージャーという機能が付いていて、プラグインのリストアップやインストールがおこなえる。メインメニューから「ツール」→「拡張マネージャー」を選択して起動する。

拡張機能マネージャー

AnkhSVN はオンラインギャラリーに公開されているのでリスト中からこれを選び、ダウンロードボタンを押す。すると公式サイトに飛ばされるのでインストーラをダウンロード。

インストーラのダウンロード

Eclipse との比較になってしまうのだけど拡張機能マネージャからダイレクトに「ダウンロード」→「インストール」をおこなえないものだろうか。ClickOnce のような優れた仕組みを実現できているのだから将来のバージョンでは改善してほしい。

AnkhSVN をインストールした後に Visual Studio を起動するとソリューション エクスプローラが拡張される。ツリーのアイコンに変更状態をあらわすグラフィックが表示されてコンテキスト メニューにはリポジトリ操作用の項目が追加される。

予めリポジトリに登録済みのソリューションをチェックアウトした場合、Visual Studio で開くと AnkhSVN が Subversion の情報を読み取ってくれる。リポジトリ未登録のソリューションは AnkhSVN 経由で Visual Studio 上からも登録できる。

ソリューション エクスプローラ

チェック印の付いているものが Subversion のリポジトリと一致しているもの。赤い四角は編集によって差分の発生したファイルとなる。Eclipse のようにリビジョンも表示してくれるとありがたいのだけど、それは将来に期待するとしよう。

編集したファイルとリポジトリの差分を確認するビューアーも用意されている。ソリューション エクスプローラ上から編集されたファイルを選択してコンテキスト メニューから Show Changes を選ぶと以下のように差分が表示される。

リポジトリとローカルの差分チェック

赤が削除、緑が差分、青が挿入のあった行となる。差分が好ましくなければコンテキスト メニューから Revert を選ぶことで編集を取り消せる。なお Subversion 的な仕様なのだがチェックアウトや Revert などをおこなうとファイルの更新日時は最新になるので、これを変更の目安にする場合は注意が必要である。

編集内容が適切であることが確認できたらコンテキスト メニューから Commit... を選んでコミット ダイアログを表示する。複数のファイルをまとめてコミットしたい場合は、それらをまとめて選択してから同じ操作をおこなう。

Visual Studio のソリューション エクスプローラはツリービューに見えるが複数選択にも対応している。何かアイテムをクリックして Shift キーを押しながら別のものをクリックすればその範囲が選択される。個別に選択する場合は Ctrl キーを押しながらアイテムをクリックしてゆく。

コミット ダイアログは以下のようになる。

コミット ダイアログ

Log Message と書かれている欄はコミット時のコメント。テキスト ボックス左下に見える 100% と書かれている部分をクリックするとコメントの文字サイズを拡大・縮小できる。左下の Keep Locks をチェックすればコミット後もロック状態が維持される。Keep Changelists はチェンジ リスト (セット) に関する設定のようだが使い道がわからない。

RedmineTrac を利用しているならばコメントに refsclosesfixes といった語句と共にチケット番号を記述することで、コミットとチケットを関連付けられる。書式は refs #N となり N 部分にチケット番号を記述。

例えば Redmine のプロジェクトと Subversion のリポジトリが関連付いている状態で refs #9 と書いてコミットすると、プロジェクト内の #9 のチケットに反映される。

Redmine 上の表示

Redmine のリポジトリ画面を開くと、さきほどのコミットはリビジョン番号 11 となり、コメントがそのまま出力されていることが分かる。#9 となっている部分はチケットへのリンクになっており、これをクリックするとチケットのページへ移動できる。

TortoiseSVN でも同様の操作がおこなえるが Visual Studio から画面を切り替えずに実現できるのは非常に快適。また複数ファイルを同時にコミットする操作もソリューション エクスプローラの方が必要最小のファイルしか表示されないのでわかりやすい。つかい始めると手放せなくなる便利プラグインだ。

ちなみに AnkhSVN の日本語化については、最新バージョンに追従できてないので取り上げなかった。AnkhSVN の公式 FAQ を見ると

I heard that AnkhSVN will be localized, what can I expect? We would like to create localized versions of AnkhSVN in all languages that Visual Studio is available in. As far as I can tell the list of languages for VS2010 contains English (en-us, neutral, fallback), French, German (de), Japanese, Spanish (es), Italian (it), Russian (ru), Traditional Chinese, Simplified Chinese and Korean. As we (the current AnkhSVN developers) don't understand most of these languages, we would like to get in contact with users/developers that do and are willing to help us parts of AnkhSVN into these languages. If you are interested, please contact us via the user and/or development lists. We hope to deliver a first localized version in the AnkhSVN 2.2/2.3 timespan.

となっている。将来バージョンでは TortoiseSVN のように公式な多言語対応されるかもしれない。非常に楽しみである。