検索 K
コミットされたファイルの拡張子によりMIME typeを決定し、 svn:mime-type属性に付与しようとしました。 ファイルの追加時のみsvn:mime-type属性値が存在するかチェックすることにして、 ファイルの編集時は省略することにします。
結論から言うとスマートにはできません。 まだやってませんが以下のようなことをしなければならなそう。 ・svn:mime-typeを付与するためだけの作業コピーをサーバに用意し、 post-commitフックでsvn:mime-type属性値をセットして再度コミットする ・コミットのストリームを横取りしてsvn:mime-typeを付与するように書き換える(可能か?) ・svnクライアント側でsvn:mime-typeが付与されるようにする
以下作業記録。
start-commitフックおよびpre-commitフックでsvn:mime-typeをはじめとする属性を 編集することは不可能です。 start-commitフックが受け取る引数は ・REPOS ・USER pre-commitフックが受け取る引数は ・REPOS ・TXN ですが、トランザクションを指定して属性を編集する方法がないからです。 これらはコミットを中止したり、コミットする人にメッセージを伝達する時に有用でしょう。
次にpost-commitフックで属性を編集しようとしました。 post-commitフックが受け取る引数は ・REPOS ・REV です。 svn propsetコマンドおよびsvn propeditコマンドは、2通りの方法で属性を編集できます。
1. 作業コピー内にあるバージョン管理下の属性をローカルで変更して、コミットする 2. リポジトリのリビジョンに関する、バージョン管理下にないリモートの属性を変更します。 <対象> には、アクセスするリポジトリを決める意味しかありません。
1。はMIME typeを付与するためだけに作業コピーが必要で、コミットも再度発生するということです。 2。はリビジョン全体のファイルが対象となってしまいます。
