変更点をリポジトリにコミット

作業コピーへの変更を送信するのは、変更を コミット するといいます。しかしコミットする前に、作業コピーが最新になっているかどうか確認しなければなりません。TortoiseSVN更新 を直接行うか、はじめに TortoiseSVN変更をチェック して、サーバや手元のファイルに変更がないかどうか確認します。

コミットダイアログ

作業コピーが最新で競合がない場合、変更をコミットする準備ができています。コミットするファイルやフォルダを選択し、TortoiseSVNコミット... を行ってください。

図4.8 コミットダイアログ

コミットダイアログ


コミットダイアログには変更したファイルが、追加・削除・バージョン管理外を含め表示されます。変更したファイルをコミットしたくない場合は、ファイルのチェックをはずしてください。バージョン管理外のファイルを含める場合は、追加・コミットするファイルのチェックをつけてください。

別のリポジトリパスに切り替えた項目には、(s) マークが付きます。何かを切り替えてブランチで作業した後、トランクに戻すのを忘れている可能性もあります。これは警告マークです!

ファイルをコミットするかフォルダをコミットするか?

ファイルをコミットする際、コミットダイアログは選択したファイルのみ表示します。フォルダをコミットする際には、コミットダイアログはファイルを自動で選択します。作成した新しいファイルを忘れていた場合でも、フォルダをコミットすればそのファイルを探します。フォルダをコミットするというのは、全てのファイルを変更したとマークつけるという意味では ありません。単に楽ができるということです。

svn:externals を使って別のリポジトリから取得したファイルにも変更がある場合、その変更を同時に不可分コミットできません。この場合、警告シンボルがファイルリストにつき、外部参照ファイルは別々にコミットしなければならないとツールチップで教えてくれます。

コミットダイアログにある大量のバージョン管理外ファイル

コミットダイアログにバージョン管理外のファイル (コンパイラが生成したファイルやエディタのバックアップなど) を表示しすぎだと思う場合は、以下のようないくつかの方法で対処できます。

  • 設定ページで除外リストにファイル (またはワイルドカード) を追加します。これはすべての作業コピーに影響します。

  • TortoiseSVN無視リストに追加svn:ignore にファイルを追加します。svn:ignore 属性を設定したディレクトリにのみ影響します。SVN 属性ダイアログで そのディレクトリの svn:ignore 属性を修正できます。

詳細は 「無視するファイルとディレクトリ」 をご覧ください。

コミットダイアログで変更のあるファイルを ダブルクリックする と、変更を確認するよう外部差分ツールが起動します。スクリーンショットにあるようにコンテキストメニューでもっとオプションを指定できます。ここからファイルをドラッグして、テキストエディタや IDE といったアプリケーションに持っていくこともできます。

項目の左にあるチェックボックスをクリックして、選択・未選択を切り替えられます。ディレクトリに対して、Shift を押しながら選択 すると、再帰的に動作します。

下のペインに表示された列は、カスタマイズできます。列見出しの上で 右クリック すると、表示する列を選択するコンテキストメニューを表示します。また、列の境界上にマウスを持っていくとドラッグハンドルを表示し、列幅を変更できます。以上のカスタマイズは保存されるので、次回以降も同じ列見出しになります。

デフォルトでは変更をコミットする際に、保持していたファイルのロックが、コミット完了後自動的に開放されます。ロックを保持したままにしたい場合は、ロックを保持 チェックボックスにチェックしておきます。チェックボックスのデフォルト状態は、Subversion 設定ファイルの no_unlock オプションから取得します。Subversion 設定ファイルの編集については、「一般設定」 をご覧ください。

ドラッグ & ドロップ

作業コピーが同じリポジトリからチェックアウトされているなら、別の場所からコミットダイアログにファイルをドラッグできます。例えば、遠くの階層を見るのに、複数エクスプローラのウィンドウを開かなければならないような、巨大な作業コピーも扱えるかもしれません。長々フォルダを変更チェックする、トップレベルフォルダからコミットするのを避けたければ、あるフォルダのコミットダイアログを開き、他のウィンドウから同時に不可分コミットしたい項目をドラッグしてください。

作業コピーの中にあるバージョン管理外のファイルも、コミットダイアログにドラッグできます。その際 SVN は自動的に追加します。

外部での名前変更の修復

Subversion の外部でファイルの名前が変更されることがあり、その場合、ファイル一覧で紛失ファイルとして表示されたり、バージョン管理外ファイルとして表示されます。履歴を失わないように Subversion に関連を通知する必要があります。単純に古い名前 (紛失) と 新しい名前 (バージョン管理外) を選択し、コンテキストメニュー移動を修復 を用いて 2 つのファイルが名前変更であると指定してください。

変更リスト

コミットダイアログは、関連するファイルのグループ化を助ける Subversion の変更リスト機能をサポートしています。この機能については、「変更リスト」 をご覧ください。

コミット一覧からの項目の除外

頻繁に変更するけれども、コミットしたくないバージョン管理下のファイルがあることがあります。これはビルドプロセスの弱点を表しています。なぜそのファイルをバージョン管理下に置いたのでしょう? テンプレートファイルを使用するべきではありませんか? しかし、時にこれはやむを得ないことがあります。古典的な理由としては、使用している IDE が、ビルドする際に必ずタイムスタンプを更新してしまうということがあります。すべてのビルド設定を含んでいるため、プロジェクトファイルをバージョン管理下に置かなければなりませんが、単にタイムスタンプを更新しただけではコミットする必要はありません。

このように、やっかいなケースを解決するのに、ignore-on-commit という変更リストを予約しておきます。この変更リストに追加されたファイルは、コミットダイアログにて自動的にチェックが外されます。それでも変更をコミットしたい場合は、コミットダイアログにて、手で選択しなければなりません。

コミットログメッセージ

コミットする変更を説明するログメッセージを必ず入力してください。後日プロジェクトのログメッセージを閲覧するときに、いつ、何が起きたかを確認できます。メッセージは長くても簡潔でもお好みのままですが、多くのプロジェクトで、使用する言語や、厳密なフォーマットといった記述する内容のガイドラインがあります。

メールで使用するような規約を用いて、ログメッセージの簡単な整形を行えます。text にスタイルを適用する場合、*text* で太字、_text_ で下線、^text^ で斜体を用いてください。

図4.9 コミットダイアログのスペルチェッカ

コミットダイアログのスペルチェッカ


TortoiseSVN にはログメッセージを正しく書けるよう、スペルチェッカが内蔵されています。これで間違った単語を強調表示できます。提案する訂正内容にアクセスするにはコンテキストメニューを使用してください。もちろん、すべて の技術用語を知っているわけではありません。そのため正しい綴りの単語をエラーとして表示知る可能性があります。ご心配なく。コンテキストメニューから個人辞書に登録できます。

ログメッセージウィンドウは、ファイル名・関数の自動補完機構も持っています。コミットしようとしている (テキスト) ファイルから、クラス名や関数名を (ファイル名と同様に) 抽出するのに正規表現を使用します。入力している単語が (3 文字入力したり、Ctrl+Space を押して)、このリストにある単語と一致すると、名前全体を選択するドロップダウンを表示します。TortoiseSVN に渡される正規表現は、TortoiseSVN をインストールした bin フォルダで保持されます。自分で正規表現を定義し、%APPDATA%\TortoiseSVN\autolist.txt に格納しておくこともできます。もちろん自分の autolist は TortoiseSVN をアップデートしても上書きされません。正規表現になじみがなければ、http://ja.wikipedia.org/wiki/正規表現 にある導入や、http://www.regular-expressions.info/ にあるオンラインドキュメントやチュートリアルをご覧ください。

前回入力したログメッセージを再利用できます。最近のログメッセージ をクリックして、その作業コピーで入力した最新のログメッセージ一覧を表示します。保存しているログメッセージの数は、TortoiseSVN 設定ダイアログでカスタマイズできます。

保存したすべてのコミットメッセージを、TortoiseSVNの設定ダイアログの保存データ ページで消去したり、最近のログメッセージ ダイアログで Delete キーを用いて、特定の保存したログメッセージを消去できます。

チェックしたパスをログメッセージに入れたい場合、エディットコントロールで コンテキストメニューファイル名のリストを貼付 を使用できます。

ログメッセージにパスを入力する別の方法は、単純にファイルリストにあるファイルを、エディットコントロールにドラッグすることです。

特殊なフォルダ属性

コミットログメッセージのフォーマットを制御したり、スペルチェッカで使用する言語を指定する、特殊なフォルダ属性がいくつかあります。詳細な情報は 「プロジェクト設定」 をご覧ください。

バグ追跡ツールとの統合

バグ追跡システムが有効なら、Bug-ID / Issue-Nr: テキストボックスで課題を複数設定できます。複数の課題はコンマで区切らなければなりません。そうでなければ、正規表現ベースのバグ追跡サポートを使用して、ログメッセージの一部として課題への参照を追加してください。詳細は 「バグ追跡システム / 課題追跡システムとの統合」 をご覧ください。

コミットの進行状況

OK を押すと、コミットの進行状況を表示するダイアログを表示します。

図4.10 コミットの状況を表示している進行ダイアログ

コミットの状況を表示している進行ダイアログ


進行ダイアログではコミット状態に応じて色分けで表示します。

これはデフォルトの色設定ですが、設定ダイアログで色をカスタマイズできます。詳細は 「TortoiseSVN での色設定」 をご覧ください。