タグ別アーカイブ: Subversion

TortoiseSVNの使い方 7 タグとブランチ

目次

  1. インストール
  2. 保管場所
  3. 作業場所
  4. コミット
  5. 古いファイルを取り出す
  6. 移動と削除
  7. タグとブランチ
  8. チームプレイ

では行きます。

タグとブランチ

世代管理には単純にコミットを重ねるだけででなく「タグ」と「ブランチ」という手法があります。これはTortoiseSVNの機能というよりは世代管理の手法です。

TortoiseSVNとしては「タグ」も「ブランチ」も操作方法は一緒です。「タグ」という管理手法にするか「ブランチ」にするかは、ユーザーの使い方次第になります。

タグ

いろいろと編集作業をしてコミットも完了して区切りがついたとします。今後もコミットはされるだろうけれど、今のリビジョンを重要な区切りとしたい──でも他のリビジョンの中に埋もれさせたくない、そんなときには「タグ」という目印をつけます。

ブランチ

世代管理はしたいけれども、今の世代の流れに含めてしまいたくない場合には、世代を分岐させます。これを「ブランチ」と言います。例えばこれまで住所管理のファイルは一つだったが、特定業務においては利用者が限られ用途も特殊なので、独立した住所管理ファイルで運用したい、といったときに使います。こうすると本流の運用に気兼ねなく、ファイルをいじれます。

タグまたはブランチの作り方

操作手順
  1. 以下、エクスプローラの操作
  2. タグをつけたいファイル(フォルダ)を選択して右クリック
  3. ※ただしフォルダがお勧め

  4. TortoiseSVNを選択
  5. ブランチ/タグ(T)を選択
  6. ブランチ/タグ

  7. コピー(ブランチ/タグ) ダイアログが表示される
  8. コピーダイアログ

  9. 先URL(T)に保存先を入力
  10. ※例えばリポジトリ直下のパスに「/ver.1」と追記する

  11. ログメッセージにタグの説明を記入
  12. タグの説明を入力

  13. コピー - TortoiseSVN終了!ダイアログが表示される
  14. コピー終了ダイアログ

もしファイルを更新した後にコミットをしないまま、この処理をすると、とても大きなアイコンと共に「作業コピーはローカルからの変更が含まれています。最新のリビジョンからブランチ/タグをする場合は、ローカルでの変更はブランチ/タグには含まれません。」と長いメッセージが出ます。

アイコンが大きいのでこのまま操作することに不安を覚えると思いますが、文章のままですので気にしないで操作してください。警告を回避したい場合には、先にコミットをしてからブランチ/タグを実行します。

さて、この操作でどうなるかと言えば、リポジトリのどこかに適当な名前でコピーしただけです。

知っておくべきことは

  • この処理では実際にファイルをコピーしたわけではないので、リポジトリのディスク使用量が作業場所のファイルサイズ分増えたわけではありません。ディスク使用量はごく少量しか増えません。
  • この操作後のコミットではリポジトリの場所が元のパスに戻ります。
  • ブランチ/タグで指定したパスではありません。

  • タグとして作成したフォルダをチェックアウトして更新・コミットすれば、普通に変更されます

はいっ、「コピーして、いったい何が変わったのだろう?」「これのどこがタグとかいう目印なんだ?」と疑問に思いましたか? 操作がアプリケーションの動作結果に結びついていない歯痒さがあったのではないでしょうか。

実はベースであるSubversionではこの操作では「コピー」なのですが、TortoiseSVNでは「コピー」でよく使われるだろう「タグ」または「ブランチ」の操作だから、メニューの表記を「ブランチ/タグ」にしているのです(勝手な推測ですが)。ですからブランチ/タグを実行したら、パスを入力し、結果コピーされるという結果になるのです。エクスプローラ上でファイルをバックアップするときにファイルをコピーしてから、そのファイル名の後に「旧」とか「バックアップ」とか日付をつけると思います。それと同じで、単にファイルをコピーしただけなのです。

「じゃあ、SVNのコピーって普通のコピーとどう違うの?」と突っこみがありそうですね。

リポジトリ内で、ファイル(フォルダ)のリンクを、リポジトリ内の別の場所に置くことがTortoiseSVNでの「コピー」です。エクスプローラのコピーのように実体が二つになることはありません。なぜなら特定のリビジョンをコピーして別の場所に作っても、同じリビジョンならば、見るものは同じだからです。どちらかと言えばエクスプローラのショートカットの方が実態に近いです。これが先に述べた「コピーしてもディスク使用量はごく少量しか増えない」理由です。

なぜわざわざ「コピー」するかと言えば、その場所にあった方がファイル(フォルダ)がまとまって見えるとか、アクセスしやすくするためとか、ショートカットと同じ理由になります。

そして、そのコピーしたフォルダ(ファイル)を今後コミットすることがなければ、それは保存を目的としたコピーであり、タグになるわけです。例えば「v.1」などというフォルダ名にすることで、「バージョン1というタグ」が作られたということになります。

またコピーしたフォルダ(ファイル)を更新・コミットすればメインの世代管理からは分岐した世代の流れが生まれます。それが「ブランチが作られた」となります。

Subversion開発元のタグとブランチ

「タグ」と「ブランチ」はどこに作っても制約はありませんが、適当に作成していくと、やがて雑然としてわかりにくくなってしまいます。そこでSubversionの開発元の推奨する管理方法を紹介します。

  • リポジトリの直下に「branches」「tags」「trunk」を作ります
  • 通常は「trunk」フォルダでファイルを管理します
  • ブランチを作りたいときには「branches」に、タグを作りたいときには「tags」に、コピーを作ります。
  • 下記画像はその作例です(ポジトリブラウザで表示)
  • tag/branch/trunk

あなたの用途がアプリケーション開発以外で、「trunk」「branches」「tags」でピンとこない場合には、わかりやすい名前に変更するといいでしょう。例えば「本流」「分岐」「バージョン」とかです。

次項 チームプレイ