はじめに
Yahoo!検索のデザイナー担当の竹内美帆です。前回の記事「もうファイル管理で困らない! デザイナーのためのSubversion/TortoiseSVN入門」では、「Suvbersionの概要」と「TortoiseSVNのインストールから基本操作」を解説いたしました。今回はさらに一歩踏み込んで、Subversion初心者の多くが疑問を持つ「Subversionのフォルダーの命名と構成」と「TortoiseSVNの便利な使い方」をご紹介します。
目次
Subversionのフォルダーの命名と構成
ここではSubversionを利用する上で知っておくべきフォルダーの命名と構成について説明します。
基本的なフォルダーの命名と構成
みなさんも、作業やプロジェクトごとにフォルダーを分ける方が多いかと思います。リポジトリ内のフォルダーの命名、構成は基本自由ですが、Subversionの開発チームが推奨する命名、構成があります。この考え方を覚えておくと、どのプロジェクト、会社へ行っても通じることが多いので、特に決まりがない場合はこの構成でプロジェクトごとにフォルダーを作ることを推奨します。
作業やプロジェクトごとに管理する場合に、Subversionでは下記のようなフォルダー構成にします。 「sample_project」の下に、「trunk」「branches」「tags」の3つのフォルダーがあります。この3つの違いは、簡単に説明すると次のようになります。
trunk(トランク)
基本的にはこのtrunk内に、ドキュメントやソースコードを置きます。初めはbranches、tagsを考えずにtrunkのみで運用することも可能です。
私の所属するチームでも、基本このフォルダー内で作業を行います。ドキュメントを入れる「docs」フォルダーとHTML、CSSなどのソースコードを入れる「src」フォルダーをtrunk内に置いて管理しています。
branches(ブランチズ)
trunkを派生させて、別の作業を行うときにこのフォルダーを利用します。
ソフトウエア開発では、あるバージョンをリリースした後もサポートをし続けなければいけません。そこで、リリース時にbranchesの下にtrunkをコピーして、「VER-○○」というフォルダーを作成します。trunkでは次のバージョンを開発しているので、あるバージョンに戻して作業を行うことは面倒です。そこで、この派生させた「VER-○○」を修正し、リリースすることが可能です。サポートが終了したら、「VER-○○」は削除します。
ウェブサイトでは、リリースのたびに上書きされ昔のバージョンをサポートすることはありません。私の所属するチームでは、基本的にはbranchesを利用せずにtrunk内のみで作業を行っています。trunkをコピーして派生させていくと、どれがどこまで作業して、修正したものをtrunkに取り込んだかなど、管理が煩雑になってしまうという理由もあります。場合によっては、branchesを利用することを検討することもあります。
たとえば、現在を2011年9月20日とします。9月28日へのリリースへ向けて、trunkにて小さなバグ修正を行います。しかし、それと同時に10月28日へ向けて大規模な修正を行わなければいけません。9月28日のリリースが終わるまで、10月28日の修正は加えるわけにはいきません。そんなときにbranchesの下にtrunkをコピーして、「VER-111028」として置き、これをtrunkとは別で作業していきます。
trunkとは別フォルダーになるので、チェックアウトは別途行います。9月28日のリリースが無事終了したら、「VER-111028」で行った修正をtrunkのほうに反映します。
また、trunkで作業しているものに対して実験的なものを取り入れたい場合にもbranchesが活躍します。trunkは通常の作業をしていますので、もし他の人と作業をしていたら、不安定なものをコミットされたら困りますよね。そんなときにもbranchesの下に、trunkをコピーして「TRY-takeuchi」などと名前を付けてどんどん作業していきましょう。うまくいったら、trunkのほうに反映するのを忘れないでください。
tags(タグズ)
trunk、branchesなどのある状態を取っておきたい場合に、利用します。このtagsの中に置いたものは修正などを加えません。あくまで、trunkのある時点でのキャプチャーという認識です。
たとえば、2011年9月28日にtrunkで作業したものをリリースします。そのリリースの状態を取っておくことが可能です。trunkをコピーして、tagsの下に「REL-110928」としてコミットしておきます。
2011年9月28日にリリースしたもの(trunk)をさらに作業を続けて、10月28日にリリースするとします。しかし、9月28日にリリースしたものにバグが見つかりました。すでにtrunkでは次のリリース(10月28日)への作業を行っています。trunk内ですぐに9月28日の状態に戻せればいいのですが、せっかく作業したものを戻すのはもったいないですし、手間もかかります。そこで、tagsにコピーしておいた「REL-110928」をコピーして、branchesに修正版として置いて作業します。
リリース後にバグを見つけたが、いつ発生したものかを特定するときにもこのtags内のものを見ていくということもできます。
デザイナーとして作業をする場合は、一般的なソフトウェアー開発と違い、trunk、branches、tagsをすべて利用した厳密な運用はしなくても大丈夫なことが多いです。厳密な運用を行うことは、その分きちんと管理ができるというメリットもありますが、デメリットとして手間がかかります。よって、メリット・デメリットを考慮し、どういう運用方法がよいのかをご自身で見極めることが必要となってきます。
慣れるまでは、「しっかり管理しなくては!」と思いつめず、trunkのみで管理していくことをおすすめします。作業に慣れてきたら、「よし、次はリリースのたびにtagsを使っていこう」など徐々に利用シーンを考えて、無理なく運用していきましょう。
柔軟な構成を考えてみる
プロジェクトごとのフォルダー構成の話をしましたが、リポジトリの一番上のフォルダー(以後「リポジトリルート」)からの構成を考えてみます。プロジェクトが1つしかない場合、リポジトリルート自体をプロジェクトフォルダーにします。
新たにプロジェクトを増やしたいと思った場合、柔軟性がないので、プロジェクトごとにフォルダーを切ってみると下記のようになります。
さらに、プロジェクト以外にも個人用のフォルダーが欲しいなどがあれば、次のようにフォルダーを構成してみるといいかもしれません。プロジェクトを入れるためのフォルダーを「project」という名前でリポジトリルートの下に置いてみました。
「project」と並列して「member」というフォルダーを作成し、個人の勉強用フォルダーを「takeuchi」「saitou」と作ってみました。もちろん、この下にも「trunk」「tags」「branches」を作成してもいいですし、作成せずに個人でやりやすいフォルダー構成にしても大丈夫です。
フォルダーの命名・構成に答えはありません、ご自身のプロジェクト・作業の内容を考慮して考えてみましょう。また、文中ででてきた操作について詳しく知りたい方は、前回の記事の参考文献を参照ください。
TortoiseSVNの便利な使い方
基本操作を覚えることは必須ですが、より便利に使える機能を知っているだけで作業の効率がアップします。今回はひとりで使うときにも、みんなで使うときにも、便利な使い方をご紹介したいと思います。
変更履歴を見る
変更履歴を見る上で覚えておくべき用語があります。
ファイルの編集後にリポジトリへ変更点を伝えるために、コミットを行います。コミットを行うごとに、1つずつ一意な番号が与えられ、「リビジョン」「リビジョン番号」と呼ばれます。初めは0から始まり、コミットするごとに1、2、3…と増えます。
ファイルごとに変更履歴を見る
ある1つのファイルについて、変更履歴を見たいときに利用します。
1.変更履歴が見たいファイルを右クリック、「TortoiseSVN」から「ログを表示」をクリックします。変更履歴(ログメッセージ)が表示されます。
2.見たいリビジョンを選択すると、コミット時のコメントと変更内容などが表示されます。
フォルダーごとに変更履歴を見る
あるフォルダーのファイルすべてについて、変更履歴を見たいときに利用します。
1.変更履歴が見たいフォルダーを右クリック、「TortoiseSVN」から「ログを表示」をクリックします。上記同様に、変更履歴(ログメッセージ)が表示されます。
2.フォルダーの中のすべてのファイルが対象になったので、表示されるリビジョンが増えました。履歴の見方は同じです。
前回のリビジョンとの差分を見る
1つ前のファイルと現在のファイルの差分を閲覧できます。
1.差分を見たいファイルを右クリック、「TortoiseSVN」から「以前のバージョンと差分」をクリックします。
2.TortoiseSVNをインストールしたときに、一緒にインストールされるTortoiseMergeというソフトウエアが起動し、差分が表示されます。 ※TortoiseMergeの使い方については、TortoiseMergeをご覧ください。TortoiseMergeを利用すると差分を作業コピーに取り込んだり、他の人が見られる状態に書き出すことが可能です。
リビジョン間の差分を見る
指定したリビジョンとリビジョンの間でのファイルの差分を確認できます。
1.変更履歴が見たいファイルを右クリック、「TortoiseSVN」から「ログを表示」をクリックします。 2.比較したいリビジョンを「Ctrl + クリック」で選択した状態で右クリック、「リビジョンを比較」をクリックします。 上記同様TortoiseMergeにて差分が表示されます。
前回のリビジョンに戻す
前回のコミット時から、修正を加えてしまった場合でもすぐに戻せます。
ファイルごとに前回のリビジョンに戻す
1.前回のリビジョンに戻したいファイルを右クリック、「TortoiseSVN」から「元に戻す」をクリックします。
2.元に戻すファイルを選択する画面が開きますので、チェックを入れて「OK」ボタンを押します。
3.ファイルの上にのっているアイコンが、変更が発生していることを示す赤いビックリマークから、通常時の緑色のチェックマークになりました。
フォルダーごとに前回のリビジョンに戻す
1.前回のリビジョンに戻したいフォルダーを右クリック、「TortoiseSVN」から「元に戻す」をクリックします。 2.これ以後はファイルごとの作業と同じです。
特定のリビジョンからの変更を戻す
「前回のリビジョンに戻す」では、前回のものと限定されましたが、リビジョンを指定することも可能です。
ファイルごとに特定のリビジョンからの変更を戻す
1.特定のリビジョンに戻したいファイルを右クリック、「TortoiseSVN」から「特定のリビジョンへ更新…」をクリックします。「更新」という画面が開きます。
2.戻したいリビジョンが分かる場合は、リビジョンへ番号を入力し、「OK」を押します。わからない場合は、「ログを表示」を押してリビジョンを選択、「OK」を押すとリビジョン番号が入ります。
おまけ
私なりに「これは知っておいたほうがお得!」という情報をおまけでご紹介します。
リポジトリブラウザ・ログメッセージからの操作も可能
今まで解説した使い方は、わざわざパソコン上でフォルダーを移動して作業を行いました。実はフォルダーを移動しなくても、「リポジトリブラウザ」を利用すれば、フォルダー・ファイルを1つの画面で一覧でき、しかも右クリックから作業できます。
任意のフォルダーにて、右クリック、「TortoiseSVN」から「リポジトリブラウザ」をクリックします。操作したいフォルダー・ファイルを右クリックして、表示されたメニューから操作します。
可能な操作
- ログを表示
- フォルダを作成
- ファイルを追加
- フォルダを追加
- 名前の変更
- 削除
- 名前を付けて保存
- 作業コピーへコピー
- コピー
- など
また、ログメッセージの画面からも右クリックにて、いろいろな機能が使えますので、興味ある方は探索してみると面白いです。
任意フォルダーにて、右クリック、「TortoiseSVN」から「ログを表示」をクリックします。操作したいリビジョンを右クリックして、表示されたメニューから操作します。
作業コピーのクリーンアップ
いろいろ作業をしていると、いつの間にか下記のような状態になっているときがあります。
- 更新中やコミット中にダイアログを閉じるなどして強制終了
- リポジトリがサーバーにある場合、サーバーの状況によってはパソコンに取り込んだ作業コピーとの矛盾が発生
- など
このような状態になると、次のようなダイアログが表示され、「’クリーンアップ’コマンドを実行してください。」とエラー文言がでます。
初めは「え、私何かした?」と思いますが、TortoiseSVNがリポジトリとのやりとりにうまくいかなかった場合にでるエラーですので、慌てなくて大丈夫です。エラーが発生したフォルダーまたは、上の階層のフォルダーにて右クリック、「TortoiseSVN」から「クリーンアップ」をクリックしましょう。
.svnファイルの役割と注意点
チェックアウトしたフォルダーに、「.svn」というフォルダーが出来ていることに気付いている方が多いかと思います。表示されない方は、隠しファイルを表示する(Microsoft)で設定を変更しましょう。
.svnフォルダーの中身は、最新のリビジョンの内容がコピーされており、「プリンスティン・コピー」「プリンスティン」などと言います。リポジトリが自身のパソコンにある場合それほどメリットはないのですが、ネットワーク上にある場合に有効です。パソコン上の作業コピーとリポジトリ間のデータのやり取りにおいて、プリンスティン・コピーを利用すれば通信量を減らすことが可能になります。
たとえば、「元に戻す」を利用したときにプリンスティン・コピーを利用すればネットワークを介さず、パソコン上で処理が完了します。前のリビジョンとの差分を比較するときなどでも同様です。
TortoiseSVNはプリンスティン・コピーを使い処理を行っているので、「.svn」は触らないようにしましょう。
さいごに
今回の記事は、基本操作に慣れてきたころにつまずくであろう「Subversionのフォルダーの命名と構成」や「TortoiseSVNの便利な使い方」を解説しました。これらの知識があれば、デザイナーとして通常の作業で困ることはほぼないと思います。さらに詳細を知りたい方は、前回の記事の参考文献を参照ください。
この記事を読んでいただいて、今まで疑問に思っていたことが解決したり、Subversionを使ってみたいと思う方が増えるとうれしいです。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました