おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

subversionをざっくり勉強してみた

subversionの知識が中途半端なのでsvnbook日本語訳のPDF版を作成してみましたをざっくりと1章〜3章まで読んでみた。
3章までで力つきたので、4章以降はまた後日。

勉強になったところのまとめ

import

import a b としたときに、aのディレクトリはそのまま作業コピーとして使える?

  • >使えない。svn checkoutが必要。
リビジョンキーワード
  • HEAD -> リポジトリ内の再審理ビジョン
  • BASE -> 作業コピーのリビジョン
  • COMMITTED -> 変更された最後のリビジョン
  • PREV -> COMMITEDの一つ前のリビジョン

BASEとCOMMITTEDってリビジョン番号は違っても、中身は一緒だよね?あえて二つに分ける必要ってあるんだろうか?

リビジョン日付
  • リビジョン番号の代わりに{"2008-03-28 15:00"}みたいに時間が指定できる。
  • {"2008-03-28"}のように日付だけ指定すると、28日の0時以前を指定したことになるため28日のリビジョンは含まれないので注意。
check out

svn checkout http://hoge.net/repos/svn/trunk hoge
の様にすると、hogeディレクトリに作業コピーを作る。
hogeを付けないと、trunkディレクトリに作業コピーを作る

update
R
Replaced 同じ名前だけど別のファイル
G
merGed マージ。なんでMじゃないんだろう。

Conflictがおこったら、以下の三つのファイルが作成される

filename.mine
update前の作業コピー中のファイル
filename.rOLDREV
update前のBASEリビジョンにあったファイルの内容
filename.rNEWREV
HEADリビジョンの内容

svn resolved filenameで三つのファイルは消える。commitできるようになる。

diff

svn diff > patchfile
みたいにファイルにリダイレクトするとパッチが作れる

cat

svn cat -r1 hoge.txt
でリビジョン1のhoge.txtの内容が見れる

list

svn list http://hogehoge.net/repos/svn
リポジトリのディレクトリ構成を表示

cleanup

Lが表示されたらsvn cleanupで解決