分支模式在SVN环境下的应用——代码所有权(规则模式)

一、分支模式的相关定义

模式 代码线所有权(Codeline Ownership)
别名 分支所有权(Branch Ownership )

场景
    作为一名程序员,在一组多代码线的环境下,并至少在一条代码线上开发。代码线规则已经为该代码线定义好检入/检出的规则。有些人要在代码线上进行某些工作,但是该规则并没有允许这样的操作,或者就是规则对一些特定事务的描述含糊不清。

问题
    能影响代码线的动作能否执行?在保证代码线的完整性和连续性的同时,怎样做上面的决策?

动机 

    •“理论上,实践和理论是一致的;但在实践中,其两者却有极大的不同。”没有一个规则能够涵盖所有的情况。 代码线规则从理论上满足了需求,但是在实践中,则还有必要其他一些东西补充理论和实践之间的缺失。
    •如果代码线规则不是很清楚,则开发人员需要将其定义清楚。
    •代码线规则是会被违背的,不管是有意还是无意。 
    •代码线必须保持正确且连续的状态,以避免与正在进行的开发任务起相反的作用。.

解决方案
    为每个代码线分配一名所有者(owner),其相应的职责如下
    •如果代码线的规则定义不清晰,则定义清楚;
    •如果检入的配置项与代码线的规则相抵触,则决定让其保留在代码线中,还是回退到上一个版本
    •制定相应的规则,防止代码线处于含糊不清状态或不适用实际情况
    •在该代码线上,辅助或执行变更的集成
    •决定何时对代码线进行冻结,解冻;何时代码线必须结束生命周期并且合并到主线(Mainline)中

    所有权(Ownership)并不一定意味着排他式的访问,但却表示用户认证访问控制。也许只有代码线的所有者才能检入文件(受限访问线);或者,其他人只要在检入前获得代码线所有者的同意,即可检入代码线,又或者在检入后立刻通知代码线所有者(宽松访问线)。代码线规则必须清楚地定义访问控制类型相对应的所有权类型。通常来讲,在代码线上工作的开发人员越多,相应的所有权策略也越严格。同样地,限制程度与代码线包含活动的风险性或是复杂性,或是对稳定性的要求成正比。在较小的项目和团队中的代码线中所包含较少的关键任务,在保证代码线完整性和连续性的前提下,提供比较随意,限制较少的访问控制策略。


变种 代码线专属(Codeline Dictatorship )

    代码线的所有权中极其严格的一种形式,其配置项的检出和分支都是严格受限的,当然更包括检入。专属者可能是一个人,或是一个小组。一个常见的例子就是“远程开发线”。远程开发人员可能被禁止从非远程分支中创建新的版本或是分支,因此,本地分支仅仅是“主人(master)”开发的地方。这实质上就是ClearCase Multisite定义的“分支主人身份(branch mastership)”的概念。

导致的场景
    •只有一个人对代码线的连续性和完整性负责。这样,代码线比较可能处于一种稳定的状态。
    •保持所有者对代码线的状态负责,降低了代码线规则被践踏或代码线被用于错误目的的可能。
    •代码线的概念完整性由一个头脑,也就是所有者维护,作为解决代码线问题的单一权威。

 

二、模式的分析

    代码线所有权/代码线专属模式强调的是代码线所有者对代码线的控制权,适用于由专人(或角色)对代码线内容进行全权负责的情况下使用

 

三、代码线专属(Codeline Dictatorship )在Subversion环境下的实现

代码线专属

如上图所示(相关内容只是相关模式实现的一个实例,实际使用时可根据实际需求对角色及授权进行调整):

1、代码线的所有者对代码线拥有完全的操作权限
2、主管、项目经理及配置经理仅对代码线拥有有限的操作权限(读)
3、代码线的所有者拥有再授权的权限

 

参见:SmartChange并行开发管理模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值