承诺代表某人进行颠覆

时间:2010-07-21 23:55:17

标签: svn

有没有办法代表某人检查更改?例如,我想通过某种构建服务器处理更改,然后让构建服务器为用户检查它。

可行吗?

3 个答案:

答案 0 :(得分:2)

我不知道代表某人直接提交的直接方式......但如果你编写一个pre-revprop-change挂钩,你可以用revprop编辑来做。请参阅:pre-revprop-change hook doc

除非存在pre-revprop-change挂钩,否则将禁用版本属性编辑。这个想法是脚本应根据正在编辑的属性,用户等确定是否允许属性编辑。

您可以编写一个pre-revprop-change挂钩,它只允许构建服务器用于凭据的某个管理员用户更改username属性,并在提交后更改用户名。

  1. 构建服务器为某人的提交运行构建
  2. 所有测试都通过,因此它将更改合并/提交到另一个分支/ repo
  3. 编辑该提交的revprop用户名
  4. 版本属性未在Subversion中进行版本控制,因此它总是来自该用户。这似乎足够合理,但如果这是一个坏主意,有人会纠正我。只需确保您的钩子完全符合您的要求 - 创建一个测试库以进行实验并彻底测试。

答案 1 :(得分:1)

您可以在命令行中指定用户和密码:

svn commit --username user --password pass [files]

您是否考虑使用特定的构建服务器?许多Continuous Integration服务器在用户执行对存储库的提交和CI服务器的情况下运行,以验证构建是否仍然有效(并对许多其他度量执行测试和报告)。我自己偏爱Hudson

答案 2 :(得分:0)

您可以在svn服务器上添加pre-commit hook,这是一个在用户检查内容时将被触发的脚本。如果他们不通过钩子的要求,可以使用这些钩子来阻止提交脚本。

我不建议使用更长的抽取过程,例如在提交之前构建源。检查更改所需的时间越长,其他人以后发生合并冲突的可能性就越大。

开发人员应该在他们检查之前编译/测试他们的更改,这将提供一定程度的可靠性更改(适合我)。在签入后运行连续构建以检查所有更改是否有效并运行单元测试。如果在此阶段构建失败,则负责的用户可以选择修复更改或将其回滚。