Subversion/使い方Top / Subversion / 使い方構築リポジトリを作るsvnadmin create /path/to/svn/repos svnadmin create --fs-type fsfs /path/to/svn/repos FSFSはBerkeley-DBが使えない場合(NFS上で運用とか) プロジェクトをリポジトリに追加
svn import /tmp/projectA file:///〜/repos/projectA -m 'initial import.'
普段の作業チェックアウトsvn co file:///path/to/svn/repos/projectA/trunk projectA
svn co svn+ssh://user@host/path/to/svn/repos/projectA/trunk projectA ブランチ / タグ付け
svn copy file:///〜/repos/projectA/trunk file:///〜/repos/projectA/branches/hoge-branch svn copy file:///〜/repos/projectA/trunk file:///〜/repos/projectA/tags/release-1.0 ブランチのマージhttp://subversion.bluegate.org/doc/ch04s04.html # trunkのworking copy内で svn merge -r 分岐したときのリビジョン:最新のリビジョン ブランチのURL 属性削除# 実行属性 svn propdel svn:executable FILELIST # バイナリ svn propdel svn:mime-type FILESIT なんかインポートしたらバイナリだと判断されたものがあったりしたので 無視するファイル# セット svn propset svn:ignore PATTERN DIR # 編集 svn propedit svn:ignore DIR 昔のファイルを操作移動 / 別のファイルに置き換えてしまった場合など。 svn command -r OPERATIVE-REV item@PEG-REV リビジョンPEG-REVのころのitemで特定されたオブジェクト(現在は違う名前かも知れない)に対し、 リポジトリの中を見るsvn ls URL_OR_PATH [--xml] svnlook tree /path/to/svn/repos [path/in/repos] コミットログ修正svnadmin setlog --bypass-hooks /path/to/svn/repos -r REV NEWLOGFILE # 以下 hooks/pre-revprop-change が必要な方法 svnadmin setlog /path/to/svn/repos -r REV NEWLOGFILE svn propedit --revprop -r REV svn:log 指定したリビジョン間で svn status っぽい出力を得るsvn diff -r ARG --summarize # こちらは1リビジョンでの変更のみ svnlook changed [-r REV] /path/to/svn/repos # それぞれのリビジョンでの変更が見られる svn log [-q] -v [-r ARG] ファイルの move の履歴svnlook history REPOS_PATH [PATH_IN_REPOS] 各行の変更者とリビジョン情報の取得svn blame TARGET リポジトリの整理dump/loadsvnadmin dump /path/to/svn/repos > DUMPFILE svnadmin load /path/to/svn/repos < DUMPFILE リポジトリ分割svnadmin dump /path/to/svn/repos > DUMPFILE svndumpfilter --drop-empty-revs --renumber-revs include PATH < DUMPFILE > DUMPFILE_PATH パスがPATHを含むものだけダンプ。 --drop-empty-revs --renumber-revsで関係ないリビジョン番号をスキップ。 move/copyなどをした場合はコピー元も含めないと文句を言われる。
リポジトリの移動後の working copy での処理svn switch --relocate FROM_URL TO_URL [PATH ...] svnservesvnserveの起動# 適当な権限のユーザになって svnserve -d -r /path/to/svn/repos 参考
svnserveで管理
複数人で管理(svn+ssh / file)Berkeley-DB + 全開な方法リポジトリのdb 777, db/* 666で動いてそうな気がする。 FSFS + Group手抜きバージョン@研究室# sは初めからついてる chmod g+sw db/ chmod g+sw db/*/ chmod g+w db/write-lock db/current ちなみに NFS のロックではまるのか、コミット時に以下のエラーを吐かれた(昔はそんなことなかった気が。 NFSのディスクを物理的に持っているマシンからだと成功。 svn: Can't get exclusive lock on file 'REPOS/db/write-lock': No locks available Apache2モジュールを有効化は省略。 <Location /REPOS> DAV svn SVNPath /REPOS_PATH </Location> BASIC認証についての注意書は ここ。 Apache2越しは read-only にする。 <LimitExcept GET PROPFIND OPTIONS REPORT> Deny from all </LimitExcept> その他リポジトリレイアウトつれづれhttp://subversion.bluegate.org/doc/book.html#svn-ch-5-sect-6.1 とか参照
一人で扱う分には割とどうでもいい気がする |