TortoiseSVN:Subversion客户端
1. 引言
· 团队开发?
· 修改文件而他人也在改?你修改的内容丢失?
· 保存了文件可又后悔了?想得到几天前的版本?
· 发现了bug,想知道bug何时引入的?
这些问题都遇到了?那就使用TortoiseSVN吧。TortoiseSVN是Subversion的客户端。Subversion是针对CVS的不足而开发的版本控制系统。
2. 基本概念
档案库Repository
Subversion是版本管理的后台系统,其核心是保存数据的档案库-repository。 档案库用分层的“文件-目录”文件系统数来存储数据。连接到档案库的客户能读写数据。档案库记录了你的每一次修改!客户端可以从档案库中取到过去的版本。
图2.1. 典型服务器/客户机模型
版本模型Versioning Models
基本问题:共享数据而不相互覆盖?
文件共享的问题The Problem of File-Sharing
在合作开发中文件共享的问题是显而易见的。
图 2.2. 要避免的问题
锁定-修改-解锁The Lock-Modify-Unlock Solution
Visual SourceSafe采用的就是这种模型。
Figure 2.3. 锁定-修改-解锁方案
问题:
· 锁定可能引起管理问题: 如忘记解锁别人无法使用。
· 锁定造成不必要的串行作业。
· 锁定可引起安全问题。
拷贝-修改-合并The Copy-Modify-Merge Solution
Subversion和CVS等采用拷贝-修改-合并模型。项目成员从档案库读取个人的工作拷贝,所有项目成员并行地在工作拷贝上工作,然后合并在一起形成新的版本(version)。
图 2.4. 拷贝-修改-合并方案
Figure 2.5. ...Copy-Modify-Merge Continued
如果修改不重叠,TortoiseSVN可自动合并。修改重叠则引起冲突(conflict)。冲突只能靠手工修改!
这种模型好像很混乱,但实际上很好用。解决冲突的时间大大小于因锁定而等待的时间。解决冲突的最好办法是沟通。
实际操作Subversion
工作拷贝Working Copies
Subversion的工作拷贝就是包含文件的本地目录树,与一般目录的树状结构相同,可以进行任意的工作!工作结束后可将新的文件“发布”到档案库。
工作拷贝中包含了由Subversion创建和维护的一个特殊的子目录.svn ,该目录保存了重要的信息。不要删除这个目录!
例如,假定你的档案库包含两软件项目:paint和calc。
图 2.6. 档案库文件系统
