コンテンツへスキップ

Subversionのコミットhookでsvn:mime-type属性を付与する

コミットされたファイルの拡張子により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。はリビジョン全体のファイルが対象となってしまいます。

© 2003 Kurusugawa Computer Inc.