バージョン管理ツールについて知っておくべき最小限の操作(via "Ship It!")

最近、開発環境の整備をしているので、空き時間に『Ship It!』という本を読み返しています。

その中に、プロジェクトで使うバージョン管理ツールについて、こんな話がありました。

Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック

Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック

(略)こういった基本的な操作を簡単に実行できるようSCMシステムのことを熟知していますか? 知っておくべき最小限の操作を次に示します。

  • プロジェクト全体をチェックアウトする
  • 自分の編集内容とSCM内にある最新のコードの内容を比較する
  • 特定ファイルの履歴(このファイルを、誰が、いつ変更したか)を表示する
  • 自分のマシンにあるローカルコピーを更新し、ほかの開発者が加えた変更を反映させる
  • 自分が加えた変更をコミット(確定)する旨をSCMに伝える
  • SCMに伝えた変更を削除(またはバックアウト:取り消し)する
  • 前の火曜日にあったものと同じコードツリーのコピーを取得する
Jared Richardson,William Gwaltney Jr.:『Ship It!』,p.24,オーム社,2006.8.

プロジェクトで使うバージョン管理システムやそのクライアントソフトに馴染みのない新人さんにとっては、こういった操作のチートシートがあると便利かもしれません。

試しに、自分が最近あらためて使っているTortoise SVNではどうやるかをメモしてみました。Tortoise SVNとは、SubversionWindows用クライアントソフトです。

Tortoise SVNの「知っておくべき最小限の操作」

プロジェクト全体をチェックアウトする
  1. フォルダを新規作成する。
  2. そのフォルダを右クリックして、コンテキストメニューからチェックアウトを選ぶ。
自分の編集内容とSCM内にある最新のコードの内容を比較する
  1. Working copyのルートフォルダを右クリックして、コンテキストメニューから[Tortoise SVN]→[Check for modifications]を選ぶ。
  2. 開いたダイアログで、[Check repository]ボタンをクリックする。
  3. Path列でファイルを右クリックして、コンテキストメニューから[Compare with base]を選ぶ。
  4. WinMergeが開いて、Working copyとリモートファイルの差分が表示される。

3.でファイルを右クリックして、コンテキストメニューから[show differences as unified
diff]を選ぶと、TortoiseUDiffで見ることもできるので、お好みで。

特定ファイルの履歴(このファイルを、誰が、いつ変更したか)を表示する
  1. ファイルを右クリックして、コンテキストメニューから[Tortoise SVN]→[Show log]を選ぶ。
  2. Author, Date列を確認する。

どんな変更を加えたかを見たい場合は、さらに次のようにする。

  1. Path列でファイルを右クリックして、コンテキストメニューから[Show changes]を選ぶ。
  2. WinMergeが開いて、変更が表示される。
自分のマシンにあるローカルコピーを更新し、ほかの開発者が加えた変更を反映させる

HEADに更新するには、Working copyのルートフォルダを右クリックして、コンテキストメニューから[SVN Update]を選ぶ

リビジョンを指定して更新するには、Working copyのルートフォルダを右クリックして、コンテキストメニューから[Tortoise
SVN]→[Update to revision ...]を選ぶ

自分が加えた変更をコミット(確定)する旨をSCMに伝える

Working copyのルートフォルダを右クリックして、コンテキストメニューから[SVN Commit ...]を選ぶ。

SCMに伝えた変更を削除(またはバックアウト:取り消し)する

Subversionの場合、コミットしてしまった後で取り消すことはできない。

コミット前なら、[SVN Commit ...]を選んで表示されたダイアログで、「Changes made」ペインにあるファイルのチェックを外す。

前の火曜日にあったものと同じコードツリーのコピーを取得する
  1. Working copyのルートフォルダを右クリックして、コンテキストメニューから[Tortoise SVN]→[Show log]を選ぶ。
  2. Date列とRevision列を見て、前の火曜日のリビジョンを特定する
  3. そのリビジョンの行を右クリックして、コンテキストメニューから[Check out...]を選ぶ。
  4. 開いたダイアログで、取得したファイルの保存場所を選ぶ(初期値ではWorking copyと同じ場所)

最小限ってこんなところ?

Subversionなら、すぐに覚えられる便利な操作として、Working copyに加えた変更をなかったことにする(チェックアウト直後の状態に戻す)Revertも挙げたいです。

マージの操作が最小限の範囲外なのは、その話をすると途端に量が多くなるからかなぁと。