svn版本管理工具的安装及使用

一、实验环境VMware 10、RedHat5.6

1、服务器端:Redhat 5.6

subversion                             i386                      1.6.11-7.el5              
subversion-devel                       i386                      1.6.11-7.el5              
subversion-javahl                      i386                      1.6.11-7.el5            
subversion-perl                        i386                      1.6.11-7.el5             
subversion-ruby                        i386                      1.6.11-7.el5

2、客户端:window 7

   TortoiseSVN-1.8.7.25475-x64-svn-1.8.9

二、svn服务部署

1、安装svn服务

# yum install subversion*

[root@master svndata]# svn
svn            svnadmin       svndumpfilter  svnlook        svnserve       svnsync        svnversion

简单介绍一下每个工具的使用:

svn:svn客户端命令

[root@master ~]# svn -?
# 获得svn更多帮助,一下命令类似

svnadmin:用于svn的监控和修复

svndumpfilter:迁移备份

svnlook:显示版本库的各种信息,不对svn版本库做任何修改

svnserve:用户启动svn服务

svnsync:实现的是版本库的远程自动备份,将版本库备份到另一台机器上。当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性

svnversion:总结工作拷贝的本地修订版本

2、创建版本库目录

mkdir -p /svn/app1/svndata/repos

3、建立svn版本库

svnadmin create /svn/app1/svndata/repos

执行此命令后svn自动在repos目录下添加必须的配置文件

4、修改版本库配置文件参数

(1)、vim /svn/app1/svndata/repos/conf/svnserve.conf 
各参数功能在配置文件的注释中有说明, 此处配置如下:
   [general] 
   anon-access =none      # 使非授权用户无法访问 
   auth-access = write    # 使授权用户有写权限 
   password-db = passwd   # 指明密码文件路径 
   authz-db = authz       # 访问控制文件
   realm = /svn/app1/svndata/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。 
   其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错. 指令简介:这是svn配置文件的格式,请按照以上格式书写。


(2)、配置用户认证信息
vim /svn/app1/svndata/repos/conf/passwd 
输入以下内容: 
    [users] 
       <用户1> = <密码1> admin = admin
       <用户2> = <密码2> username2 = password2
       可以添加多个,此为用户名密码对
       
(3)、配置权限信息
vim /svn/app1/svndata/repos/conf/authz

说明:  [groups]
  创建有2个用户组, 分别是harry_and_sally与harry_sally_and_joe
  等号右边分别是该组下的成员帐号
 
  [/foo/bar]  项目路径
  harry=rw     harry用户具有/foo/bar项目路径的读写权限
  &joe=r        &joe用户具有读权限
  *=             任何用户都没有权限读与写
 
 [repository:/baz/fuz] 版本库repository中的 项目路径/baz/fuz
  @harry_and_sally=rw    harry_and_sally用户组下的用户有读写权限
  *=r                       所有帐号都有读权限
  指令简介:此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问。还可以对用户分   组,具体请参考svn手册,以下是简单例子:
    用户组格式:
    [groups]
    <用户组名> = <用户1>,<用户2>
    其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
    例如:
    [repository:/]
    版本库目录格式:
    [<版本库>:/项目/目录]
    @<用户组名> = <权限>
    <用户名> = <权限>
    其中,方框号内部分可以有多种写法:
    /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定/opt/svndata。这样,/就是表示对全部版本库设置权限。
    repos1:/,表示对版本库1设置权限
    repos2:/abc, ,表示对版本库2中的abc项目设置权限
    repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限
    权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
 
    例1:
   [groups]
    admins = admin,user1,user2

    [/]
    @admins = rw
    user3 = rw
    user4 = r
    * =
    [repos:/]
    @admins = rw
    * = rw     
    注意:配置auth 、passwd和svnserve.conf一定要心细,否则客户端访问时会认证失败,如不能访问,百度和谷歌上有很多资料可供参考。配置完成,接下来该启动 
     svn喽:svn默认端口是3690

5、启动svn服务

[root@master ~]# svnserve -d -r  /svn/app1/svndata/repos/ --listen-host 192.168.80.128

6、Linux下svn的简单使用

(1)、svn 创建本地工作副本

[root@master ~]# svn checkout svn://192.168.80.128
认证领域: <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507
“root”的密码: 
认证领域: <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507
用户名: user1
“user1”的密码: 

-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

   <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A    192.168.80.128/rsync-3.1.0.tar.gz
A    192.168.80.128/123.docx
A    192.168.80.128/webbench-1.5.tar.gz
A    192.168.80.128/xshell4.exe
A    192.168.80.128/nginx-1.1.6.tar.gz
A    192.168.80.128/nginx-1.7.1.tar.gz
A    192.168.80.128/nginx-1.4.7.tar.gz
取出版本 5。

(2)、向svn服务器中提交文件

[root@master ~]# mv anaconda-ks.cfg 192.168.80.128/
[root@master ~]# cd 192.168.80.128/
[root@master 192.168.80.128]# svn add anaconda-ks.cfg 
A         anaconda-ks.cfg
[root@master 192.168.80.128]# svn commit -m --fore-log anaconda-ks.cfg 
增加           anaconda-ks.cfg
传输文件数据.
提交后的版本为 6。

(3)、在svn中创建新的目录并纳入版本控制下

[root@master 192.168.80.128]# svn mkdir rsync
A         rsync
[root@master 192.168.80.128]# svn mkdir -m "mkdir rsync dir" svn://192.168.80.128/rsync

提交后的版本为 7。

(4)、查看文件和目录状态

[root@master 192.168.80.128]# svn status rsync/
A       rsync
?       rsync/rsync-3.1.0.tar.gz

 ?:不在svn的控制中
 M:内容被修改
 C:发生冲突
 A:预定加入到版本库
 K:被锁定
 [root@master 192.168.80.128]# svn status -v rsync/
A                0       ?   ?           rsync
?                                        rsync/rsync-3.1.0.tar.gz
第一列保持相同
第二列显示工作版本号,
第三和第四列显示最后一次修改的版本号和修改人 
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

7、window安装使用svn客户端

wKioL1OyXWazy4Y7AAGgv9pxJ-w558.jpg

wKioL1OyXWXyv2YjAAGQWTozK6w034.jpg

wKiom1OyXZSAW_3dAAFIUR4nV1Q499.jpg

wKioL1OyYMjSzjxtAAEd_BjFWFM322.jpg

wKiom1OyYPfRVigRAAJv4lhpVbA710.jpg

wKioL1OyYMjxMxcqAAE14Fjrxr4380.jpg

wKiom1OyYPexTGTMAANS2Lqh0_s200.jpg