Subversionの履歴
subversion
【名】
破壊、転覆事務所に爆弾をしかけたのは、破壊行為だった。
http://eow.alc.co.jp/subversion/
クソCVSなんてSubversionしてやるぜ!ってことか
うっかり、海外で口走れないなw
推奨されるリポジトリ構成
- trunk : ここに本流を入れる
- branches
- tags
CVSはブランチをやるとわけわからんようになるらしくてあまり使わない方がいいと言われている。Subversionではブランチ・タグは単純なファイルコピーでシンプルなのでバンバンやってよろしいらしい。
http://subversion.bluegate.org/doc/
CVSユーザのためのSubversion
削除されたファイルを復活する
Subclipseではできないっぽい?
http://subversion.bluegate.org/doc/ch04s04.html#svn.branchme...
svn copy --revision 807 \
http://svn.example.com/repos/calc/trunk/real.c ./real.c
1.4と1.5ではフォーマットが異なる
svn: このクライアントは、作業コピー '.' を扱うには古すぎます。もっと新しい Subversion クライアントをダウンロードしてください。
なんと一度1.5のクライアントを使うと1.4に戻せないみたい!!
SubversiveでクライアントSVNKITをdevelopmentにして、戻すと何故か起動直後に落ちるようになった。どうやらsvnのバージョンが原因みたい
ブランチをトランクにマージする方法
- リビジョンを指定する。ブランチした時のリビジョンと適用したいリビジョンを指定
- -dry-runするとマージ結果だけを教えてくれる
svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk
このコマンドは作業コピーに/repos/calc/trunkの「343-344における変更点」だけを取り入れる。変更点の範囲を指定しないと、どこからどこまでなのかがわからない(URLだけ指定できないのはこのため)
.svnを削除する
Windows
% for /R /D %I in (.svn) do RMDIR "%I" /S /Q
http://dev-e.sakura.ne.jp/wiki/wiki.cgi?page=.SVN%A5%D5%A5%A...
「*.svn」ではだめだったけど「.svn」ならいけた
Linux
% find /path/to/dir -type d -name '.svn' | xargs rm -rvf
http://kjirou.sakura.ne.jp/mt/2008/01/dirsvn.html
% rm -rf `find ./ -type d -name .svn ! -regex \.svn/. -print`
http://blog.triangle.jp/2007/11/svn.html
たぶんxargs使う方がいい?
ってかsvn exportなんてあるんだ!.svnファイルを生成せずにファイルだけ得られるみたいだ。
おまけ。そのフォルダ内の全ファイルを削除する svn コマンド
% svn status | awk '{print $2}' | xargs svn del
http://bitmap.dyndns.org/blog/archives/001521.html
別のリポジトリを同時に使いたい
root | |-config | |-application | |-library----vendor1 (別のリポジトリ) | --------vendor2(別のリポジトリ)
libraryにsvn:ignoreつけるだけでOK。libraryに直接別のリポジトリを置いても大丈夫かもね。
別リポジトリのupdate/commitが面倒だけど、同じものが複数のリポジトリにまたがるよりかはマシ。ってかそもそもリポジトリ設計が…(ry
外部定義
こういう別のレポジトリを配置する場合のやり方が標準で備わってました!!
上記の方法だとupdateが面倒。外部定義という方法を使えば、updateとstatusが別のリポジトリも同時にできる(commitは同時にはできないみたい)
やり方はプロパティ「svn:externals」に
「{directory_path} {repository_url}」を設定するだけ。
例えば、こういうリポジトリ構造の場合。
root | |--- application | |--- vendor | |---------- hoge | |---------- moge
hogeは http://repos/hoge、mogeはhttp://repos/mogeを使いたいという場合は
% svn propedit svn:externals vendor
これを実行するとエディタが起動するので以下を設定
hoge http://repos/hoge moge http://repos/moge
マニュアルみるとディレクトリの指定は相対パスなのでvendorじゃなくてもrootでもいいみたい。また、バージョンも指定できるらしい
参考
http://www.mazn.net/blog/2008/07/07/98.html
マニュアル
http://subversion.bluegate.org/doc/ch07s05.html
リビジョン番号や更新者や日付をファイル内に自動で埋め込みたい
svn:keywords使ってファイルごとに使うキーワードを設定する。
でも、そんなこと普通はやってられないので自動プロパティ設定する。
クライアントのconfigファイルの[auto-props]ディレクティブに設定。
例えばphpだったらこんな感じ。
[auto-props] *.php = svn:eol-style=native; svn:keywords=Id Rev Date; svn:mime-type=text/x-php
ここにいい見本があった
http://code.google.com/p/symfony-doc-ja/wiki/SymfonyReposito...
あとはファイル名に「$Id$」って書くだけ。
$Id$は「$Id: svntest.php 2462 2009-02-23 23:29:26Z akkun $」みたいなのに置き換わります。
svnプロパティで管理されるので、一度この属性がついたらどこでも有効になる。
WindowsでもCUIで使う
apache2.0
http://subversion.tigris.org/servlets/ProjectDocumentList?fo...
apache2.2
http://subversion.tigris.org/servlets/ProjectDocumentList?fo...