svn ignoreの設定を解除する時に苦労したので
調べたsvnの属性についてのメモ
理解は浅いので間違っているところあったらどんどこ突っ込んできてください。
属性の概念
svnには「属性」という渦巻く概念がある。渦巻いているかはわからないが。
svn help
コマンドで表示される利用可能なサブコマンド一覧の
propdel (pdel, pd)
propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)
prop系が主に「属性」に関係がある。
以下のドキュメント、前半部分を見ると主にcopyrightやlicense表示の時に使えるらしい。
http://discypus.jp/svnbook/svnbook_ja_html/ch07s02.html
いろいろな事に使えるsvnのメモ書き機能といったところか。
他にも、svnの機能としてsvn:
の名前空間を保持していて特殊な操作を行う事が出来る。
その中にsvn:ignore
等が存在し、バージョン管理から除外する設定に使うことができる。
svn:ignore属性の削除
svn:ignore
の設定を削除する目的のもと調べていたのでsvn:ignore
設定削除だけでも先に記しておく
# 設定されている属性と個数を表示
svn pl -R ./ | grep "svn:" | sort | uniq -c
# 設定ディレクトリを確認
svn pg -R svn:ignore ./
# ignore削除
svn pd svn:ignore 対象のディレクトリ
これでignore属性の削除が出来る
svn proplist (plist, pl)
コマンドとedit以外は属性値を引数として与える事がほとんど必須なので、一旦設定されている属性を表示させて属性値のつづり等を確認している。
標準ままだと出力がえらい事になるのでパイプを使って重複を削除している。
属性値を確認するコマンドは忘れそうなので自分は.bashrc
にエイリアスを張っておいた。
ちなみに追加は
svn ps svn:ignore 対象のディレクトリ
属性一覧
他にもある属性をかいつまんでまとめておく
svn:ignore
svnのバージョン管理から除外したいときに設定する。
svn st
でも表示されなくなるが
svn st --no-ignore
で表示される。
svn:mime-type
バイナリファイルに設定される属性。
通常svnは行単位で変更点をマージしようとするが、それを行わないようにする。
これをバイナリファイルにちゃんと設定してやるとsvnのマージやアップデートが早くなる?ってことかも?
svn:keywords
svnの情報をファイル内に記述する事が出来る。
キーワードを設定してファイル名に$キーワード名$
を記述しておくと展開される。
キーワードはDate
Revision
Author
HeadURL
Id
が使用可能
svn:eol-style
OS毎の改行コードの設定をよしなにやってくれる
賢いやつ
config設定
毎回、属性を設定するのは面倒なので
設定ファイルに記述して自動で設定を付与する事も出来る。
vi ~/.subversion/config
ここら辺に設定例が乗っているので真似してみるのも良いかもしれない
http://trac.symfony-project.org/wiki/SymfonyRepositoryTips