Carpe Diem

  Top > スポンサー広告> Subversion > svn commitでコメントなしを拒否する方法  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

svn commitでコメントなしを拒否する方法

2011 - 11/11 [Fri] - 11:51

pre-commitというhookを使って制限します。レポジトリのhooks/の中にpre-commit.tmplがあるのでそれをコピー。

$ cp pre-commit.tmpl pre-commit

実行権限をつけ、所有者は同じディレクトリ内のファイルと合わせます。今回はsvnとします。

$ sudo chmod 755 pre-commit
$ sudo chown svn:svn pre-commit

pre-commictの中身は以下のように書き換えます。
ただしpythonとsvnlookの位置は自分の環境に合わせて修正してください。

#!/usr/bin/python
"""
Subversion pre-commit hook which currently checks that the commit contains
a commit message to avoid commiting empty changesets which tortoisesvn seems
to have a habbit of committing.
 
Based on http://svn.collab.net/repos/svn/branches/1.2.x/contrib/hook-scripts/commit-block-joke.py
and hooks/pre-commit.tmpl
 
Hacked together by Jacques Marneweck <jacques@php.net>
 
$Id$
"""
 
import sys, os, string
 
SVNLOOK='/usr/bin/svnlook'
 
def main(repos, txn):
    log_cmd = '%s log -t "%s" "%s"' % (SVNLOOK, txn, repos)
    log_msg = os.popen(log_cmd, 'r').readline().rstrip('\n')
 
    if len(log_msg) < 10:
        sys.stderr.write ("Please enter a commit message which details what has changed during this commit.\n")
        sys.exit(1)
    else:
        sys.exit(0)
 
if __name__ == '__main__':
    if len(sys.argv) < 3:
        sys.stderr.write("Usage: %s REPOS TXN\n" % (sys.argv[0]))
    else:
        main(sys.argv[1], sys.argv[2])



この通りに修正します。一応ですが、pythonとsvnlookの位置の調べ方は次の通りです。
$ which python
/usr/bin/python

$ which svnlook
/usr/bin/svnlook

これでコミット時にコメントがないとエラーが返ってくるようになりました。

root@Server:/home/svn/test# svn commit -m ""
送信しています              test.php
ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです):
svn: コミットが pre-commit フックによって妨げられました (終了コード: 1) 。出力:
Please enter a commit message which details what has changed during this commit.


ソース:
Subversionでログメッセージ(コメント)の入力を強制する

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。