Subversion vol.1

Subversion(svn)とは?

  • パージョン管理システムの一つ
    • ソースコードやその他のデータを管理するために用いられるシステム

なぜバージョン管理するのか?

  • 複数の開発者が同一のコードに対する変更を平行して進めることができる
  • 変更の啓示的な記録が保存される
  • チーム作業においてプロジェクト全体を対象として戻ることが可能に。

→作業効率の向上と安全性が計られる

バージョン管理システムの根幹

  • diff
    • ファイル同士の違いを調べることができる。
  • patch
$ diff test1.txt test2.txt
2c2
< 明日はスープカレーを食べます。
---
> 明日はいちごアイスを食べます。
$ diff -u test1.txt test2.txt
--- test1.txt	2009-06-04 10:16:19.000000000 +0900
+++ test2.txt	2009-06-04 10:17:23.000000000 +0900
@@ -1,2 +1,2 @@
 今日はカレーを食べました。
-明日はスープカレーを食べます。//この行が(-)
+明日はいちごアイスを食べます。//こうなる。(+)
$ diff -u test1.txt test2.txt > test.patch
$ patch < test.patch
patching file test1.txt
$ cat test1.txt
今日はカレーを食べました。
明日はいちごアイスを食べます。

チェックアウト(Check Out)

svn co (URL)
  • リポジトリからデータをダウンロードする。
  • 最初の一回のみ

アップデート(update)

svn up
  • 今の状態にする

情報をみる(status)

svn st
  • 状態を確認する

バージョン管理に追加(add)

svn add (ファイル名)

リポジトリにコミット(commit)

svn ci -m "ログに残すコメント"
//-m ログを書く
  • addで追加したものが対象
  • コミットする前に必ずstする。
  • bugがないことを確認してコミットする。
  • コメントには何を追加したのかを書く。
    • 「〜〜のため〜〜機能を追加しました。」など

ログを見る

svn log

コンフリクト解消

svn resolved (ファイル名)

差分を調べる

svn diff
  • 衝突した部分を修正してコンフリクト解消する。

ファイルを削除する

svn rm (ファイル名)
  • ローカルで削除するとめんどくさいことになる
  • 削除した後はコミットが必要。

ヘルプ

svn help
// サブコマンドについて詳細を知りたいとき
svn help (サブコマンド)

ファイルのステータスについて

$ svn st
M       enomoto.txt
? 追加されていない
A 新しく追加
M 変更をした(commit前)
U ファイルに変更があった(update時に表示)
C コンフリクト
! ローカルのファイルがない

用語集

  • repository
    • 容器、倉庫、バージョン管理の対象を保持して管理する入れ物
  • revision number
    • リボジトリの特定の状態を指定するID
  • conflict
    • 衝突。他人も同じ場所を編集してcommitできない状態。(平常ではない、解決する必要がある)