svn co リポジトリへのパス--depth=immediates or infinity
svn checkout -r 2 リポジトリへのパス
svn st
追加や修正のあったファイルの状態を表示できる。
svn up
svn commit もしくは svn ci
svn revert
merge --depth=infinity -r取り消したいリビジョン番号:左より-1のリビジョン リポジトリURL 適用するチェックアウトディレクトリー
svn log --revision リビジョン番号 リポジトリURL
シンボリックリンクのようなもの。メインは別のリポジトリで開発していてそこを参照したい場合に設定する。参照オンリーではなくコミットまで出来てしまう点は注意。以前はフォルダ単位でしかできなかったが、1.6以降ファイル単位も可能になった。
属性の設定を選んで、属性名はsvn:externalsを選ぶ。
設定値はファイル単位で記述、絶対パスでも可能
../../../../../../../404.html 404.html ../../../../../../../500.html 500.html
よく混乱してしまうのがマージである。基本的にブランチで枝分かれしない限りは必要ないのだが。
cd マージされる側のワーキングコピー svn merge -c 305212,305357,305716,305867,305962,306151,306370 http://host/マージ取得元のURL
サーバの情報が記述されているメタ情報(.svn)を書き換える必要がある。通常はsvnのコマンドで行う。GUI使ったほうが楽かも
svn switch --relocate
これはトップレベルフォルダを移動するだけで良い。一旦チェックアウト後そのディレクトリをプログラム実行場所まで移動してもメタ情報は相対パスで記述されているので大丈夫
svn diff リポジトリ1URL@1000 リポジトリ2URL@head
svn -r 1000:2000 リポジトリ1URL
最後に--summarizeをつけるとファイルの出力のみとなる
svn diff -r77771:head [ワーキングディレクトリ名]
移動しない場合は引数で指定可能
--summarizeオプションを付けるとファイル名のみ出力
svn diff -r77771:head --summarize [ワーキングディレクトリ名]
yum install mod_dav_svn.
<Location /mysvn> DAV svn SVNParentPath "/home/svn" SVNListParentPath on deny from all allow from xxx.xxx.xxx.xxx AuthType Basic AuthName "Rutake Repository" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user </Location>
mkdir /home/svn/repos svnadmin create /home/svn/repos chown -R apache:apache /home/svn/repos
Unix 系システムでは~/.subversion/auth/、 Windows であれば %APPDATA%/Subversion/auth/
一度認証に成功するとそのID/PASSWORS情報がキャッシュされる。別のユーザでコミットしたい場合はそのファイルを消さないと前回成功したユーザIDでコミットされてしまう。
コマンドラインオプション中で--username または--passwordを指定するとそちらが優先して利用される。
httpを使わない場合はsvnプロトコルを利用するのがシンプル。ローカルマシン以外はデーモン起動する必要がある。
svnserve -d -r リポジトリへのパス
/etc/rc.d/rc.localにでも記述しておけば自動起動になる。
# vi /etc/services svnserve 3690/tcp # Subversion svnserve 3690/udp # Subversion
# vi /etc/xined.d/svnserve service svnserve { disable = no socket_type = stream protocol = tcp wait = no user = root server = /usr/local/bin/svnserve server_args = -i }
# chkconfig --add svnserve # /etc/init.d/xinetd restart
エクスプローラーの拡張シェルとしてインストールされる。開発も活発なのでこれを選択しておけば安心。日本語パッケージをインストールしないとコミットコメントに日本語が使えないので注意。
デフォルトでは全てのドライブの更新を監視しているため、そりゃー重いだろう。設定でアイコンオーバーレイを無効にするか、監視ドライブを限定すること。
こちらはEclipseプラグイン。
svn list svn://ホスト名/svn/repos
リポジトリのルートのconf以下のファイルを変更
[general] password-db = passwd
[general] anon-access = write auth-access = write
認証に関しての情報が少なすぎ!!! httpの場合はmod_svn_authzというモジュールを組み込まないと素通りできる
svnadmin dump /usr/local/takeru > takeru.out #一気に圧縮する svnadmin dump /usr/local/takeru | gzip > takeru.out.gz
mkdir -p /usr/local/takeru_from_backup svnadmin create /usr/local/takeru_from_backup svnadmin load /usr/local/takeru_from_backup < takeru.out
SVNROOT/confディレクトリ以下をごっそりコピーすればよい。
svnadmin dump /home/svn/repos | svndumpfilter exclude 除外したいパス(/GPS) > /var/tmp/svnbackup
svnadmin dump /home/svn/repos > svn_rep_backup_`date +%Y%m%d`
cd リポジトリのワーキングコピー #URL情報取得 svn info | grep URL svn sw --relocate 旧URL 新URL
svnadmin dump /home/svn/repos > /var/tmp/repos.out # 圧縮してもOK svnadmin dump /home/svn/repos | gzip > /var/tmp/repos.out.gz
mkdir -p /home/svn/repos svnadmin create /home/svn/repos/
ここまではリポジトリ作成と同じ手順
svnadmin load /home/svn/repos < /var/tmp/repos.out
流し込むのでそれなりに時間がかかる
リポジトリは/svn/repos
リポジトリ初期化(ディレクトリは作成しておく) | svnadmin create /svn/repos/ |
リポジトリを見る | svn list file:///svn/repos |
インポート | svn import [ローカルdir] http://localhost/svn/repos/[リポジトリdir] |
ローカルでインポート | svn import file:///svn/repos/newrepos |
チェックアウト(通信方式(file,svn,http)が.svn/entriesにかかれる) | svn co file:///svn/repos |
diffチェック | svn diff [ファイル名] |
ブランチ、トランク間のdiff | svn diff url@HEAD url@HEAD | grep "+++" |
プロンプトを出さない(マージの時に衝突のプロンプトを無視したいとか) | --non-interactive |
タグもコピー先のディレクトリがtags以下にするという慣例を除けばコマンド自体は一緒。
svn copy http://example.com/svn/trunk http://example.com/svn/brance/new
svn log --stop-on-copy [url]
trunk | メインとなるリポジトリ |
branch | trunkから枝分かれしたもの(branchは枝の意味) |
tag | ある時点のソースに名前を付けてスナップショットにできる。subversionではtagに対してもコミットできてしまうのであるが、そういう運用はしないこと! |
commit | ローカルにある変更をリポジトリに反映すること |
ViewVCというのがある。
RPMインストールでさまざまな依存関係があるので公式サイトからごっそり関連RPMを持ってくるとよい。DebianやVineならaptが使えるので非常に楽
下記ソースインストールは2004年の情報で今はバイナリがあることがほとんどなのでこちらを推奨する。
RedHatES3GUIインストールサーバータイプで開発ツールのみ選択した。
# cd biuld_unix # ../dist/configure
# ./configure --enable-mods-shared=all --enable-shared=yes --with-berkeley-db=/usr/local/BerkeleyDB.4.2
# ./configure --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-berkeley-db=/usr/local/BerkeleyDB.4.2
ですべて問題なく。
http://c-brains.jp/blog/wsg/09/11/17-143618.php
[working copy at a single revision]とでて何も出てこない。
→ワーキングディレクトリを更新すればよい