svn高级开发人员提交代码前确认

svn高级开发人员提交代码前确认,svn,svncommit,Svn,Svncommit,我想在初级开发人员将代码提交给SVN之前,通过高级开发人员检查他们的代码。我如何使用SVN管理它?我的观点是高级开发人员通知初级开发人员要提交他们的代码(例如通过电子邮件),在他们确认后,代码提交。 我们的SVN在windows服务器上 谢谢。Subversion不直接支持“代码审查”模型,就像您在GitHub Pull请求中使用的那样。这里有一些附加工具可能会有所帮助,但我不能推荐任何附加工具,因为我从未使用过它们 您可能想要尝试的是让开发人员在自己的分支中工作,并致力于此,然后请高级开发人员

我想在初级开发人员将代码提交给SVN之前,通过高级开发人员检查他们的代码。我如何使用SVN管理它?我的观点是高级开发人员通知初级开发人员要提交他们的代码(例如通过电子邮件),在他们确认后,代码提交。 我们的SVN在windows服务器上


谢谢。

Subversion不直接支持“代码审查”模型,就像您在GitHub Pull请求中使用的那样。这里有一些附加工具可能会有所帮助,但我不能推荐任何附加工具,因为我从未使用过它们


您可能想要尝试的是让开发人员在自己的分支中工作,并致力于此,然后请高级开发人员进行审查,然后合并到中央主干或其他分支。

有两种可能性:

  • 您可以使用SVN中的分支和--reintegrate选项将它们自动合并回主干。只要你遵循一些规则(你可以弯曲它们,你可以打破它们,但你会遇到困难),这就相当有效:

    • 切勿进行任何子树合并(合并子目录;仅在主干或分支级别合并)
    • 不要在不同的分支之间进行合并,除非您要从中进行分支的路径(通常是主干)。所以没有同事的交叉分支
    • 始终将来自分支的所有提交合并到主干中,并始终完全同步来自主干的分支。所以不要采摘樱桃
    • 通过遵循这些规则,您可以轻松合并并保持主干清洁,而无需使用任何修订号。有关更多详细信息,请参阅
    • 这也意味着集成合并(从developerbranch到trunk)始终是无冲突的,因为所有更改(在trunk中)通常是由开发人员事先合并的。如果主干维护人员在合并过程中遇到冲突,他会拒绝分支,并告诉开发人员从主干同步合并以解决分支上的冲突
    • 您应该保护trunk不受初级开发人员提交的影响,但这对于整个过程来说既不必要也不重要
    • 有关更多信息,请参见(使用一些精美的ascii艺术)
  • 您可以接受人们发送的修补程序。这是一个相当手工的过程,但它取决于您有多少初级开发人员。请注意,虽然听起来不可能,但整个svn开发过程都是通过向邮件列表发送补丁,直到您发送足够的补丁以获得提交者权限


  • 您可以让您的初级开发人员只在分支上工作,并阻止他们向主干提交。您可以通过在SVN服务器上设置特定repo路径的权限,或者通过编写预提交挂钩来实现这一点

    如果您使用的是VisualSVN服务器,则可以在此对话框中配置它:


    在本例中,我设置了一个覆盖权限,这有点作弊。对于更大的团队,您可能需要更具可扩展性的东西,您可以在repo上设置只读权限,然后明确授予开发人员对/branchs/的访问权限,以及高级开发人员对/trunk/的访问权限。

    我认为Subversion中不支持类似的东西。也许你想探索迁移到Git。虽然Git支持更好的分支策略,“任何类似的”都被夸大了。对此的一个补充是,这实际上可以通过svn authz文件强制执行。为(初级?)开发人员组提供对分支的读/写访问权限,并严格提供对主干的读访问权限。然后,为高级开发人员提供对主干(以及必要时的分支)的读/写访问权限。这样,合并到主干中的唯一更改必须来自高级开发人员。