svn external linux,linux中使用svn更新站点

1、安装

yum install subversion

2、创建、配置svn库

创建

mkdir -p /data/svn

svnadmin create /data/svn/web

配置

cd /data/svn/web/conf/

#vim authz

[groups]

users = user1,user2 ---组名 = 组成员

[/]

@users = rw ---users组在/下的权限

* =    ---匿名无权限

#vim passwd

[users]

user1 = 123456

user2 = 123456

#vim svnserve.conf

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

3、启动svn库

svnserve -d -r /data/svn/web

-d 以进程启动

-r不对用户报告svn在服务器的具体路径,只对客户端展示一个"/"

注:以上启动后默认侦听端口为3690;如果已经存在一个默认此方式启动的svn库,则可以加参数--listen-port=启动,如:

svnserve -d -r /data/svn/web/ --listen-port=3691

4、创建模拟站点文件

[root@localhost ~]# cd /

[root@localhost /]# mkdir web

[root@localhost /]# touch web/1.txt

5、在svn服务器中导入站点文件到svn库,比windows本地客户端导入速度要快……导入时自动过滤点.svn文件夹

[root@localhost /]# svn import /web file:///data/svn/web/

svn:  Could not use external editor to fetch log message; consider setting  the $SVN_EDITOR environment variable or using the --message (-m) or  --file (-F) options

svn: None of the environment variables  SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time  configuration option was found

解决方法(一):

[root@localhost /]# vim /etc/profile

添加变量

SVN_EDITOR=/usr/bin/vim ---which vim得到此路径

找到export行,在尾部添加SVN_EDITOR(记住变量中间一定要有空格)

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC SVN_EDITOR

修改生效:

[root@localhost /]# source /etc/profile

测试是否生效

[root@localhost /]# echo $SVN_EDITOR

/usr/bin/vim ---已经生效

解决方法(二):不推荐,这样每次操作都要加上--file参数,不方便

touch /var/log/svnlog

[root@localhost /]# svn import /web file:///data/svn/web/ --file  /var/log/svnlog

重新导入站点文件到svn库

[root@localhost /]# svn import /web file:///data/svn/web/

--This line, and those below, will be ignored--

A    .

:q ---退出

Log message unchanged or not specified

(a)bort, (c)ontinue, (e)dit:

c ---继续

Adding         /web/1.txt

Committed revision 1.

(导入成功)

6、配置hooks文件

[root@localhost /]# vim /data/svn/web/hooks/post-commit

#!/bin/bash

export LANG="en_US.UTF-8"

svn update /data/webroot/shop --username user1 --password 123456

保存退出

chmod 700/data/svn/web/hooks/post-commit

注:此时/etc/sysconfig/i18n中也是 LANG="en_US.UTF-8"

post-commit一定要加执行权限,否则会提示:

Warning: post-commit hook failed (exit code 255) with no output.

7、初始化shop站点(这个第一次必须svn checkout,相当于客户端checkout)

[root@localhost ~]# svn co file:///data/svn/web/ /data/webroot/shop --username user1 --password 123456

A    /data/webroot/shop/1.txt

Checked out revision 1.

8、客户端更新svn库。可以使用tortoisesvn,这里直接使用linux中的客户端测试

[root@localhost ~]# svn co svn://localhost  ---svn co file:///data/svn/web会产生web文件夹

A    web/1.txt

Checked out revision 1.

[root@localhost ~]# cd localhost/

[root@localhost localhost]# touch 2.txt

[root@localhost localhost]# svn add 2.txt

A         2.txt

[root@localhost localhost]# svn ci

--This line, and those below, will be ignored--

A    2.txt

Log message unchanged or not specified

(a)bort, (c)ontinue, (e)dit:

c

Adding         2.txt

Transmitting file data .

Committed revision 2.

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

附:svn co https://172.19.9.59:8443/svn/test.com/branches/20120903 ceshi --username master--password net

注:ceshi为导出后的目录

9、查看站点目录是否更新

[root@localhost localhost]# ll /data/webroot/shop/

total 20

