技术开发 频道

Subersion和TortoiseSVN的简单使用

【IT168 技术文章】

    这篇教程是写给从未接触过Subversion的人看的,高手就不要浪费时间了。由于Subversion自带的文档太长,而且讲得太全面了,可能刚入门者没有耐心一点点看完(比如我刚接触Subversion的时候^_^),所以想写一篇比较基础,但是版本控制过程中遇到的各个方面(这里是指我自己遇到过的,Subversion还有许多基础的方面我没有遇到,用软件工程的话讲就是没有需求^_^,这些方面我就没有写)都能涉及到的教程,让更多的人能够了解subversion和使用subversion这个优秀的版本控制工具(好像subversion在国内用的人很少啊)。文中如有不对的地方,还请高手指正。特别感谢subversion.org.cn的论坛斑竹回答我关于lock的问题,特别感谢subversion的作者提供了这么一个优秀的版本控制工具。

    一.安装subversion 

   首先安装subversion1.2.3和图形化客户端TortoiseSVN-1.2.4.4479(该版本的TortoiseSVN针对subversion1.2.3)。subversion在服务器端和客户端都需要安装,TortoiseSVN只要在客户端安装就行。

    二.建立Repository(保存文档各个版本的数据库)

   在服务器端建立一个空目录,比如“C:\SVNProjects\Project1”。建立Repository的具体方式是:在subversion安装目录下的\bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该\bin目录,并执行“svnadmin create --fs-type bdb C:\SVNProjects\Project1”。之后你会发现原本是空目录的“C:\SVNProjects\Project1”下多出了几个目录和几个文件。这些目录和文件就是用来存储文档各个版本的数据库。

   ***除了用命令行方式建立Repository外,还可以用TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“C:\SVNProjects\Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。

    三.配置Repository

   建立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“C:\SVNProjects\Project1\conf\svnserve.conf”文件就是该Repository的配置文件。它是一个典型的INI文件,虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后,可以看见一些文本,该文件以“#”开始的行都是注释行。将“#[general]”行的“#”删掉,“#anon-access = none”“#auth-access = write”“#password-db = passwd”行也删掉“#”,注意,只是删掉“#”字符,不要把整行都删了。“anon-access = none”是指不允许匿名访问Repository,不管是读操作还是写操作。“auth-access = write”表示认证的访问允许写操作,当然读操作就更允许了。“password-db = passwd”表示用户名及用户密码存在一个叫passwd的文件里,这个文件也在“C:\SVNProjects\Project1\conf”目录下,用文本编辑器打开后,将“# [users]”的“#”字符删掉,然后在文件的最后添加一个新行,在该行写上用户名和密码,格式为“xxxx = yyyy”其中“xxxx”表示用户名,“yyyy”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。

    四.启动subversion服务器

   Subversion提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式是:在subversion安装目录下的\bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”,该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在DOS窗口下进入\bin目录,并执行:“svnserve.exe -d -r C:\SVNProjects”。服务器这时就启动了。“-r C:\SVNProjects”参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名,也可以是服务器端的ip地址)访问服务器的Repository时,服务器会知道你要访问的Repository路径是“C:\SVNProjects\Project1”。如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 “C:\SVNProjects\Project2”,并在其中再建立一个Repository,此时客户端就可以用“svn://xxx/project2”访问“C:\SVNProjects\Project2”下的Repository。至此,服务器端就配置完毕了。

    五.客户端的使用

   1.Checkout Repository
 
    首先要Checkout服务器端的Repository,所谓的Checkout就是指获得服务器端指定的Repository存储的所有文件。这个Checkout和Visual Source Safe的Checkout意义完全不一样,VSS的Checkout指的是锁定某个文件,如果你以前使用过VSS,在学习Subversion时这个问题一定要注意。Checkout的具体方式是:在客户端新建一个空目录,比如:F:\Project1
在该目录上单击右键,在弹出式菜单中选中SVN Checkout...,之后在“URL of Repository”文本框中填入你想要连接的Repository的地址,对于在本教程第二节建立的Repository,URL应该是“svn://xxx/project1” (xxx可以是服务器端主机名,也可以是服务器端的ip地址)。

   然后点OK,会弹出一个认证对话框,输入在教程第三节设置的用户名和密码。点OK后就完成了对Repository的Checkout。比如:在服务器端Repository中有一个a.txt文件,那么Checkout之后F:\Project1目录下也会出现一个a.txt文件。在本例中由于服务器端的Repository还未添加任何文件,所以在客户端的F:\Project1下没有文件被Checkout。执行Checkout除了会在F:\Project1产生Repository存储的文件及目录外,还会产生了一个“.svn”的隐含目录,该目录是由subversion管理的,不要删除或者手工改动其中的文件和目录。现在F:\Project1中的文件和目录就叫做Repository的“Working Copy”简写“WC”(这个简写...汗)。以后对Repository中文件和目录的修改,添加,删除的操作,都是通过对这个“Working Copy”的操作实现的。Checkout执行完后,会发现F:\Project1目录的图标的左下角附着了一个小的状态图标(当F:\Project1目录中的文件改变时,这个状态图标也会随之变化),它表示F:\Project1是一个Repository的“Working Copy”,F:\Project1内的所有文件和目录也会有类似的状态图标。

0
相关文章