見出し画像

バージョン管理ツール-TortoiseSVN【無料】の使い方-5(最終篇)

今まで何回かに分けでバージョン管理ツールーTortoiseSVNの操作方法について解説しました。ただ基本はテキストファイルの内容変更についてのバージョン管理方法でした。

IT業界ではプログラムをたくさん書くので、プログラム(テキストファイル)のバージョン管理には最適しています。

それでは、他のファイル(word, excel)のバージョン管理とか、前後の修正を比較したりすることはできるかどうかというと、できます

ただ、TortoiseSVNの機能だけではできないので、他にプラグインをインストールする必要があります。グーグルで「tortoiseSVN Excel比較」をキーに検索すると色んな文章が出てくるので、本文では割愛します。

例:下記のホームページにもプラグインの紹介があります。
 多機能Excelアドイン「RelaxTools Addin」が「TortoiseSVN」「TortoiseGit」に対応

私はプログラマーなので、主にプログラムのバージョン管理にTortoiseSVNを使っています。外の形式(word, excel等)もバージョン管理はしていますが、あくまでもバイナリーファイル扱いにしております。

「バイナリーファイル扱い」っていうのは、中身の比較とかはできないが、とりあえずバージョン管理に移管し、修正する度にコミットメッセージでログを残すことをいいます。少なくとも、「いつ、誰が、なんのために修正を行った」ぐらいの情報は残せます。

下記、私のプライベート用SVN履歴画面を例に挙げますと:

画像1

上図の通り、中身までは比較できないけど、excelファイルも一応バージョン管理しておるので、少なくとも「2018年11月5日に、excelファイル作成などの機能修正時に、該当template001.xlsxの中身を変更したことがある」ぐらいはすぐ分かりますね。
 excelなどのファイルについてはこれぐらいの管理でOKな場合はいいですが、もし「それでも中身まで比較できないと。。。」となった方は手間ですがプラグインをインストールしてください。
 excelファイルの場合、中身の比較まではできませんが、少なくともバージョン管理はされているので、前のバージョンに戻したり、指定した日付のその日の内容に戻したりすることは簡単にできます。後、何よりも「不注意で肝心なexcelファイルを削除してしまった!バックアップも取ってないので困る」のような災厄は事態は避けられます

というわけで、私はSVNがある場合には作業する前に全てのファイルをバージョン管理に移管し、バージョン管理状態下で作業しております。これで「誤操作」とか、他のメンバーによる「誤削除」とかの心配は一切要らなくなります。

で、やっと本題に入ります。今回はTortoiseSVNの最終篇として、下記の通りtrunk / tag / branchについて解説していきます。

■ trunkとは?

下図のようにリポジトリブラウザを開くと、リポジトリ内には trunk , tags, branchesの3つのフォルダーがあることが分かります。

画像2

ここで「trunk(トランク)」とは、分かりやすく言うと正式バージョンのことです。バージョン管理するプロジェクトの「現状の最新状態」が格納されています。

普段はバージョン管理したい資材をtrunk配下に保管し、これをチェックアウトしローカルコピーを作成します。

画像3

トランクには、「常に最新資材」が保管され、コミットする度にどんどん新しくなっていきます。そして、今現在の最新バージョンをリリースする場合は、trunkから資材を取得すればOKです。

trunk, tags, branches以外に自分で新しくディレクトリを作成してもいいですが、TortoiseSVNの標準のやり方はこの3つのディレクトリで上手くやり取りすることなので、標準に準拠した方がいいと思います。

■ tagとは?

「トランク」には「常に最新バージョン」の資材が保存されていることが分かりました。トランクからチェックアウトした資材は、修正しコミットする度に、トランク内の同名ファイルがどんどん新しくなっていきます。

このような状況だと、「今現在の最新バージョン」はすぐ取得できますが、「二日前の時点でのバージョンをリリースしたい」といった場合には、二日前の(最近2日の修正を外した分)資材を取得しなければいけないが、ちょっと面倒くさくなります。

こういった場合に備えて、「tag(タグ)」という概念を導入しています。

タグ」って、ある時点の印のことです。トランク内の資材はコミットする度にどんどん最新化していくので、ある時点で、ある程度固まったバージョンとして「印を付けておけば」、後でトランクの資材がどんなに変わろうが、付けた印から「その時のバージョン」が簡単に取得できるようになります。

トランク、タグの使い方は下図のような感じになります。

画像4

上図のように、「TAG-OF-helloworldWinform3-20191215」という名前でタグ(印)を付けておくと、その後Aさんの修正2とBさんの修正2がコミットされても、このタグから取得する資材には常に、Aさんの修正1、Bさんの修正1のみが入ってるバージョンになります。つまり、タグを付けた後のコミット内容は本タグには入りません。

これが、「tag(タグ)」の考え方です。

