1

我正在寻找一种在提交前或提交后或任何其他方式上执行以下操作的方法。

这是我需要工作的

  1. 用户提交文件
  2. 有东西跑(钩子或其他东西)
  3. #2 中的其他内容应将静态文本附加到正在提交的文件中

基于此http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=296576 我看到不推荐这样做,但必须有一种方法可以在每次提交时将文本附加到文件中。

操作系统: Sent Os

我需要它的原因:通过插入法律声明来保护所有代码文件

4

5 回答 5

10

看SVN书这一章最后的红框:

虽然钩子脚本几乎可以做任何事情,但钩子脚本作者应该在一个方面表现出克制:不要使用钩子脚本修改提交事务。虽然使用钩子脚本自动更正提交的文件中存在的错误、缺点或违反策略可能很诱人,但这样做可能会导致问题。Subversion 保留存储库数据的某些位的客户端缓存,如果您以这种方式更改提交事务,这些缓存将变得难以察觉的陈旧。这种不一致会导致令人惊讶和意外的行为。而不是修改事务,您应该简单地在预提交挂钩中验证事务,如果它不满足所需的要求,则拒绝提交。作为奖励,您的用户将了解谨慎、合规的工作习惯的价值。

我同意 POV 认为应该认真对待红框中的文字。

于 2009-10-28T21:12:59.043 回答
8

根据该线程,您可以在预提交挂钩中执行此操作,但这将是一件坏事™ 如果您绝对必须在文件中包含静态文本,最好让开发人员将文本放入,然后使用预提交挂钩以验证它是否存在。如果静态文本不存在或不正确,则拒绝提交。

于 2009-10-28T20:53:21.670 回答
2

到目前为止,唯一可行的解​​决方案是使用 TortoiseSVN 的客户端钩子:

使用 TortoiseSVN 自动插入评论?

不幸的是,这限制了开发人员只能使用 TortoiseSVN。例如,使用 Visual Studio 插件将不起作用:(

如果有人发现如何做到这一点的任何集中方式,请在此处发布。

于 2009-11-01T16:18:30.703 回答
0

如何以另一种方式工作 - 使用机器人。这需要做更多的工作,但基本上是:接受提交到存储库中而没有所需的法律部分,并触发机器人查看(或让机器人定期查看)。

机器人然后检查/更新它照看的文件,检查他们的政策和法律声明,自动添加它需要的任何东西,然后重新检查更改。这样,颠覆的缓存很高兴,法律声明在所有文件上. Developerse 将在下一个更新/提交周期中拉下更改,就像他们对任何其他更改一样。您甚至可以让机器人自动将法律部分与最新定义保持同步,具体取决于您希望它有多复杂。

甚至可以利用像 Hudson 这样的东西在一个可用的框架中托管它。

于 2009-10-29T12:08:14.047 回答
-1

您可以在 SVN 服务器上安装一个挂钩,该挂钩将执行脚本并可以将信息附加到文件等。

这里有一点点信息:http: //svnbook.red-bean.com/en/1.4/svn.ref.repohooks.post-commit.html

也就是说,你到底为什么要这样做?

于 2009-10-28T20:51:39.460 回答