在TortoiseSVN中,提交后添加注释?

3

可能是重复问题:
我可以回去编辑 SVN 提交时的注释吗?

偶尔会不小心提交一个没有注释的文件(我们应该在每次提交时都进行注释,无论更改有多微小)。是否有一种方法可以在提交后添加注释而不必还原和重新提交?


5
与其规定必须这么做,你可以看看管理员是否能在服务器上安装一个提交钩子来防止没有注释的提交。 - SteveMc
感谢@RedFilter。@SteveMc,在一个功能性的工作环境中,那将是一个好主意。;-) - squidbe
1
manojlds(见下文)提出了一个很好的建议。我忘记了你可以创建本地的pre-commit hook。 - Richard J Foster
3个回答

2

除了像Can I go back and edit comments on an SVN checkin?中建议的那样使用以下命令对svn:log进行propset外:

svn propset --revprop -r 1000 svn:log "Not blank"

您应该考虑创建一个 pre-commit 钩子,以防止您在没有提交消息的情况下进行检入。这可以在服务器上或者甚至在您的本地副本上完成。如果您使用 TortoiseSVN,则可以参考以下截图:

enter image description here

毕竟,预防胜于治疗!

示例 pre-commit 钩子以防止没有提交消息的提交:

for %%I in (%3) Do (
IF %%~zI==0 (
echo "No commit message given" 1>&2
exit 1
)
)

我的bash知识有限,但上述方法似乎可行。当然,如果需要,您也可以使用Python、Ruby等脚本。基本上,第三个参数是一个包含提交信息的临时文件。检查它是否为空,如果是,则退出。


谢谢@manojlds。我喜欢这个想法,并且正在努力寻找如何实现的文档,但是没有找到太多信息。我找到了几个示例: http://tortoisesvn.googlecode.com/svn/trunk/contrib/hook-scripts/client-side/PreCommit.js.tmpl https://dev59.com/VHRB5IYBdhLWcg3wLk1M#692875 但我需要一些API或手册,向我展示可能的选项。你有什么想法如何检查空评论或者在哪里可以找到相关信息? - squidbe
@squidbe - 我已经在我的答案中更新了一个示例钩子。 - manojlds
谢谢@manojlds。使用该脚本时出现错误:“挂钩脚本返回了一个错误。”信息量很大,是吧?;-) 你能告诉我你用来编写该脚本的资源吗?我会去查找的,我只需要知道在哪里查找。 - squidbe

1
FAQ中可以了解到,有一种机制可用于使用pre-revprop-change钩子或svnadmin setlog命令(如果您可以本地访问存储库,我怀疑您没有这个权限),但在团队环境中,我建议还是选择撤销和重新提交更好。

谢谢@Richard,阅读了所涉及的内容后,我恐怕你是正确的。 - squidbe

0

我认为这两个都是最佳实践:

  1. 要求在提交时添加注释 (需要预提交钩子)
  2. 允许编辑现有注释 (需要预修订属性更改钩子)

我发现后者很有用,因为它允许您回到之前的提交并修改写得不好、不准确或只是糟糕(例如“已修复”:-)的消息。

关于前者,最好在服务器上安装--这样它就会自动适用于所有人。如果您要求用户在客户端上设置它,您可能会遇到新用户忘记这样做的风险。

安装钩子就像将钩子脚本放置在存储库的钩子目录中一样简单。事实上,当您创建存储库时,它会使用示例钩子脚本填充钩子目录;它们是Unix/Linux shell脚本,所以如果您的服务器基于Windows,则需要找到(或编写)其他版本。恰好,SO问题Subversion Hooks的常见类型提供了一些钩子的Windows版本,包括上述两个。

有关Subversion钩子的完整详情,请参阅实现存储库钩子,该章节位于Subversion Book的第5章中,用于服务器端,以及TortoiseSVN手册的第4章中的客户端钩子脚本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接