是否存在与git prepare commit消息挂钩等效的SVN

时间:2017-06-16 14:44:51

标签: windows svn svn-hooks

我想编辑传入的提交消息(添加分支名称,或添加一些忽略某些行的模板等)。当我在搜索时,我发现git有一个准备提交消息钩子似乎这样做但svn没有。有没有办法在post提交之前在svn中执行此操作?

2 个答案:

答案 0 :(得分:1)

可能可以使用Subversion更改传入事务的罕见地方,不建议或不支持这样做。

答案 1 :(得分:0)

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

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

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

  • Use SVN hook scripts to validate, not modify

  • 调整SVN中现有修订的日志消息通常是一行命令。默认情况下,禁止修改日志消息。管理员可以始终允许所有用户或仅限某些用户。

我猜你已经使用了TortoiseSVN客户端,因为问题标有标签。 TortoiseSVN支持几个属性,可以帮助您定义客户端的行为。它们将帮助您实现提交策略,包括日志消息限制和模板:

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

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

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

有关属性及其用途的完整列表,请参阅手册的TortoiseSVN Project Properties章节。

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

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

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

  • 但是当您运行 svn commit 时,您联系远程服务器以将本地更改发布到存储库,并以新版本的形式将其提供给其他开发人员。即使您在提交SVN时在日志消息中出错,您也可以自己进行调整,或者询问拥有此类权限的同事。简单而无伤害。