タグを実際に作成してみましょう。

リポジトリブラウザのトランク内の、タグを付けたい資材上でマウスの右ボタンでクリックし、「tags」フォルダーにドラッグ・ドロップします。

画像5

すると、下記のコンテキストメニューが表示されるので、「Copy and rename item to here」を押します。

画像6

すると、タグ名称の入力画面が表示されるので、タブ名を入力し、「OK」を押します。
(※タグ名は何でもいいですが自分で分かるように命名ルールを決めておくことをお勧めします)

画像7

コメント入力画面が表示されるので、コメントを入力し「OK」を押します。

画像8

これでタグの作成が完了しました。リポジトリブラウザで、タグを確認することができます。そして、このタグの資材を取得したい場合は、このタグ上で右クリック>「Checkout...」を押します。

画像9

注:タグはあくまでも「ある時点の印」に過ぎません。なので、その時点の最新ソースを取りたい場合は本タグからチェックアウトすればOKです。ただし、タグは「印」だけなので、このタグに修正をコミットすることはできません

「タグはある時点に印を付けて、後は参照だけ、修正はできない。」

■ branchとは?

大手会社だと、同じアプリに対して常に複数のチームで違う機能の追加を同時に行うことがよくあります。

複数のチームで追加したそれぞれの機能が、最終的には全て最新ソースに入っているんですが、「開発途中の段階ではお互いに影響を及ぼすと困ります」。

こんな場合、チームAとチームBが同時にトランクに修正内容をどんどんコミットするとしたら、チームBの修正途中のソースがチームAに影響するし、チームAの修正途中のソースがチームBに影響を与えて、誰もうまく作業することができなくなります。

こんな状況を避けるべく、「branch(ブランチ)-分岐」という概念を導入しています。

画像10

上図のように、トランクからブランチA、ブランチBを作成すると、AチームはブランチAから、BチームはブランチBからソースをチェックアウトし、その後はそれぞれのブランチで作業するので、両チームを隔離(お互いに影響しない)することができます。
   ※ブランチは、タグから作成することをお勧めします。

それぞれのブランチで、各自担当の機能を開発し、テストが終わった時点で、各自トランクにマージすればOKです。最終的には、両チームの開発機能が全てトランクにマージされ、トランクのソースが最新ソースになります。
  ※トランクへのマージが終わったら、ブランチはもう要らなくなるので削除することができます(もちろん、社内ルールに準拠します)。

分かりやすく言うと、「ブランチは作業を分岐させ、各自の作業が終わったら最終的にトランクに合体させる」です。

では実際にブランチを作成してみましょう。ブランチの作成は、トランクと同じく、作成したい資材上でマウス右クックし、「branches(ブランチ)」フォルダーにドラッグ・ドロップします。
(※今回はタグからブランチを作成するため、タグ上で右クリックします。)

画像11

すると、下記のコンテキストメニューが表示されるので、「Copy and rename item to here」を押します。

画像12

ブランチ名設定画面が表示されるので、付けたいブランチ名を入力し、「OK]を押します。

画像13

ブランチの用途など、分かりやすくコメントを入力し、「OK」を押します。

画像14

すると、ブランチが作成されます。下図のようにリポジトリブラウザから確認できます。そして、該当ブランチ上で右クリック>Checkout...を押すことで、該当ブランチからの作業コピーをローカルに作成することができます。

画像15

※おまけ:
 タグもたくさん作ったし、ブランチもたくさん作ったし、後で「どのタグからどのブランチを作成したっけ?」となった場合、作業がスムーズに進行できるように、タグ名とそこから作成したブランチ名をちゃんとメモ取っておきましょう(自分次第)。

そして、TortoiseSVNにも、「リビージョングラフ」という機能があります。図で分かりやすくタグとブランチの関係を描画してくれる機能です。

このグラフを表示するには、ブランチかタグかトランクの資材上で右クリック>「Revision graph」を押します。

画像16

すると、下記のようなグラフが表示されます。

画像17

このグラフをみると、トランク上のどの資材から、何の名前のタグを作ったか?、そしてどのタグから何の名前のブランチを作ったか?が一目瞭然です。

■ まとめ

以上で、バージョン管理ツールーTortoiseSVNの基本的な使い方について解説しました。

基本は「リポジトリ作成」、「チェックアウト」、「更新」、「コミット」、「マージ・競合解決」、「trunk / tag / branchの使い方」です。これさえ覚えておけば、バージョン管理は凄く簡単です。

そして、excelの中身も比較したい場合は、プラグインをインストールしましょう。

特に複数のメンバーが共同で作業する場合は、肝心なファイルの誤削除も含め、バージョン管理があると作業もスムーズにできるし、安心です。

では、今回はこれで、バイバイ! Have a nice day!

この記事が気に入ったらサポートをしてみませんか?