svn的安装和使用

svn的安装和使用


svn(subversion):版本管理工具

   svn的配置方法有两种:第一种是配置独立的svn服务;第二种是svn借助apache配置svn服务。我采用的是第一种,配置独立的svn服务


注意:

①svn的账号不是linux的系统账号,我们只需要在配置文件里进行相应的配置即可

②svn:建议:一个项目使用一个仓库(可以在一个仓库内保存多个项目,也可以一个仓库保存一个项目而使用多个仓库。我个人比较喜欢第二种,因为 SVN 的每次commit都会导致整个仓库版本号增加一个,如果使用一个仓库内保存多个项目,commit后会使得多个项目的版本号出现断层)

③svn修改配置文件后不需要重新启动服务

④svn重启服务的方法:ps -ef | grep svn 找到svn的进程号----->kill -9 进程号----->svnserve -d -r /opt/data  (-d:指放在后台运行  -r:指定仓库目录)




安装:

①yum -y install subversion  

②创建仓库目录:mkdir -p /opt/data

③创建仓库:(创建三个仓库svn1  svn2   svn3)(仓库名svn1

          svnadmin create /opt/data/svn1

          svnadmin create /opt/data/svn2

          svnadmin create /opt/data/svn3

          执行后会在/opt/data/目录下自动生成svn1  svn2  svn3三个目录,每个目录下面都有相应的配置文件,如:

            wKiom1Uc_BGQYkuFAACrBHSDMTI607.jpg


④配置相关配置文件:

    先配置仓库svn1

         cd /opt/data/svn1/conf

         wKiom1Uc_ObSSvkRAACoWJ9de5Q044.jpg 

         该目录下有三个比较重要的文件:authz  passwd  svnserve.conf

         svnserve.conf:主配置文件

         passwd :密码与账户相关

         authz:仓库的权限相关


         注意:文件中的每一行都必须要定格

        

         cat /opt/data/svn1/conf/svnserve.conf

         

         [general] 

         anon-access = none#未鉴定的用户无权限访问该仓库(有none read  write三种)

         auth-access = write#鉴定后的可读写仓库 

         password-db = passwd #使用的密码文件是同级路径的passwd文件,即是/opt/data/svn1/conf/passwd  

         authz-db = authz#使用的权限控制文件是同级路径的authz文件,即是/opt/data/svn1/conf/authz

         realm = svn1#realm 指定版本库的仓库名,即在登录时提示的仓库名称。各个项目的仓库名都可以自定义


 

         cat /opt/data/svn1/conf/passwd(指定账户和密码,格式:账户 = 密码)

         

         [users]

         # harry = harryssecret

         # sally = sallyssecret

         user1 = scj

         user2 = scj

         user3 = scj

         user4 = scj


          cat /opt/data/svn1/conf/authz

          [aliases]

          # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average


          [groups]

          # harry_and_sally = harry,sally

          # harry_sally_and_joe = harry,sally,&joe

          usergroup = user1,user2  (定义一个组usergroup ,后面多个用户之间用逗号隔开


          # [/foo/bar]

          # harry = rw

          # &joe = r

          # * =


          # [repository:/baz/fuz]

          # @harry_and_sally = rw

          # * = r

          [svn1:/]      (仓库名:/

          @usergroup = rw(组前用@,这个组有读写的权限

          user3 = rw 

          user4 = r

          * =(其他账号没有任何权限


一个实例如图:

        wKioL1UeL0zh0OJPAAEJNGbKxV4304.jpg

注意:上图中画圈的两部分可以合并为:(此种方式最常用

        [/]

        @yunying = rw

        * =




附加:

##在svn1库里创建一个test目录,有一个用户user11,只对这个test目录有权限,对svn1库没有权限
[/test]
user11 = rw




    再配置svn2和svn3仓库

       cp -a /opt/data/svn1/conf/* /opt/data/svn2/conf/

       cp -a /opt/data/svn1/conf/* /opt/data/svn3/conf/

       分别修改svnserve.conf文件里的realm = svn1参数

               passwd文件里的账号和密码

               authz 文件里的[svn1:/]这个标签


⑤启动服务:

       svnserve -d -r /opt/data  (-d:指放在后台运行  -r:指定仓库目录,data/目录下有三个仓库svn1 svn2 svn3

 wKiom1UdB4fganDzAACVHqEX97A109.jpg

       查看服务是否启动,监听的端口为3690


注意:创建一个新的仓库,不需要重新启动服务







windows客户端的使用:

windows客户端需要安装TortoiseSVN软件

使用步骤:

在windows的 D:\jeff\测试 目录下创建一个目录svn1,如:

wKioL1UdDKGRb-ZkAAExpyGvZJI435.jpg


右击该目录svn1:

wKiom1UdDDOAuXvsAAB-HbQBxQ8590.jpg

如图:点击 SVN Checkout,跳出如下窗口:

wKiom1UdDJuDnQ6UAAGANrKhpdM080.jpg


输入URL地址(红圈中的),点击ok,跳出如下窗口:

wKioL1UdDnLT88YCAADkCbzhBcA807.jpg


输入账号和密码(如:上面配置的账号user1  密码scj)

点击ok,跳出如下窗口:

wKioL1UdDvDAZDZOAADuNSyXDQM400.jpg


如图:没有红色表示成功



在svn1目录下创建新的文件和目录,提交到服务端:


进入到svn1目录里(该目录下默认会有一个.svn的目录)

新建一个新的文件file2,如图:

wKiom1UdDvmAKIfKAACO2uQybQg708.jpg

右击该文件,找到TortoiseSVN选项,里面有一个add选项,点击add选项

然后该文件会有一个感叹号,如图:

wKioL1UdENvBkcLGAACKKjfpoH0426.jpg


继续右击该file2文件,找到SVN Commit选项,点击该选项进行提交,跳出如下图:

wKioL1UdEWeDic84AAJMQn8bZX0801.jpg


点击ok即可,之后跳出如图:

wKioL1UdEa2j3JknAADWnUcDrew683.jpg

没有红色表示成功






附加:

svn服务端的仓库/opt/data/svn1/里存储的文件是以FSFS这种格式存储的(可以通过 cat /opt/data/sheji/db/fs-type  查看),我们无法查看源码文件

不过每次客户端提交新代码的时候都会在/opt/data/svn1/db/revs/0这个目录下面生成一个新的文件,这个文件是以数字命令的,即代表着软件的版本号,如图:

wKiom1UdEf-CKsVfAAB-kKMEBFo946.jpg

如图,此时这个软件的版本为4


同时我们可以cat查看这个文件的内容,里面记录了客户端所进行的操作,如:

wKioL1UdE7Oge3qzAAGs09rMg78823.jpg

表示客户端新创建并提交了一个dir2的目录


目录结构:

wKioL1UeNMejPYEJAALYvG72Hx0278.jpg

进入project目录,在project目录下面创建仓库project1(svnadmin create project1)---->修改相应的配置文件---->客户端访问的时候访问 svn://ip/project/project1(因为project1是仓库,而project不是仓库,所以访问svn://ip/project是不成功的)






停止命令:

killall svnserve





实际测试:

各个组成员只能访问自己的项目,无权限查看别人的项目

只有管理员才能查看所有项目工程














你可能感兴趣的:(SVN)