2017-06-16 90 views
1

我想编辑传入的提交消息(添加分支名称,或者添加一些模板,忽略某些行等)。当我搜索时,我发现git有一个准备提交消息挂钩,似乎这样做,但svn没有。在提交之前有没有办法在svn中做到这一点?是否存在与git prepare commit消息钩子相同的SVN

+0

请在邮件列表中查看[此帖子](https://svn.haxx.se/users/archive-2008-03/0690.shtml)。 –

+1

@PatrickQuirk该帖子大约9岁,并有一个断开的链接。这里是工作的链接:http://subversion.apache.org/faq.html#change-log-msg – bahrep

+0

感谢您的链接。这是否意味着我应该在post commit hook中更改日志消息,还是有更好的方法? – ryanbmg

回答

0

在SVN,你不需要用钩子脚本添加日志消息模板:

  • 在TortoiseSVN客户端,您可以并且应该使用tsvn:* properties

  • 使用vanilla svn.exe命令行客户端,使用CMD_EDITOR环境变量来定义您想要调用的日志消息,或根据提交中的更改自动确定日志消息。

  • Use SVN hook scripts to validate, not modify

  • 调整SVN中现有修订版的日志消息通常是单行命令。默认情况下,禁止修改日志消息。管理员可以随时允许所有用户或只有特定的用户使用。

我猜你已经使用TortoiseSVN客户自提标有标签。 TortoiseSVN支持多个属性,这些属性可以帮助您定义客户端的行为。他们会帮助你实现承诺的政策,包括日志消息限制和模板:

  • tsvn:logminsize定义传入修订的日志信息中必须包含的字符的最小数量。

  • tsvn:logtemplate将帮助您定义默认日志消息模板。还有8个额外的tsvn:logtemplate属性,您可以使用它们为不同类型的提交添加不同的模板。

  • tsvn:logsummary将帮助您定义正则表达式来获取提交消息的一部分,并在您使用TortoiseSVN查看修订历史记录日志时将其显示为摘要。

参见手册的性质和宗旨的完整列表TortoiseSVN Project Properties章。


您必须使用git的pre-commit挂钩来验证日志消息并添加提交消息模板。如果您不这样做,修复日志消息中的错误的过程需要您使用可能不重要的git rebase。可以有其他的方式来添加日志消息策略,但在git的世界中,你必须使用钩子脚本。

不要忘记,svn commitgit commit操作在使用git或SVN的常见工作流中扮演不同的角色。svn commitgit commit的整体思路和结果是不一样的。因此,*-commit挂钩有两个系统不同的目标:

  • 运行的git在本地的Git仓库提交是本地,客户端只运行。当你在git中提交时,你只需要创建一个本地快照而不需要联系这个受祝福的远程仓库。在这种情况下,使用本地钩子来定制客户端的默认行为应该是非常好的。除非您通过推或拉来发布它们,否则您的本地更改不会影响其他git用户。这是git工作流程的一部分,需要您最大限度地关注日志消息 - 重写提交的数据(包括日志消息)将迫使您的同事暂时搁置当前任务并开始手动修复其本地回购。

  • 但是当你运行SVN提交,你联系的远程服务器来发布你的本地资料库的修改,使他们在新版本给其他开发者的形式提供。即使您在提交SVN时在日志消息中犯了错误,您也可以随时自行调整,或者询问有此特权的同事。简单而无伤害。

+0

我在TortoiseSVN中使用了一个模板,这是我希望首先更改日志消息的主要原因。我在模板文本的底部有一个部分,我想忽略哪些部分给用户提供了指令,这些指令可以通过提交后提交钩子获取。例如,如果他们的消息中包含“RUN:Foo”这一行,它将启动一个Hudson工作。我只是不希望启动命令或命令列表包含在提交的日志消息中 – ryanbmg

+0

我评论得太快我会尝试他们tsvn:logsummary,你明天提到 – ryanbmg

1

在罕见的地方,它可能可能有可能改变与Subversion的传入交易,不建议或支持这样做。