SVN(subversion)详解

 

SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们可以把任意一个时间点档案恢复到想要的某一个旧版本,当然也可以直接浏览指定文件的更新历史记录。

 

  • SVN服务搭建
# yum install subversion -y
# svnserve --version      //查看版本

 

  • 创建仓库目录repo
# mkdir -p /opt/svn/repo/               //创建目录
# svnadmin create /opt/svn/repo/  //创建新仓库
# ls !$                   //查看上一次使用的路径

 

  • 调整SVN参数
# vim /opt/svn/repo/conf/svnserve.conf           //注意:下行的配置项前不能有空格与注释符
anon-access = none                                         //匿名用户没有任何权限  
auth-access = write                                           //认证用户具有写权限
password-db = /opt/svn/repo/conf/passwd        //用户密码文件
authz-db = /opt/svn/repo/conf/authz                  //用户信息文件

 

  • **启动和关闭SVN服务
# svnserve -d -r /opt/svn/repo/                //关闭通过kill pid 或者pkill svnserve
# netstat -tunlp | grep svnserve

 

  • 为PHP程序员创建账户
# vim /opt/svn/repo/conf/passwd     //创建账户密码
[users]
zhangsan = abc123
sysadmin = abc123
 
# vim /opt/svn/repo/conf/authz      //创建权限文件
[/]                                       //根目录   下面写入账户及权限(r读  w写)
zhangsan = r
sysadmin = rw
[/webphp]
sysadmin = r
zhangsan = rw
 
# mkdir /opt/svn/repo/webphp
# svn import webphp/ file:///opt/svn/repo/webphp -m "初始化SVN目录"     //导入webphp

 

基本操作说明:

  1. check out 检出获得文件后,检出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。(对于导入到服务器中的数据,需要检出才能形成一个受svn控制的工作拷贝,才可以进行 add update commit 等操作)   2. export 简单导出一个版本的数据(把服务器中的数据导出来,相当于复制一份),导出的文件脱离SVN版本控制(导出的就是一个文件,与svn版本没关系),导出后也无法进行Update和Commit操作。导出文件夹下没有.svn目录   3. import 仅仅是把文件导入到svn服务器中,而这个文件本身还只是一个普通的文件,与svn版本库没有关系(导入时需要svn服务器的地址,可以从服务器复制下来,在Repositories下的版本库右击复制)   4. add 把新创建的文件添加到缓存区(执行后显示一个加号),需commit提交才能真正上传到服务器(显示对号)   5. update 把服务器上最新的版本更新下来,比如别人上传的版本(一般提交之前需先更新,否则别人上传的新版本你没有更新下来就会被覆盖,别人上传的就丢失了)