CentOS 搭建SVN
检测是否有svn 环境
使用svn --version
(svn -v版本查看) 检查是否安装了svn,
如果未安装 使用命令yum install subversion
进行安装。
新建svn 项目
安装成功之后选择一个文件夹统一管理svn项目。
可以在 home
下新建文件夹svndata
。
新建svn项目,命令:svnadmin create [项目名]
,成功之后在svndata 文件夹下面会有[项目名]
的文件夹。
如下图:
对文件进行设置
对conf/authz 进行编辑
对conf/passwd进行编辑
对conf/svnserver.conf 进行编辑
该文件仅由一个[general]
配置段组成
[general]
配置段中配置行格式如下:
<配置项> = <值>
- 配置项分为以下5项:
-
anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:read -
auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、“read"和"none”。
即"write"为可读可写,"read"为只读,"none"表示无访问权限。
缺省值:write -
password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:passwd -
authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
缺省值:authz -
realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
缺省值:一个UUID(Universal Unique IDentifier,全局唯一标识)。
- svn服务配置文件conf/svnserve.conf的内容如下:
anon-access = none auth-access = write password-db = passwd authz-db = authz realm = test #可使用项目名做标识
打开注释之后注意需顶格书写
至此,svn版本库部署好了。可使用svn://+[IP/域名]+[项目名]
在文件夹下检出。
注意:使用域名进行svn 检出已知的问题,当你的网站进行了cdn加速,这会导致svn 找不到你配置的svn版本库
配置钩子
如果在服务上需同步一份代码用于展示,这时将用到钩子
进入hocks
目录、复制一份post-commit.tmpl并将其名字命名为post-commit 、设置权限为777。
对post-commit文件进行编辑
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn up /data/wwwroot/test --username zzane --password yourpwd.
【说明】当客户端有文件进行提交时,将会触发post-commit 文件里面的代码。既 上面的svn up ……
这段代码。
svn重启命令
关闭命令:
killall svnserve
重启命令:
svnserve -d -r /home/svndata/ #对应的svn版本库的目录
查看进程命令:
ps -ef|grep svnserve
版本库导入
有时候在服务器上有了项目的代码,这时我们就需要将代码导入到svn 的版本控制中。
svn import /data/wwwroot/test/app/ file:///data/svndata/test/app -m "initial import"
(需导入的文件位置) (版本库位置) (添加注释)
Linux 检出
注:如果没有进行检出步操作,钩子就没有用。
svn co --username zzane --password yourpwd. svn://192...174/test/app /home/wwwroot/test/app/
其他
在linux 服务器上改了代码导致与svn 版本库里面不同,可使用 svn revert [文件名]
,取消更改还原至修改前的版本