Subversion:如何将文本附加到每个提交的文件?

时间:2009-10-28 20:49:54

标签: svn tortoisesvn append hook

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

以下是我需要工作的内容

  1. 用户提交文件
  2. 运行某些东西(钩子或其他东西)
  3. 来自#2的其他内容应该将静态文本附加到正在提交的文件
  4. 基于此http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=296576 我看到它不推荐,但是必须有一种方法可以在每次提交时将文本追加到文件中。

    操作系统已发送Os

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

5 个答案:

答案 0 :(得分:10)

查看SVN书籍this chapter末尾的红色框:

  

虽然钩子脚本几乎可以做任何事情,但钩子脚本作者应该有一个维度显示约束:不要使用钩子脚本修改提交事务。虽然使用钩子脚本来自动纠正提交的文件中存在的错误,缺陷或策略违规可能很诱人,但这样做可能会导致问题。 Subversion保留了某些存储库数据的客户端缓存,如果以这种方式更改提交事务,那些缓存将变得不可思议地过时。这种不一致可能导致意外和意外的行为。您应该只是在预提交挂钩中验证事务,而不是修改事务,如果它不符合所需要求,则拒绝提交。作为奖励,您的用户将学习细心,合规的工作习惯的价值。

我订阅了POV,红色框中的文字应该认真对待。

答案 1 :(得分:8)

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

答案 2 :(得分:2)

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

Inserting comments automatically using TortoiseSVN?

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

如果有人发现了如何执行此操作的集中方式,请在此处发布。

答案 3 :(得分:0)

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

机器人然后检查/更新它所关注的文件,检查它们的政策和法律通知,自动添加它需要的任何东西,然后检查更改。这样,subversion的缓存很高兴,法律声明是在所有文件上。开发人员将在下一个更新/提交周期中将更改下拉,就像其他任何更改一样。您甚至可以让机器人自动使用最新的定义更新法律部分,具体取决于您希望的复杂程度。

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

答案 4 :(得分:-1)

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

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

那就是说,为什么地球上你想要这样做?