可能是重复问题:
我可以回去编辑 SVN 提交时的注释吗?
偶尔会不小心提交一个没有注释的文件(我们应该在每次提交时都进行注释,无论更改有多微小)。是否有一种方法可以在提交后添加注释而不必还原和重新提交?
可能是重复问题:
我可以回去编辑 SVN 提交时的注释吗?
偶尔会不小心提交一个没有注释的文件(我们应该在每次提交时都进行注释,无论更改有多微小)。是否有一种方法可以在提交后添加注释而不必还原和重新提交?
除了像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,则可以参考以下截图:
毕竟,预防胜于治疗!
示例 pre-commit 钩子以防止没有提交消息的提交:
for %%I in (%3) Do (
IF %%~zI==0 (
echo "No commit message given" 1>&2
exit 1
)
)
我的bash知识有限,但上述方法似乎可行。当然,如果需要,您也可以使用Python、Ruby等脚本。基本上,第三个参数是一个包含提交信息的临时文件。检查它是否为空,如果是,则退出。
pre-revprop-change
钩子或svnadmin setlog
命令(如果您可以本地访问存储库,我怀疑您没有这个权限),但在团队环境中,我建议还是选择撤销和重新提交更好。我认为这两个都是最佳实践:
我发现后者很有用,因为它允许您回到之前的提交并修改写得不好、不准确或只是糟糕(例如“已修复”:-)的消息。
关于前者,最好在服务器上安装--这样它就会自动适用于所有人。如果您要求用户在客户端上设置它,您可能会遇到新用户忘记这样做的风险。
安装钩子就像将钩子脚本放置在存储库的钩子目录中一样简单。事实上,当您创建存储库时,它会使用示例钩子脚本填充钩子目录;它们是Unix/Linux shell脚本,所以如果您的服务器基于Windows,则需要找到(或编写)其他版本。恰好,SO问题Subversion Hooks的常见类型提供了一些钩子的Windows版本,包括上述两个。
有关Subversion钩子的完整详情,请参阅实现存储库钩子,该章节位于Subversion Book的第5章中,用于服务器端,以及TortoiseSVN手册的第4章中的客户端钩子脚本。