SVN加入现有项目 + 钩子脚本自动同步到WEB

SVN版本控制 + 钩子脚本自动同步到WEB

 

一、安装和配置版本库

 

1.安装subversion

 SVN# yum -y install subversion

 

2.创建版本库

 SVN# mkdir -p /var/svn/svnrepos

 SVN# svnadmin create /var/svn/svnrepos

 

            //创建版本库后有以下目录

assest  conf  db  format  hooks  locks  README.txt 

     

            //conf目录下的文件

            authz 权限控制文件

            passwd 帐号密码文件

            svnserve.conf SVN服务配置文件

 

3.配置版本库

 SVN#cd /var/svn/svnrepos/conf                         

 

1)设置帐号密码  

 SVN# vim passwd

 admin = admin456 

 zhangsan = 123456

 lisiuser = 654321

 在[users]块中添加用户和密码,格式:帐号 = 密码,如zhangsan = 123456

 直接在文件后面添加就可以了

 

 

 

2)设置权限  

 SVN# vim authz

     在末尾添加如下代码:

 

[/]  

admin = rw

zhangsan = rw  

//给zhangsan用户根的权限可读写

  

[/html] 

lisiuser = rw 

 //给lisiuser用户授权根下的html目录授权rw。

 

 

     如果用户太多可以用*代替用户名

* = rw   

//给所有的用户授权

 

3)修改svnserve.conf文件

 SVN# vim svnserve.conf

   去掉下面的几个注释:

   anon-access = none   #(置为 anon-access = none,这样的话  SHOW LOG 才能看到历史版本)

   auth-access = write  #授权用户可写

   password-db = passwd #账号配置文件

   authz-db = authz     #权限配置文件

   realm = /var/svn/svnrepos # 认证空间名,版本库所在目录。

   

 ---------

   如果有多个版本库

   svnadmin create /var/svn/svnrepos1

   svnadmin create /var/svn/svnrepos2

   svnadmin create /var/svn/svnrepos3

   配置是独立的,用户名和密码和权限也是独立的。

  

4.启动svn

  SVN# svnserve -d -r /var/svn    

   这样三个版本库了启动了,

   对应的URL: 

            svn://IP/svnrepos1

            svn://IP/svnrepos2

          svn://IP/svnrepos3 

 

  SVN默认端口是3690,启动时可以指定监听端口。

  svnserve -d -r /var/svn --listen-port 1964    

  

5.检查SVN是否启动和监听端口 

  SVN# netstat  -anput | grep svn 

tcp  0  0  0.0.0.0:3690   0.0.0.0:*   LISTEN   7838/svnserve

 

SVN 配置完成, 

————————————————

 

二、将现有项目文件加入SVN版本控制

 

 因为项目已经在线上运行了,所以得先把运行中的文件导入到版本库,形成第一个版本。

  我的项目在/data/www/目录 

 

 

 

1.把svn版本库中的空目录检出到www目录

 

#svn --username admin --password admin456 checkout svn://192.168.1.100/svnrepos /data/www/  --no-auth-cache

 

2.把当前目录下的所有文件添加进版本库,

 

#svn --username admin --password admin456 add ./* --no-auth-cache

 

3.把当前目录下的所有文件添提交到版本库,

 

#svn --username admin --password admin456 commit ./* -m 'test' --no-auth-cache

 

 

注意:

    如果后期添加新文件

在/data/www/目录下查询svn控制状态

#svn status 

 

带问号 ? 的文件和目录是没有加入到版本库中

使用 add 添加

 

带问号 A  的文件和目录是已经加入到版本库,但是还没有提交到版本库。

使用 commit 提交

 

加入版本库后,会出现.svn 的隐藏文件

.svn文件是subversion的版本控制信息文件

当某个目录处于subversion的版本控制时,在这个目录中就会.svn这个文件夹,

这个.svn文件夹中的文件就是一些版本信息文件,供subversion使用,一般不要人为去改这些文件。

————————————————

 

三、钩子脚本自动同步到WEB

 

1.创建钩子脚本,同步数据到Web目录

在项目的目录下 /var/svn/svnrepos/test1/hooks/ 

创建一个文件  post-commit  

#vim  /var/svn/svnrepos/test1/hooks/post-commit 

#!/bin/sh
#SVN钩子脚本
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8

/usr/bin/svn update --username admin --password admin456 /data/www/ --no-auth-cache
#/usr/bin/svn --username admin --password admin456 checkout svn://192.168.1.100/svnrepos /data/www/ --no-auth-cache

 

注意文件要+X 权限

chmod +x /var/svn/svnrepos/test1/hooks/post-commit

 

脚本说明:

 User是用户名 ,Pass是密码。

 co checkout的简写,是svn的命令参数

 Svn_Url  服务器URL地址 ,svnrepos是创建的项目。

 Web_Dir 是我的网站目录(就是数据提交后会自动同步到此目录)

 --no-auth-cache (一定要加,不然会报错)忽略密码提示安全。

 

-------------------------------------------------

防火墙允许3690端口

iptables -A INPUT -p TCP --dport 3690 -j ACCEPT

 

Windows客户端工具推荐

  TortoiseSVN 

官网下载地址

https://tortoisesvn.net/downloads.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值