-rw-r--r-- 1 root root 0 Jun  2 19:46 1.txt

-rw-r--r-- 1 root root 0 Jun  2 19:51 2.txt

(成功)

========================================================================================

附:

svn export 导出最后一个版本的文件,过滤掉.svn文件夹

svn export -r 导出指定版本的文件,过滤掉.svn文件夹

svn co -r checkout指定版本的工作拷贝

svn up -r 更新当前库文件到指定版本

checkout指定日期版本文件:

svn checkout -r {2006-02-17}

svn checkout -r {15:30}

svn checkout -r {15:30:00.200000}

svn checkout -r {"2006-02-17 15:30"}

svn checkout -r {"2006-02-17 15:30 +0230"}

svn checkout -r {2006-02-17T15:30}

svn checkout -r {2006-02-17T15:30Z}

svn checkout -r {2006-02-17T15:30-04:00}

svn checkout -r {20060217T1530}

svn checkout -r {20060217T1530Z}

svn checkout -r {20060217T1530-0500}

svn checkout url path --username username --password password

=========================解决svn co脚本提示不能转换为UTF-8的问题

vi svn.php

$aaa = shell_exec('/usr/bin/svn co https://124.133.88.88:880/svn/test.com/ /data/webroot/shopex');

echo $aaa;

?>

vi svn.sh

#!/bin/bash

/usr/local/php/bin/php -q /data/webroot/shopex/svn.php

crontab -e

* * * * * sh /svn.sh &>/var/log/svn.log

9、注意:如果想删除某个用户,不需要重启服务。

附:

1、启动和停止subversion

1.启动svn

# ./svnserve -d --listen-port 3690  -r /opt/svndata --log-file /opt/svndata/svn.log --pid-file /opt/svndata/svn.pid

-d以daemon方式运行

--listen-port监听端口号

-r指定目录

--log-file指定日志文件

--pid-file指定pid文件

这里需要注意一点的是,使用http协议访问,即http://ip/repos 等同于使用svn协议 svn://ip/的地址。

也就是说如果使用svn://ip/来访问,那么可以不必加上repos的这层路径。

如果使用http协议来访问,也不必执行上面这条命令

2.停止svn

# kill -9  `cat /opt/svndata/svn.pid`

2、客户端访问

1.Windows 下安装TortoiseSVN

2.Linux下#svn checkout svn://192.168.0.68:3690/game

八、备份svn存储库

#压缩备份

$sudo svnadmin dump /opt/svndata/game | gzip > /usr/local/src/svnback/game-backup.gz

#不压缩备份

$sudo svnadmin dump /opt/svndata/game > /usr/local/src/svnback/game-backup.svn

#做全备,并记录项目最新本版号:

DATE=`date +%Y%m%d-%T`

YOUNGEST=`svnlook youngest /opt/svndata/game`

echo "$YOUNGEST" > /usr/local/src/svnback/game.youngest

svnadmin dump $project > $BACKUPDIR/$project.dump

PREVYOUNGEST=`cat $BACKUPDIR/$project.youngest`

#获取项目最新的版本号,做增量备份:

NEWYOUNGEST=`svnlook youngest $project`

svnadmin dump /opt/svndata/game --revision $LASTYOUNGEST:$NEWYOUNGEST --incremental \

>/usr/local/src/svnback/game-$LASTYOUNGET-$NEWYOUNGEST.$DATE

echo "$NEWYOUNGEST" > $BACKUPDIR/$project.youngest

3、恢复svn存储库

#恢复的时候,先恢复全部备份,然后依次按照日期恢复增量备份即可。

#恢复时,svnadmin dump不能恢复原项目中conf目录下三个文件{authz  passwd  svnserve.conf},需要手动进行恢复;

#建立新的svn存储库

$sudo svnadmin create /opt/svndata/game

#确认成功与否

$sudo ls -l /opt/svndata/game

#导入存储库数据

#恢复全备

$sudo svnadmin load  /opt/svndata/game

#按日期顺序恢复增量备份

$sudo svnadmin load  /opt/svndata/game

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值