一、SVN工作原理
SVN(SubVersion)的基本工作思路是这样的:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序,由源代码库管理员统一管理这些源程序。
每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地(Checkout),然后用户可以在本地任意修改,最后用svn命令进行提交(Commit),由svn源代码库统一管理修改。如下图:
- SVN服务器:运行SubVersion服务的计算机,SubVersion支持Linux和Windows,更多的是安装在Linux下。SVN提供服务有两种方式(运行方式):独立服务器和借助Apache服务器,分别使用SVN协议和Http协议。
- SVN客户端:用户通过SVN客户端同SVN服务器打交道,SVN客户端分为命令行工具和图形化工具。最流行的客户端是TortoiseSVN。也可以在Eclipse中使用SVN插件。
二、SubVersion的使用
可以在http://subversion.apache.org/packages.html下载SVN并安装(本文使用windows版本,过程不多说)。在SVN中集成了服务器端和客户端组件:
- 服务器组件(管理员用):svnadmin、svnserve
- 客户端组件(程序员用):svn
这些组件命令都位于SubVersion安装目录下的bin目录下。
友情提示:安装完SVN后,通过”svnadmin –version”验证是否安装成功。如果出现错误“svnadmin不是内部或外部命令”,则需要手动将SVN的bin目录加入到path环境变量下。
1、创建SVN仓库
1)先创建一个目录:E:\svnrepo\repoDemo1。后面就使用该目录作为SVN仓库。
2)创建仓库:svnadmin create E:\svnrepo\repoDemo1。创建仓库后的目录结构如下:
3)启动SVN服务:svnserve -d -r E:\svnrepo\repoDemo1,如下图:
这样就启动了repoDemo1这个仓库的服务(单仓库),如果在svnrepo目录下还有其他仓库,且要同时启动多个仓库,执行svnserve -d -r E:\svnrepo即可(多仓库)。
一般情况下,访问SVN仓库的URL格式形如:svn://192.168.1.6/repoDemo1,但如果启动的是单仓库,则URL直接用:svn://192.168.1.6表示。svn协议的默认端口号为3690。
小技巧:如果需要频繁使用该仓库,则可将该SVN服务注册成windows服务,这样在计算机开机时就可以启动该服务。如下图:
删除该windows服务:sc delete svnService。
2、SVN客户端操作(命令行)
重点:checkout(检出)、commit(提交)、update(更新)
1)在E盘下建立user1、user2两个目录,模拟两个协同工作的用户的workspace。
2)检出:第一次和SVN服务器交互时,需要使用checkout将仓库检出到本地。
说明:检出一次,就建立了与SVN仓库的连接。
3)提交:commit
在user1目录下新建Demo1.java文件,将该文件提交到SVN仓库。下图演示了三种典型的错误提交。
4)更新:update
切换到user2的工作空间(user2目录下),user2第一次使用SVN仓库,需要检出。user2修改Demo1.java后提交。切换到user1目录,更新(update)。
5)删除与恢复:delete、revert
说明:如果delete后,提交到服务器(commit),则服务器上的数据也被删除了(慎用)。