我想编辑传入的提交消息(添加分支名称,或添加一些忽略某些行的模板等)。当我在搜索时,我发现git有一个准备提交消息钩子似乎这样做但svn没有。有没有办法在post提交之前在svn中执行此操作?
答案 0 :(得分:1)
在可能可以使用Subversion更改传入事务的罕见地方,不建议或不支持这样做。
答案 1 :(得分:0)
在SVN中,您不需要使用钩子脚本来添加日志消息模板:
使用TortoiseSVN客户端,您可以而且应该使用tsvn:*
properties。
使用vanilla svn.exe命令行客户端,使用CMD_EDITOR
环境变量来定义要调用的日志消息,或者根据提交中的更改自动确定日志消息。 / p>
调整SVN中现有修订的日志消息通常是一行命令。默认情况下,禁止修改日志消息。管理员可以始终允许所有用户或仅限某些用户。
我猜你已经使用了TortoiseSVN客户端,因为问题标有windows标签。 TortoiseSVN支持几个属性,可以帮助您定义客户端的行为。它们将帮助您实现提交策略,包括日志消息限制和模板:
tsvn:logminsize
定义传入修订的日志消息必须包含的最小字符数。
tsvn:logtemplate
将帮助您定义默认日志消息模板。您可以使用其他8个tsvn:logtemplate
属性为不同类型的提交添加不同的模板。
tsvn:logsummary
将帮助您定义regexp以获取部分提交消息,并在您使用TortoiseSVN查看修订历史记录日志时将其显示为摘要。
有关属性及其用途的完整列表,请参阅手册的TortoiseSVN Project Properties章节。
您必须使用git的pre-commit
挂钩来验证日志消息并添加提交消息模板。如果不这样做,修复日志消息中的错误的过程要求您使用git rebase
这可能是非平凡的。可能还有其他方法可以添加日志消息策略,但在git的世界中,您必须使用钩子脚本。
不要忘记svn commit
和git commit
操作在使用git或SVN的常见工作流中扮演不同的角色。 svn commit 和 git commit 操作的整个想法和结果是不同的。因此,*-commit
钩子在两个系统中都有不同的目标:
在本地git存储库中运行 git commit 是一个仅限客户端的本地操作。当您在git中提交时,您只能在不联系受祝福的远程存储库的情况下创建本地快照。在这种情况下,使用本地钩子来定制客户端的默认行为应该是完全正常的。您的本地更改不会影响其他git用户,除非您通过推或拉来发布它们。这是git工作流程的一部分,需要您最大限度地关注日志消息 - 重写提交的数据(包括日志消息)将迫使您的同事放下当前任务并开始手动修复其本地存储库。 / p>
但是当您运行 svn commit 时,您联系远程服务器以将本地更改发布到存储库,并以新版本的形式将其提供给其他开发人员。即使您在提交SVN时在日志消息中出错,您也可以自己进行调整,或者询问拥有此类权限的同事。简单而无伤害。