スポンサーリンク

Tortoise SVNの使い方を覚えてもらうためのページ (初級,中級)


SVN の使い方を覚えてほしい時,この記事を読んでもらう。


初級と,中級がある。

  • 初級編
    • 覚えるべきこと
    • 学習用のリンク集
  • 中級編
    • 覚えるべきこと
    • 学習用のリンク集


初級編

覚えるべきこと:

Tortoise SVNの導入について:

  • 「Tortoise SVN」を,正しく読めること。(トータス・エスブイエヌ
  • Tortoise SVNを,自分のWindowsマシン上にインストールできること。
  • SVNが「バージョン管理ツール」である,という点を理解すること。


リポジトリとチェックアウトについて:

  • リポジトリ」上のファイルと,「ワーキング・コピー(WC,作業コピー)」上のファイルとの,違いを理解すること。
  • 「チェックアウト」「SVN コミット」「SVN 更新」の意味を理解すること。
  • 既に存在するリポジトリから,自分のローカルフォルダに,「チェックアウト」を実行できること。


コミットについて:

  • 作業コピーに対して変更を加えた場合に該当ファイルのアイコン上に表示される,赤いびっくりマーク(アイコンオーバーレイ)の意味を理解していること。
  • 作業コピー上で,右クリックメニューから「SVN コミット」を実行できること。
  • 作業コピー上で,右クリックメニューから「SVN コミット」を実行できること。
  • リビジョンとは何か理解すること。コミットを実行するたびに,毎回その値がリポジトリ全体で1つずつ増えてゆくイメージを把握すること。


更新について:

  • 作業コピー上で,右クリックメニューから「SVN 更新」を実行できること。
  • 作業コピーのファイルのアイコン上に表示される,緑色のマークの意味を理解していること。
  • 毎朝,出社したら朝一番で,作業コピー全体に「SVN 更新」を実行する習慣を持つこと。その必要性を理解すること。
  • もしファイルをうっかり削除してしまっても,そのフォルダで「SVN更新」すれば,削除してしまったファイルが最新の状態でよみがえる,という事を理解すること。
  • チーム作業において,「SVN コミット」を実行しようとすると,「リポジトリ側と比べて古くなっています」という警告が表示され,コミットが正常に完了できない場合がある。そういった事態が起こる仕組みを理解すること。また,作業コピーを編集する前に「SVN 更新」を実行しておけばそういった事態を回避できる,ということも理解すること。
  • SVNにおけるリポジトリと作業コピーの関係を図で表し,コミットや更新がどのような操作なのかを,その図を使って他の人に説明できること。


追加と削除について:

  • SVNの「追加」によって,ファイルやフォルダをリポジトリに新規追加できること。「追加」しただけではリポジトリに反映されない,ということも理解すること。
  • SVN管理下に置かれているファイルやフォルダを,SVNの「削除」等によって,リポジトリから削除できること。


ログについて:

  • コミット実行時の「ログ」を,毎回,適切に入力できること。
  • SVNの「ログを表示」によって,SVN管理下にあるファイルやフォルダの,過去の全てのコミットログを閲覧できること。


差分とリビジョンについて:

  • SVNの「差分」から,作業コピーのファイル内のどこに変更が加えられたのかを確認できること。
  • SVNの「ログ」から,特定のリビジョンのチェンジセット内で,特定のファイルに発生した差分を確認できること。
  • ファイルやフォルダの状態を,以前のリビジョンに戻せること。
    • つまり,SVNの「特定のリビジョンへ更新」から,「ログを表示」ボタンによって過去のリビジョンを一つ選択して,特定のファイルの状態をその過去のリビジョンの状態へと戻せること。


フォルダ構成について:

  • SVNの「リポジトリブラウザ」を使って,リポジトリ内のフォルダ構成を閲覧できること。
  • 「trunk(トランク)」,「branches(ブランチ)」,「tags(タグ)」の3つのフォルダがあり,ふだんコミットするのはtrunkである,という点を理解していること。


ファイルパスの変更について:

  • SVNの「名前の変更」等によって,SVN管理下のファイルやフォルダの名前を変えられること。
  • SVN管理下にあるフォルダを,そのまま(Ctrl + C などで)コピーしてはいけない,という点を理解していること。もしコピーする場合は,ペースト後のフォルダの中から,SVNの情報を格納している「.svn」フォルダを全て削除しなければならない,という点も理解していること。
  • SVNの「エクスポート」によって,作業コピー内のフォルダ構造を,安全に外部へコピーできること。


初級者としての仕上げ:

  • Tortoise SVNについてわからない事があったら,大体のことは,とりあえず自分でネットで調べて解決できるだろう,という自信があること。
  • 「SVN(Subversion)」は正式にはCUIのツールであって,それをGUIにしたものがTortoise SVNである,という点を理解していること。わからない事があって調べている時に,もし「Subversion」や「svn」についての記述を発見したとしても,その記述がそのままTortoise SVNにも当てはまるわけではない,という点を理解していること。
  • 何かまずい事が起きると,大抵「クリーンアップしてください」と表示されるが,その時にクリーンアップを実行して問題を解決できること。
  • 「ファイルを作ったが,コミットし忘れていた」というのは,トラブルの元になりやすい恥ずかしい事態なので,そういったことが起きないように普段から意識すること。
    • つまり,SVN管理下のフォルダ上に何かファイルを新規作成したら,「あとでSVN追加すればいいや」と考えてはいけない(そういう人はたいていコミットし忘れる)。ファイル名が確定し次第,速やかに「SVN追加」する習慣を持つこと。



学習用のリンク集:

TortoiseSVNのインストールと設定
http://www.gside.org/Gentoo/subversio...
http://www.gside.org/Gentoo/subversio...


TortoiseSVNの簡単な使い方
http://bokunomichi.blogspot.com/2007/...


なんちゃってTortoiseSVN(Subversion)の使い方シリーズ [SVNマニュアル擬き]
http://hide.xsv.info/tips/svnmanual/


Subversion TortoiseSVNでファイル管理(利用編)
http://koyamataro.com/2009/06/14/subv...

  • いつか「あの時のバージョンに戻したい」ということが起きるかもしれません。その時は、戻したいファイルやフォルダ上で右クリック「TortoiseSVN > 特定のリビジョンへ更新」を選択します。

中級編

覚えるべきこと:

競合とマージについて:

  • コミット対象のファイルが「リポジトリ側と比べて古くなっています」と警告された場合に,まず「SVN 更新」を実行することにより,自分自身が加えた変更を保ったままファイルを最新の状態に更新できる,ということを理解していること。
  • 「SVN 更新」時に,もし自分が作業コピーに加えた変更と同一の箇所に更新が存在すると「競合」が起こる,ということを理解していること。
  • 発生した「競合」をTortoiseMergeのようなマージツール上で編集する事によって,競合を解消できること。
  • SVNが「差分」を積み上げる形式でリビジョンを管理している,という点を理解すること。
    • 「特定のリビジョンへ更新」という操作は,過去のリビジョン間の差分を逆向きに順番に適用しているのだ,ということを理解すること。
    • なので,もしワーキングコピーに編集を加えたまま未コミットの状態にしておくと,過去のリビジョン間の差分を適用できないので,そのファイルに対して「特定のリビジョンへ更新」できず競合が発生してしまう,という点を理解すること。


ブランチとタグについて:

  • リポジトリ上の特定のパスに対して,タグ付けを実行できること。
  • ブランチを作成できること。
  • ブランチで発生した変更をtrunkにマージできること。
  • タグとブランチの利用法の違いを,他の人にわかりやすく説明できること。


リポジトリの立ち上げについて:

  • 自分一人が利用するために,ローカルに新規リポジトリを作成できること。
  • チーム作業で利用するために,Webサーバ上に,WebDAV経由で利用可能な新規リポジトリを作成できること。


他ツールとの連携について:

  • クライアントサイド・フックスクリプトを作成し,コミットメールの送信などを行なえること。
  • サーバサイド・フックスクリプトを作成し,コミットログのチェックなどを行なえること。
  • trac等を導入し,BTSと連携してSVNリポジトリを管理できること。
  • Eclipse等のIDEを使っている場合は,Subclipse等のプラグインでバージョン管理できること。


他ツールとの比較について:

  • CVS(Concurrent Versions System)と比べた場合の,Tortoise SVNのメリットを説明できること。
  • VSS(MicrosoftのVisual Source Safe)と比べた場合の,Tortoise SVNのメリットを説明できること。
  • Tortoise SVNなどの集中型バージョン管理システムと比べた場合の,Gitなどの分散バージョン管理システムのメリットを説明できること。



学習用のリンク集:

Subversion(TortoiseSVN)でコンフリクト(競合/衝突)を解決する方法(手順)
http://hide.xsv.info/tips/svnmanual/c...


Subversionベストプラクティス(タグ・ブランチなど)
http://www.nulab.co.jp/kousei/chapter...


ローカルにリポジトリを作成して利用開始する手順
http://www.profaim.jp/tools/soft/svn/...
http://www.profaim.jp/tools/soft/svn/...


Subversion(本家CUI)のダウンロード先について
http://www.glamenv-septzen.net/view/914


Apache上にリポジトリを作成する手順


以下のページの「クライアント側フックスクリプト」の項を参照
http://tortoisesvn.net/docs/nightly/T...

  • Start-commit
  • Pre-commit
  • Post-commit
  • Start-update
  • Pre-update
  • Post-update


SVNで,コミット時にログの入力を強制する (Windows版subversionのサーバ側フックスクリプトの作成方法)
http://language-and-engineering.hatenablog.jp/entry/20100819/p1


[環境構築]Trac と TortoiseSVN で BTS
http://d.hatena.ne.jp/kitokitoki/2008...
http://kamezo.cc/blog/entry/9758


Subversion : CVSとの違い (2006)
http://www.limy.org/program/subversio...
http://www.ne.jp/asahi/hishidama/home...
http://d.hatena.ne.jp/harg/20060823/1...

  • ツリー全体に一括して1つのリビジョン番号が振られるので,過去の特定の時点のツリーを丸ごと復元しやすい。
  • 空ディレクトリもコミットできる。
  • ファイル名を変更しても,コミット履歴が保たれる。
  • コミット時はローカルキャッシュとの差分のみを送信するのでトラフィックが少ない
  • brancheの扱い方がシンプルで使いやすい
  • バイナリファイルであっても格納形式は差分で済む
  • チェンジセットの概念があるので変更をもとに戻しやすい


SVNとVSSの比較
http://d.hatena.ne.jp/Isoparametric/2...
http://forza.cocolog-nifty.com/blog/2...
http://isobe.exblog.jp/8131488/

  • VSSはチェックアウトが排他ロックなので,担当者以外は誰も修正できない
  • TortoiseSVNのシェル拡張によってエクスプローラに統合された直感的なUI(アイコンオーバレイ)は、非常に魅力的
  • SVNはブランチ作成後のマージが楽
  • SVNはApache経由で利用できる
  • VSSは商品であり,有料


Git と Mercurial が Subversion より優れている点
http://tcha.org/blog/2010/02/01/dvcs-...
http://www.atmarkit.co.jp/fjava/rensa...
http://www.ibm.com/developerworks/jp/...

  • メタデータが置いてあるのが最上位ディレクトリ(.git)のみで済む
  • 分岐がある場合のマージがとても楽。分散バージョン管理システムとはそういうもの。
  • いったん実行してしまったコミットを取り消しやすい
  • 今はやりのGitHubを使えるようになる
  • ローカルでの変更が「宙に浮いた状態」にならなくて済む。「一時的な作業」の履歴の取り扱いが楽
  • ローカルリポジトリがあるので,オフラインでも開発できる




関連する記事:

SVNで,コミット時にログの入力を強制する (Windows版subversionのサーバ側フックスクリプトの作成方法)
http://language-and-engineering.hatenablog.jp/entry/20100819/p1


開発時に,SVNリポジトリのディレクトリ上にコミットしておきたいバッチファイル
http://language-and-engineering.hatenablog.jp/entry/20101109/p1


Windows Vista上に Apache+Subversion+Tortoise SVN をインストールして,ネットワーク越しにリポジトリを利用できるようにする手順
http://language-and-engineering.hatenablog.jp/entry/20110723/p1


Linux上のApacheで,複数のWebサイトを同時テストできる環境を作る (仮想ホストでサイト住み分け + SVNフックスクリプトで自動デプロイ+ユーザ認証でチーム作業)
http://language-and-engineering.hatenablog.jp/entry/20110928/p1


わたしのSVNコミットログ 語録集
http://language-and-engineering.hatenablog.jp/entry/20120212/p1