変更のリポジトリへのコミット

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

コミットダイアログ

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

図4.8 コミットダイアログ

コミットダイアログ


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

バージョン管理中のファイルや変更されたファイルのすべてを手早くチェックしたり外したりしたい場合は、項目が表示されている一覧の上部にある項目をクリックしてください。

項目の状態に応じた色やオーバーレイについての詳細は、「ローカルとリモートの状態」をご覧ください。

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

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

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

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

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

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

  • TortoiseSVN無視リストに追加svn:ignore にファイルを追加します。 svn:ignore プロパティを設定したディレクトリにのみ影響します。 Subversion のプロパティダイアログで、そのディレクトリの svn:ignore プロパティを変更できます。

  • TortoiseSVN無視リストに追加(再帰的)svn:global-ignore にファイルを追加します。 svn:global-ignore プロパティを設定したディレクトリに加え、すべてのサブフォルダーに影響します。

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

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

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

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

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

タグへコミットする時に警告する

ふつう、コミットはトランクやブランチに対して行いますが、タグに対しては行いません。すなわち、タグは固定されているものだと考えられており、変更するべきではありません。

コミットがタグURLに関連付けられている場合、TortoiseSVNは最初に実際に何が行われるのかを確認するダイアログを表示します。そのようなコミットは間違いで行われることが多いからです。

しかし、このチェックはリポジトリの配置が推奨パターンのどれかである場合にのみ機能します。つまり3つのメインエリアを識別するためにtrunkbranchestagsの名称を使用している場合のみです。このようにセットアップされていない場合、どれがtag/branch/trunkなのか(分類パターンとして知られています)は、設定ダイアログ「「リビジョングラフの設定」」から設定できます。

ドラッグ&ドロップ

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

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

コミットダイアログの下部のリストから、ログメッセージ欄にファイルをドラッグすると、その欄に全ファイルのパスが文字列で挿入されます。コミット時のログメッセージに、コミットにより影響を受けるパスを記述したい場合に便利です。

外部での名前変更の修復

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

外部でのコピーの修復

ファイルのコピーをしたのに、 Subversion コマンドで行うのを忘れた場合、新しいファイルが履歴を失わないように、そのコピーを修復できます。古い名前(通常ないし変更)と新しい名前(バージョン管理外)を選択し、 コンテキストメニューコピーの修復 を実行するだけで、ファイルのコピーが行われたことを示すことができます。

変更リスト

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

ファイルの一部だけをコミットする

時には、ファイルに対して行った変更の一部だけをコミットしたくなることがあるでしょう。例えば、何かを作業をしている途中で緊急の修正をコミットする必要に迫られ、しかも作業中のファイルに変更を加えなければならなくなった場合などです。

ファイルを右クリックし、コンテキストメニューコミット後に復元を実行してください。これでファイルの現状のコピーが作成されます。それからファイルをテキストエディターなどを使用して編集し、コミットしたくない変更点をすべて元に戻してください。変更を保存した後で、ファイルをコミットします。

TortoiseMergeの使い方

TortoiseMergeを使用してファイルを編集する場合、変更点を今までのように編集する方法のほか、含めたい変更をすべてマークする方法があります。変更されたブロック上で右クリックし、コンテキストメニューこの変更をマークを実行して変更を含めます。最後に右クリックし、コンテキストメニューマークした変更のみを残すを実行すると、マークした変更のみを含め、マークされていない変更を破棄するように右ビューを更新します。

コミットが完了すると、ファイルのコピーが自動的に復元され、コミットされていなかった変更点が元に戻ります。

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

バージョン管理下のファイルが頻繁に変更されても、コミットしたくないことがあります。これはビルドプロセスの弱点を表しています。なぜそのファイルをバージョン管理下に置いたのでしょう?テンプレートファイルを使用するべきではありませんか?しかし、時にこれはやむを得ないことがあります。古典的な理由としては、使用している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/ にあるオンラインドキュメントやチュートリアルをご覧ください。

完全に正しい正規表現を書くのは難しいので、式の組み合わせを整理しやすくするために、式を入力し、ファイル名を入力すれば、それがマッチするかどうかをテストできるテストダイアログを用意しています。コマンドプロンプトから、 TortoiseProc.exe /command:autotexttest とコマンドを入力すれば起動します。

ログメッセージウィンドウにはコミットメッセージのスニペット機能もついています。ショートカットキーを押すとスニペットの一覧が表示され、一覧から入力するスニペットを選択するとテキストが挿入されます。TortoiseSVN により提供されるスニペットは TortoiseSVN をインストールしたフォルダのbinの中にあります。%APPDATA%\TortoiseSVN\snippet.txt を編集することで自作のスニペットを作成することもできます。# はコメントキャラクターです。\n\r で改行を挿入できます。また、バックスラッシュを挿入するには \\ のようにエスケープします。

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

TortoiseSVN の設定ダイアログの 保存データ ページで、保存されたコミットメッセージをすべて消去することができます。 最近のログメッセージ ダイアログで Delete キーを押すと、特定の保存されたログメッセージを消去することができます。

入力欄のコンテキストメニューファイル名のリストを貼付を実行すると、チェックしたパスをログメッセージに入れることができます。

ファイルリストにあるファイルをログメッセージの入力欄にドラッグするだけでも、ログメッセージにパスを入力することができます。

特殊なフォルダープロパティ

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

バグ追跡ツールとの統合

バグ追跡ツールが有効なら、 バグID/課題番号():

コミットの進行状況

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

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

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


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

青色

変更のコミット

紫色

新規追加のコミット

暗赤色

削除・置換のコミット

その他すべての項目

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