感谢您阅读我的问题:)
我的目标是在向SVN服务器提交提交之前修改此消息:
我已经有一个启动和预提交挂钩(C#),当我尝试提交某些内容时,它们都会被调用。我还有一个有效的SharpSvn库。但不幸的是我没有前进,我不知道如何填写这条消息。
这是可能的,如果可以,怎么样?我对每一个小提示感到高兴:)
答案 0 :(得分:3)
除了失败之外,提交挂钩不会与客户端通信。然后,他们将发送给标准错误的任何内容发送给用户。钩子脚本不能改变提交的任何方面。 (这不完全正确:提交后挂钩可以修改提交消息,作者和提交时间,但这通常是个坏主意。)
您可以做的是确保您的提交消息格式正确,如果不是,则提交失败。用户可以使用正确的格式重新提交提交。
我不建议使用内置的TortoiseSVN客户端挂钩。这些是在逐个机器的基础上完成的,因此用户可以选择退出它们,如果用户使用不同的客户端(例如VisualStudio AnkhSVN插件),它们就无法工作。
你没有提到你想做什么或为什么。
非常欢迎您使用Perl编写的my hook。 kitchen sink 挂钩执行多项任务,其中一项确保提交消息的格式正确。例如,您可以要求它包含缺陷跟踪ID,或者至少要......说... 10个字符长。
但是,如果用户的提交消息与条件不匹配,则挂钩将无法提交,用户将不得不再次尝试。诀窍是提出一个好的错误消息,以便用户知道他们做错了什么。相信我,经过一两次尝试,用户可以了解一个好的提交消息需要做什么。
但是,您可能希望尝试稍微不同的路线:使用持续集成系统,例如Jenkins。
我注意到,只要我在Jenkins上启动并运行一个项目,提交消息就会自动改进。每个Subversion提交都会转换为构建。但是,Jenkins还会向您显示先前和当前构建与提交消息之间的所有更改。
这主要与知名度有关。在Jenkins之前,提交消息是相当隐藏的。如果你做了svn log
,你只能看到它们,很少有人定期这样做。但是,在Jenkins中,您可以在每次构建和提交时看到它。您可以通过点击网页查看历史记录,更改历史记录以及更改内容。
这可能是处理你想要的最佳方式。
答案 1 :(得分:2)
好的,我找到了答案:)
通过钩子脚本尝试它是错误的。更好的解决方案是构建自定义问题跟踪器插件:
http://tortoisesvn.googlecode.com/svn/trunk/contrib/issue-tracker-plugins/issue-tracker-plugins.txt
有了这个,我可以从DB中读取我的问题,让开发人员选择他需要的问题并将它们放入日志消息窗口。