使subversion始终在空提交消息上中止而不修改服务器配置

时间:2015-05-13 12:45:26

标签: svn

命令行中的

svn commit拉起我的编辑器,让我写一个提交消息。然后,如果消息为空,则询问

Log message unchanged or not specified
(a)bort, (c)ontinue, (e)dit:

我从不使用(或想要使用)继续或编辑选项。而且,由于我通常在后台运行提交,因此必须记住fg才能回答这个问题很烦人。我经常收到bash: a: command not found错误。

我希望svn不要求并且总是中止(就像git那样)。是否有配置选项?

编辑:我在工作中使用了一个存储库,我与超过1K的其他开发人员分享,而且我不是管理员。所以我需要自动中止才能在不修改服务器或其配置的情况下工作。

2 个答案:

答案 0 :(得分:2)

您可以使用pre-commit hook中止空提交消息。它并不太难,我相信Subversion带有一个模板预提交钩子来实现这一点。

使用svnlook log命令提取提交注释。如果它为空,则可以使用非零退出代码退出,并且提交将不起作用。您还可以将某些内容打印到提交者将看到的STDERR,这样他们就知道为什么他们的提交被拒绝了。像这样:

log_message=$(svnlook -t $TXN log)
if [[ -z $log_message ]]
then
    echo "Your commit message was empty. Recommit with a commit message" 1>&2
    exit 2
else
    exit 0
fi

我有一个更强大的pre-commit hook,可以设置谁有权修改或添加特定文件,正确设置属性,以及提交消息的格式是否正确。你可以看一下。

答案 1 :(得分:2)

没有配置选项。必须通过服务器上的钩子脚本执行对提交强加的任何要求。

如果这仅供您自己使用,您可以编写自己的shell脚本,在调用svn二进制文件执行提交之前为您执行检查。但是如果您在系统上使用任何其他客户端(如IDE插件),这将会崩溃。