サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

Subversion で git config user.name のようなことをする

はじめに

 現在の職場では Subversion を使用しています。

 Subversion では、コミットしたユーザ名に「ログイン ID 名」が使われます。しかしながらこれは、社員番号などであることもしばしばあります。

 同じような悩みを持つ人はいるようで、以下のようなサイトが見つかりました。

Active Directoryと連携して、svn:authorに氏名を表示する(Windows) - I’m a Bomb!

SubversionのユーザIDをユーザ名に変換したい

 これらはサーバ側で処理を行うソリューションのようです。

クライアント側で

 クライアント側(ローカル側)で操作することはできないのでしょうか。

 調べたところ、Git の git config user.name のように手軽にはできないようです。コミットしたタイミングで動くフックスクリプトに「直前のコミットのプロパティを書き換える」という処理を書く必要があるようです。

 要件が二つあります。

 一つは書き換え許可です。この書き換えに対する許可自体はサーバ側のフックスクリプトで設定しておく必要があります。

 もう一つは、Subversion クライアントが TortoiseSVN に限られるということです。

フックスクリプト

 以下のスクリプトPostCommit.js のような名前で任意の場所に保存します。

var shell = new ActiveXObject("WScript.Shell");
var cmd = "C:\\nProgram Files\\TortoiseSVN\\bin\\svn propset svn:author --revprop -r " + WScript.Arguments(3) + " " + "<あなたのお名前>";
shell.Exec(cmd);
WScript.Quit(0);

フックスクリプトを設定する

 ローカルの作業ディレクトリにて TortoiseSVN の「設定」を起動します。作業手順はこちらをご覧ください。

 この設定で、先ほどのフックスクリプトを指定します。

 設定は以上です。

終わりに

 git config --global user.name にあたる処理は、残念ながら見つけることはできませんでした。作業ディレクトリを細かく分けている人は、ちょっと設定が煩わしいかもしれません。

参考

TortoiseSVN でクライアントフックスクリプトを設定する

 名前を書き換える svn コマンド。

svn propset svn:author --revprop -r リビジョン 名前