how to use subversion

「how to use subversion」の編集履歴(バックアップ)一覧に戻る

how to use subversion - (2008/09/11 (木) 05:25:24) のソース

この記事を書いた日 忘れた
この記事の更新日時2008/09/08

*Subversion
バージョン管理を使ってみる。
ここでは一人でバージョン管理を行うので競合などは発生せず、ネットワーク越しでもない状態の使用について書きます。ローカルマシン内で完結します。
他の人が書いたすばらしい文章があるので、そちらを参考にされるととてもよいと思います。

**参考文献(というかなんというか)
こちらがすばらしいです。
[[http://digilib.silkroad.net/modules/bwiki/index.php?Subversion]]
[[http://www.collab.net/scdocs/ddUsingSVN_command-line.html.ja]]

**install
まずはインストール。自分はdebian etchなのでapt-getを試してみた。どうやらこれで出来るようだ。
 apt-get install subversion
インストールは管理者権限で行う。終わったらすぐに抜けないと管理者権限でファイルとか作っちゃって面倒だからすぐ抜ける。

**before using
使いかた。の前に用語。
:リポジトリ(repositry)|貯蔵庫などの意味。svnではここに全ての情報を格納していく。

リポジトリ用ディレクトリの指定
 mkdir "リポジトリ用に使いたいディレクトリ名"
 svnadmin create "リポジトリ用に使いたいディレクトリ名"
まずディレクトリを作成。そしてsvnがここをリポジトリに使うように指定します。ここに様々な情報が格納されていきます。以下ではリポジトリを/home/hoge/svn-reposとします。

**import
リポジトリに格納します。インポートと呼びます。
バージョン管理を行いたいファイルがあるディレクトリが
 /home/hoge/work/hogehoge
にあり、リポジトリを
 /home/hoge/svn-repos
だとすると、
 cd /home/hoge/work/hogehoge
 svn import -m "importing file ..." . file:///home/hoge/svn-repos/hogehoge/trunk
とする。-mオプションで、このインポートに任意のメッセージを付けることが出来る。わかりやすいメッセージを付けておくと後々便利。このとき指定したhogehogeがプロジェクト名で、trunkは開発のメインラインということを示す。枝わかれしたときはtrunkではなくてbranchにする。開発が枝わかれしないことが判っているなら、
 svn import -m "importing file ..." . file:///home/hoge/svn-repos/hogehoge
でもよい。これでファイルがリポジトリに格納される。

**check out
リポジトリから出します。チェックアウトと呼びます。
プロジェクトのディレクトリに移動します。
 cd /home/hoge/work/hogehoge
移動したらそこにあるファイルを確認します。リポジトリから出してこようとするファイルと重複するファイルが存在すると失敗してしまうので、出してくるファイル(つまりインポートしたファイル)と同じファイル名のファイルは消しておきましょう。重複がないことを確認した上で、
 svn co file:///home/hoge/svn-repos/hogehoge/trunk .
coはチェックアウトのことです。これで前回インポートしたファイルの作業コピーがディレクトリに出来ました。以降このファイルはsvnによって監視され、差分情報などを見ることが出来ます。

**変更を見る status,diff
hoge.txtをチェックアウトしたら、それらを編集するはずです。
あれ、このファイル編集したっけ?というときに確認するには↓
 svn status hoge.txt

どこを編集したっけ?というときには↓
 svn diff hoge.txt
編集する前の最新バージョンとの差分が見れます。

**リポジトリの更新(リポジトリへの格納)
変更したファイルはリポジトリに格納しなければ意味がありません。
変更したファイルがある作業ディレクトリで以下のコマンドを実行。
 svn commit -m "message ..."
変更したファイルはsvnが監視しているので、変更したファイルのみをリポジトリに格納します。
これでリポジトリは更新されます。バージョン管理されているので、一回目にインポートした状態に戻すことも容易です。この例だとリビジョン2になっているはずです。
hoge.txt以外のファイルは変更していないとしても、それらのファイルにもリビジョン2が付けられます。svnは変更点を管理していくので、変更されていないファイルは変更点ゼロという情報がリポジトリに格納されます。

**更新状態の確認
更新の推移などを確認するには以下のコマンドを使います。
 svn log hoge.txt
更新の推移を詳細に見たいときは
 svn log --verbose hoge.txt
で見れます。

**必要なリビジョンのチェックアウト
 svn -r 3 file:///home/hoge/work/hogehoge .
のようにすれば数字で指定した(ここでは3)のリビジョンがチェックアウトできます。




**diffとpatch
diffを取りpatchを作る。パッチを作りたいファイルのあるディレクトリに移動する。ここでは/home/hoge/work/hogehogeである。
 cd ここでは/home/hoge/work/hogehoge
そして以下のコマンドを打ち込む!打ち込む!打ち込む!するとあら不思議、現在のディレクトリ以下のファイルのパッチを作ってくれます。すごいですね。
 svn diff > mychanges.patch
patchコマンドは頭がいいのでこのdiffファイルを食べさせてあげるとうまいことやってくれます。すごいですね。
 patch -p0 -i mychanges.patch
詳しい意味はわかりません。ごめんなさい。
 diff -c
とかでファイルを指定しても出来るみたいです。


**svncommand.vim
vimで使えるsubversion
http://www.vim.org/scripts/script.php?script_id=922
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。