版本模型
所有的版本控制系统都需要解决这样一个基础问题:
怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易
文件共享的问题
考虑这个情景,我们有两个共同工作者,Harry 和 Sally,他们想同时编辑版本库里的同一个文件,如果首先 Harry 保存它的修改,过了一会,Sally 可能凑巧用自己的版本覆盖了这些文件,Harry 的更改不会永远消失(因为系统记录了每次修改),Harry 所有的修改不会出现在 Sally 的文件中,所以 Harry 的工作还是丢失了—至少是从最新的版本中丢失了—而且是意外的,这就是我们要明确避免的情况!

如果不解决这个问题,协同工作的就失去意义了
有两个方案可以解决这个问题:
锁定-修改-解锁 方案
许多版本控系统使用 锁定-修改-解锁 模型来解决这个问题,这是一个简单的解决方案。在这种系统中,在同一时间版本库只允许一个用户修改一个文件。首先,Barry 必须在修改前 锁定 该文件。锁定文件有点像从图书馆结束; 如果 Harry 锁定了一个文件,那么 Sally 就修改该文件。如果她试图锁定该文件,版本库会拒绝这个请求。她只能读取这个文件,并等待 Harry 结束修改并释放文件锁。在 Harry 解锁文件后,他的任务就完成了,现在 Sally 可以接手工作 - 锁定并编辑文件。

SVN采用复制-修改-合并模型解决文件共享问题,避免了锁定-修改-解锁模型带来的限制。用户各自拥有工作副本,可并行开发,通过合并解决冲突。在冲突较少的情况下,这种方式提高了效率,而处理冲突的时间通常少于等待解锁的时间。用户交流是解决冲突的关键,而锁定模型在某些不可合并文件场景下更为适用。
最低0.47元/天 解锁文章
347

被折叠的 条评论
为什么被折叠?



