svn学习之路-概念篇

工欲善其事,必先利其器。在正式学习svn前,有必要简单理解下svn的工作原理。

1.版本库

svn是集中式的文件管理服务器,说白了就是一种C/S架构的服务器,其核心是版本库。它记录着文件的更改情况,不仅包括文件内容本身,而且包含文件的删除、增添、替换、目录结构更改等情况。用户每一次拷贝都是中心版本库当前最新的版本内容。当然,用户也可以通过svn的命令回看之前的任意版本内容。
svn的C/S架构

2.版本控制方式

当多用户同时操作同一个版本文件时,会遇到一个共享冲突的问题。如何避免这个问题是版本控制系统必须解决的。一种方式是使用“锁定-修改-解锁”的模式,这样可以有效的避免冲突, 但是多用户不能很好的并行工作,影响效率。另一种常用的模式就是“拷贝-修改-合并”,svn就是采用这种模式。举例说明。
用户A和B从中心版本库中checkout同一份工作拷贝,两人并行工作,互不干扰。当A修改完自己的工作内容,推送到中心版本库中时,更新了版本库的内容。之后B也完成了任务,提交时,会出现多种情况,1)两人修改的内容不是同一个文件,那B提交到版本库时不会有冲突,版本库中的版本会再一次更新;2)两人修改的是同一个文件,但修改的内容不冲突,比如,A在文件头位置修改,B在文件尾位置修改,这样提交后会提示有改文件版本过时(因为A先提交了,生成了一个新的版本),此时B需要把最新的版本内容更新,svn会自动合并,不会有内容冲突,然后B再次提交修改即可;3)两人修改的同一个文件,且在同一个位置修改,那这时就会有文件内容冲突的,B无法顺利提交,需要先更新版本,然后再手动合并冲突的内容,这样才能顺利提交。

以下实际操作体验下这种模式。

先svn checkout 一份版本工作拷贝,

$ svn checkout file:///home/jiangzls/svnrepos/learnsvn/trunk
$ ls       # 该工作拷贝下包含一个文件夹和两个文件
dir/ Groupsock.hh readme

1)用户A对Goupsock.hh做了修改后提交,

$ vi Groupsock.hh  # 用户A修改Groupsock.hh,添加第44,45行

$ svn diff # 工作拷贝比较
Index: Groupsock.hh
===================================================================
--- Groupsock.hh        (revision 14)
+++ Groupsock.hh        (working copy)
@@ -41,6 +41,8 @@

 // user A add a no.3 line

+
+// user A add a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值