【发布时间】:2012-02-01 12:52:39
【问题描述】:
感谢您阅读我的问题:)
我的目标是在向 SVN 服务器触发提交之前修改此消息:
我已经有一个 start 和 pre-commit 钩子 (C#),当我尝试提交某些东西时,它们都会被调用。我还有一个可用的 SharpSvn 库。但不幸的是,我没有前进,我不知道如何填写此消息。
那么有可能吗?如果可以,怎么做?我很高兴每一个小提示:)
【问题讨论】:
标签: c# svn sharpsvn pre-commit-hook
感谢您阅读我的问题:)
我的目标是在向 SVN 服务器触发提交之前修改此消息:
我已经有一个 start 和 pre-commit 钩子 (C#),当我尝试提交某些东西时,它们都会被调用。我还有一个可用的 SharpSvn 库。但不幸的是,我没有前进,我不知道如何填写此消息。
那么有可能吗?如果可以,怎么做?我很高兴每一个小提示:)
【问题讨论】:
标签: c# svn sharpsvn pre-commit-hook
除非失败,否则提交挂钩不会与客户端对话。然后,他们将发送到标准错误的任何内容发送给用户。挂钩脚本不能更改提交的任何方面。 (这并不完全正确:提交后挂钩可以修改提交消息、作者和提交时间,但这通常是一个非常糟糕的主意。)
您可以做的是确保您的提交消息格式正确,如果不正确,则提交失败。由用户以正确的格式重新提交他们的提交。
我不建议使用内置的 TortoiseSVN 客户端挂钩。这些是在逐台机器的基础上完成的,因此用户可以选择退出它们,如果用户使用不同的客户端(例如 VisualStudio AnkhSVN 插件),它们将不起作用。
你没有提到你想要做什么或为什么。
非常欢迎您使用用 Perl 编写的my hook。 kitchen sink 挂钩执行多项任务,其中一项确保提交消息的格式正确。例如,您可以要求它包含缺陷跟踪 ID,或者至少......比如说...... 10 个字符长。
但是,如果用户的提交消息不符合条件,则挂钩将导致提交失败,用户将不得不重试。诀窍是放置一个好的错误消息,以便用户知道他们做错了什么。相信我,经过一两次尝试后,用户就会了解好的提交消息需要具备的条件。
但是,您可能想尝试稍微不同的路线:使用持续集成系统,例如 Jenkins。
我注意到,一旦我在 Jenkins 上启动并运行了一个项目,提交消息就会自动得到改善。每个 Subversion 提交都会变成一个构建。但是,Jenkins 还会向您展示之前和当前构建以及提交消息之间的所有更改。
这主要与可见性有关。在 Jenkins 之前,提交消息是相当隐藏的。只有在您执行svn log 时才能看到它们,而且很少有人会定期执行此操作。但是,在 Jenkins 中,您可以在每次构建和提交时看到它。只需点击几下网页,您就可以查看历史记录、更改者以及更改内容。
这可能是处理你想要的最好的方式。
【讨论】:
好的,我找到了答案:)
我通过钩子脚本尝试它是错误的。更好的解决方案是构建自定义问题跟踪器插件:
http://tortoisesvn.googlecode.com/svn/trunk/contrib/issue-tracker-plugins/issue-tracker-plugins.txt
这样我可以从 DB 中读取我的问题,让开发人员选择他需要的问题并将它们放入日志消息窗口。
【讨论】: