centos7 安装svn并且同步代码

原文链接: https://www.cnblogs.com/TzSteady/p/8084941.html

1.使用svn命令创建资源库(这只是一个资源库,代码并不是放在这个目录)

[runoob@centos6 ~]# svnadmin create /opt/svn/runoob01
[runoob@centos6 ~]# ll /opt/svn/runoob01/
total 24
drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 conf
drwxr-sr-x 6 root root 4096 2016/08/23 16:31:06 db
-r--r--r-- 1 root root    2 2016/08/23 16:31:06 format
drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 hooks
drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 locks
-rw-r--r-- 1 root root  229 2016/08/23 16:31:06 README.txt

进入/opt/svn/runoob01/conf目录 修改默认配置文件配置,包括svnserve.conf、passwd、authz 配置相关用户和权限。

1、svn服务配置文件svnserve.conf

svn服务配置文件为版本库目录中的文件conf/svnserve.conf。该文件仅由一个[general]配置段组成。

(刚开始以为需要改password-db和uthz-db的路径,因为/home/svn/passwd我觉得没有这个目录,后来发现不需要更改,保持不变就行了)

[general]
anon-access = none
auth-access = write
password-db = /home/svn/passwd
authz-db = /home/svn/authz
realm = tiku 
  • anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:read

  • auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:write

  • authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 默认值:authz

  • realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

2、用户名口令文件passwd

用户名口令文件由svnserve.conf的配置项password-db指定,默认为conf目录中的passwd。该文件仅由一个[users]配置段组成。

[users]配置段的配置行格式如下:

<用户名> = <口令>
[users]
admin = admin
thinker = 123456

3、权限配置文件

权限配置文件由svnserve.conf的配置项authz-db指定,默认为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。

[groups]配置段中配置行格式如下:

<用户组> = <用户列表>

版本库路径权限段的段名格式如下:

[<版本库名>:<路径>] 
[groups]
g_admin = admin,thinker

[admintools:/]
@g_admin = rw
* =

[test:/home/thinker]
thinker = rw
* = r

本例是使用svnserve -d -r /opt/svn 以多库svnserve方式启动SVN,所以URL:svn://192.168.0.1/runoob01

到此版本库就建立好了,但是在widows目录下面拉代码下来总是报错:autho...faild。然后把上面的group换成

g_admin = admin,thinker
[/]
@g_admin = rw
* =
连接成功了

    其中,方框号内部分可以有多种写法:

     /,表示根目录(仓储目录)及以下。根目录是svnserve启动时指定的,我们指定/opt/runoob01

。这样,/就是表示对全部版本库设置权限。

     权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

连接成功后,我在windows上面提交了一个test.txt文件,发现在centos上面找不到这个文件在哪里,

然后就来到同步代码这块

  4.使用post-commit 实现同步代码

  代码同步需要使用到hooks文件目录下的post-commit勾子文件,在hooks下很多tmpl文件,这些文件都是勾子的模板来的,
  如果需要使用的时候copy 一份去掉.tmpl后缀便可使用

  (1)生成一个新的有效的勾子文件post-commit

cp post-commit.tmpl post-commit
chmod 777 post-commit //设置post-commit 文件的权限 切记这步一定不可漏,不然后期运行时会报错

  这样就会生成一个有效的post-commit 文件

  (2)同步代码操作

#!/bin/sh
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin/svn
WEB_PATH=/data/wwwroot/default    //test目录就行你的项目的目录
$SVN_PATH update $WEB_PATH --username admin --password admin    //切记--username --password 是两个-

  (3)进入服务器目录,将项目checkout 出来

svn co svn://ip地址/runoob01/  /data/wwwroot/default --username admin --password admin

 这样子你的代码同步功能已经实现了(检出过之后不用--username user1 --password admin也可以)

    svn co svn://ip地址/runoob01/ 的解释https://blog.csdn.net/weixin_38890593/article/details/82491759

    

5.客户端使用

  你只需下载个 tortoiseSVN 小乌龟然后将test仓库拉取下来,然后将代码放入仓库文件夹中,通过添加文件方式add 后再commit ,你的项目就会同步到服务器中

 

你可能感兴趣的:(centos7 安装svn并且同步代码)