`

ubuntu下SVN服务器安装配置和钩子

 
阅读更多
一、SVN安装
1.安装包
1.$ sudo apt-get install subversion
2.创建项目目录
$ sudo mkdir /home/xiaozhe/svn
$ cd /home/xiaozhe/svn/
$ sudo mkdir mypro

3.创建svn文件仓库
$ sudo svnadmin create /home/xiaozhe/svn/mypro
 
4.导入项目到svn文件仓库 (可有可无)
$ sudo svn import -m "" 你的文件夹路径 file:///home/xiaozhe/svn/mypro
 
5.访问权限设置
修改 /home/xiaozhe/svn/mypro/conf目录下:
svnserve.conf 、passwd 个文件,行最前端不允许有空格

编辑svnserve.conf文件,把如下面行取消注释,并需要顶格
anon-access = read
auth-access = write

password-db = passwd


编辑passwd  如下:
[users]
andy = andy


6. 开启svnserve,以SVN根目录开启:
$ svnserve -d -r /home/xiaozhe/svn
 
7.检查是否正常启动
$ netstat -ntlp



、同步更新 [勾子]
同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。
知识点:
1、SVN的hooks
# start-commit 提交前触发事务
# pre-commit 提交完成前触发事务
# post-commit 提交完成时触发事务
# pre-revprop-change 版本属性修改前触发事务
# post-revprop-change 版本属性修改后触发事务
通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。

2、同步命令rsync的具体参数使用

3、具有基个语言的编程能力bash python perl都可以实现
post-commit脚本
编辑文件:sudo vim /home/xiaozhe/svn/mypro/hooks/post-commit
注意:编辑完成post-commit后,执行:sudo chmod 755 post-commit
内容:
#!/bin/sh
export LANG=zh_CN.UTF-8
sudo /usr/bin/svn update /var/www/myblog --username xiaozhe --password xiaozhe
 
或更加复杂的同步更新
#Set variable
SVN=/usr/bin/svn
WEB=/home/test_nokia/
RSYNC=/usr/bin/rsync
LOG=/tmp/rsync_test_nokia.log
WEBIP="192.168.0.23"
export LANG=en_US.UTF-8

#update the code from the SVN
$SVN update $WEB --username user --password  password
#If the previous command completed successfully, to continue the following
if [ $? == 0 ]
then
    echo ""     >> $LOG
    echo `date` >> $LOG
    echo "##############################" >> $LOG
    chown -R nobody:nobody /home/test_nokia/
    #Synchronization code from the SVN server to the WEB server, notes:by the key
    $RSYNC -vaztpH  --timeout=90   --exclude-from=/home/svn/exclude.list $WEB root@$WEBIP:/www/ >> $LOG
fi

以上是具体的post-commit程序
注意事项:
1、一定要定义变量,主要是用过的命令的路径。因为SVN的考虑的安全问题,没有调用系统变量,如果手动执行是没有问题,但SVN自动执行就会无法执行了。
2、SVN update 之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码如果只是手动一样会更新,但自动一样的不行。
3、加上了对前一个命令的判断,如果update的时候出了问题,程序没有退出的话还会继续同步代码到WEB服务器上,这样会造成代码有问题
4、记得要设置所属用户,因为rsync可以同步文件属性,而且我们的WEB服务器一般都不是root用户,用户不正确会造成WEB程序无法正常工作。
5、建议最好记录日志,出错的时候可以很快的排错
6、最后最关键的数据同步,rsync的相关参数一定要清楚,这个就不说了。注意几个场景:
这里的环境是SVN服务器与WEB服务器是开的
把SVN服务器定义为源服务器 WEB服务器为目的服务器
场景一、如果目的WEB服务器为综合的混杂的,像只有一个WEB静态资源,用户提交的,自动生成的都在WEB的一个目录下,建议不要用–delete这个参数
上面这个程序就是这样,实现的是源服务器到目的服务器的更新和添加,而没有删除操作,WEB服务器的内容会多于源SVN的服务器的
场景二、实现镜像,即目的WEB服务器与源SVN服务器一样的数据,SVN上任何变化WEB上一样的变化,就需要–delete参数
场景三、不需要同步某些子目录,可能有些目录是缓存的临时垃圾目录,或者是专用的图片目录(而不是样式或者排版的)要用exclude这个参数
注意:这个参数的使用不用写绝对路径,只要目录名称就行 aa代表文件 aa/ 代表目录 ,缺点就是如果有多个子目录都是一样的名称那么这些名称就都不会被同步
建议用–exclude-from=/home/svn/exclude.list 用文件的形式可以方便的添加和删除
exclude.list

.svn/
.DS_Store
images/

利用SVN的钩子还可以写出很多的程序来控制SVN 如代码提交前查看是否有写日志,是否有tab,有将换成空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。
分享到:
评论

相关推荐

    SVN的安装和配置 SVN的安装和配置

    通过以上步骤,你可以成功地安装和配置SVN服务器,让团队成员能够高效地协同开发。SVN的灵活性和强大的版本控制功能,使其成为软件开发过程中的必备工具。在实际使用中,根据团队需求进行定制和优化,确保SVN更好地...

    linux下svn安装笔记带钩子

    通过以上步骤,我们不仅完成了SVN在Linux环境下的安装和配置,还实现了简单的钩子功能。这有助于自动化一些常见的任务,比如自动更新Web服务器上的代码,提高开发效率的同时也减少了人为错误的可能性。希望本文能...

    SVN安装配置教程(带视频教程)

    **二、SVN服务器配置** 1. **创建仓库**: 使用`svnadmin create`命令创建一个SVN仓库,例如`svnadmin create /path/to/repo`。 2. **配置权限**: 编辑仓库目录下的`conf`文件夹中的`authz`和`passwd`文件,设定用户...

    svn服务器和客户端安装包以及配置

    本教程将详细介绍如何安装SVN服务器和客户端,并进行配置。 1. SVN服务器安装与配置: - **安装**:首先,你需要在服务器上安装SVN服务端软件。对于Linux系统,通常使用`apt-get`或`yum`命令来安装Subversion,...

    SVN安装配置及使用说明

    1. **钩子脚本**: SVN支持预定义的服务器端钩子脚本,如pre-commit和post-commit,用于执行自动化的任务,如代码格式检查或构建。 2. **忽略文件**: 可以在`.svnignore`文件中列出不想纳入版本控制的文件模式。 3....

    svn的安装和使用配置.zip

    ### 二、SVN服务器配置 1. **Apache服务器**:如果你有Apache服务器,可以使用`mod_dav_svn`模块来配置SVN服务。首先安装模块,然后编辑`httpd.conf`配置文件,添加SVN相关的配置段落,定义仓库路径和访问权限。 2...

    如何架一个svn服务器

    4. **钩子脚本**:自定义SVN服务器的预提交和后提交操作,如自动编译、发送通知邮件等。 以上就是建立SVN服务器的基本流程。通过这个过程,您可以为团队提供一个安全、高效的代码版本控制环境,从而促进协同开发。...

    linux下svn配置说明

    在Linux环境下,Subversion(简称SVN)是一个广泛使用的版本控制系统,用于管理源代码和其他文本文件的...记住,根据实际需求,可能还需要调整Apache配置、防火墙规则以及SVN的其他高级特性,如钩子脚本和分支管理。

    svn的安装与使用带截图

    在本教程中,我们将详细介绍SVN的安装与使用,以帮助你更好地理解和应用这一强大的工具。 **一、SVN安装** 1. **Windows系统安装**:你可以通过访问Apache官方网站下载最新版的TortoiseSVN,这是一个带有图形界面...

    SVN安装及使用教程

    首先,你需要一个SVN服务器来存储项目文件。可以使用Apache HTTP Server(通过mod_dav_svn模块)或Subversion自己的svnserve服务。以svnserve为例,安装后执行`svnadmin create /path/to/repo`命令创建仓库。 2. *...

    svn安装文件

    SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于...总之,SVN是版本控制的重要工具,理解和掌握其安装与配置能帮助开发者更好地管理项目,提高团队协作效率。希望本文提供的指南对你的SVN使用有所帮助。

    linux 安装SVN

    接下来,我们可能还需要配置SVN服务器。通常,我们会选择Apache HTTP Server(httpd)作为SVN的前端服务器,因为它提供了良好的安全性和性能。安装Apache和必要的模块: ```bash sudo apt install apache2 sudo apt...

    SVN 安装手册

    ### 三、SVN服务器配置 1. **创建仓库**: 使用`svnadmin`工具创建一个新的SVN仓库,例如: - `svnadmin create /path/to/repo` 2. **配置权限**: 通过编辑仓库目录下的`conf`文件,可以设置用户和组的访问权限。`...

    svn.pdf.tar.gz_linux svn

    本笔记主要针对Linux环境下如何安装、配置及使用SVN进行详细介绍,旨在帮助用户在Linux系统上顺利搭建SVN服务器并进行日常的代码管理。 ### 1. SVN简介 SVN是Apache软件基金会的一个项目,用于管理文件和目录版本...

    svn安装及详解

    在Windows上安装SVN,通常选择VisualSVN Server,这是一个易于使用的服务器端解决方案。首先,访问VisualSVN官网下载最新版本的安装包,按照安装向导进行安装。安装过程中,记得勾选“创建VisualSVN Server服务”...

    SVN笔记学习

    - **钩子脚本(Hooks)**: SVN服务器可以配置钩子脚本来自动化执行一些操作,如提交前的检查或自动构建。 通过以上内容的学习,你将能够熟练地在Linux环境中搭建和管理SVN服务器,使用Eclipse进行开发中的版本控制...

    SVN安装包及使用方法

    4. **权限管理**:通过SVN服务器配置,可以对用户和组设置访问权限,控制谁可以读取、写入或执行仓库中的文件。 5. **钩子脚本**:SVN仓库支持钩子脚本,可以在特定事件(如提交)发生时自动执行脚本,实现自动化...

    linux第十三刀_Linux上安装Subversion

    4. **配置SVN服务器** 如果你使用Apache HTTP服务器,编辑`httpd.conf`或`sites-available`中的配置文件,启用`mod_dav_svn`模块并配置仓库路径: ```apache LoadModule dav_svn_module modules/mod_dav_svn.so ...

    git代码服务器搭建步骤.pdf

    搭建SVN服务器需要安装Subversion软件,并配置SVN服务器以存储和管理代码库。 - **Repo** 是由Google开发的用于管理Gerrit代码评审工具的仓库的工具。搭建Repo服务器需要首先下载repo工具,并配置以支持多仓库管理。...

Global site tag (gtag.js) - Google Analytics