代码之家  ›  专栏  ›  技术社区  ›  Steven

代表某人进行颠覆

svn
  •  2
  • Steven  · 技术社区  · 16 年前

    有没有办法代表某人签入更改?例如,我希望通过某种生成服务器处理更改,然后让生成服务器为用户签入它。

    这可行吗?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Joshua McKinnon    16 年前

    我不知道代表某人直接提交的直接方式……但是如果您编写了一个pre-revprop change挂钩,那么您可以使用revprop编辑来完成。见: pre-revprop-change hook doc

    除非存在RealRePrPro更改挂钩,否则修订属性编辑将被禁用。其思想是,脚本应该根据正在编辑的属性、用户等来确定是否允许属性编辑。

    您可以编写一个pre revprop change hook,该hook只允许生成服务器用于凭据的某个管理用户更改username属性,并在提交之后更改username。

    1. 生成服务器为某人的提交运行生成
    2. 所有测试都通过,因此它将更改合并/提交到另一个分支/repo
    3. 编辑该提交的revprop用户名

    在Subversion中,修订属性没有版本控制,因此它看起来总是来自该用户。这似乎很合理,但如果这是个坏主意,有人会纠正我的。只要确保你的钩子做了你想做的事情-创建一个测试库来进行实验和彻底测试。

        2
  •  1
  •   Dave Bacher    16 年前

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

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

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

        3
  •  0
  •   krock    16 年前

    您可以添加 pre-commit hook 在svn服务器上,这是一个脚本,当用户签入某些内容时将触发该脚本。如果这些钩子不满足钩子脚本的要求,则可以使用它们来防止提交。

    我不建议使用更长的绘制过程,比如在提交之前构建源代码。签入更改所需的时间越长,以后其他人发生合并冲突的可能性就越大。

    无论如何,开发人员应该在签入之前编译/测试他们的更改,这将提供一些级别的更改的可靠性(对我来说很有用)。一个连续的构建应该在签入之后运行,以检查所有的更改是否有效并运行单元测试。如果在这个阶段构建失败,则负责的用户可以选择修复这些更改或将它们翻转。