ubuntu的Linux安装svn并部署项目,同时实现项目同步更新(本地提交commit,项目目录自动更新)

第一步:我们先安装svn

ubuntu下的linux输入以下命令(温馨提示:下面的所有命令都是我亲自手打的,不知道会不会有错,自己注意哈)

sudo apt-get install subversion

这样就安装好了svn了,很轻松吧,那么现在我们来创建仓储(也就是你以后的代码管理都要放到这下面,不过要注意的是提醒一下不是很了解svn的同学,这里存储的代码是不可视的,也就是说如果你需要获取提交上来的代码不是来这复制的,得通过checkou去获取)

创建版本库

sudo mkdir /home/svn  //这个是总的,因为方便我们以后单独将每个项目的代码放到它下面进行统一管理


创建真正的项目版本库,例如你有个项目,想自己命名为test,

sudo svnadmin create /home/svn/test

执行上面的代码之后,到你的linux服务器去看看对应的目录,执行如下命令
cd /home/svn/test
然后再输入
ll
是否看到有.svn这样一个文件(隐藏文件,ls命令是看不到的,ll才能看得到),如果能看到说明已经成功了

这步之后我们就来进行对应的配置了,

执行cd /home/svn/test/conf到我们的项目版本库配置目录,
ls会看到好几个文件,如下:
authz文件是设置用户权限,passwd文件是存储用户及密码,svnserve.conf是主配置文件

使用vi或者vim命令打开配置文件

authz文件的配置如下图

ubuntu的Linux安装svn并部署项目,同时实现项目同步更新(本地提交commit,项目目录自动更新)_第1张图片


passwd配置文件修改如下:

ubuntu的Linux安装svn并部署项目,同时实现项目同步更新(本地提交commit,项目目录自动更新)_第2张图片


第三就是修改svnserve.conf这个文件了

ubuntu的Linux安装svn并部署项目,同时实现项目同步更新(本地提交commit,项目目录自动更新)_第3张图片



下面就是开启svn服务

执行如下代码:

sudo svnserve -d -r /home/svn


如果想知道svn服务是否已经启动成功了,可用执行下面的代码试试就知道了

sudo netstat -antp |grep svnserve
执行上面的代码后出现有3690的端口,那说明成功了



现在我们来进行svn运行项目代码自动更新的工作:


执行如下命令,跳转到对应的配置文件目录

cd /home/svn/repos/hooks

这里我假设你项目目录是 /var/www/html,根据自己的实际情况进行修改

然后创建脚本(这个脚本就是实现代码自动更的关键)


复制配置脚本模板
cp post-commit.tmpl ./post-commit
打开我们刚刚复制的脚本文件
vim post-commit

打开后记得把里面的内容全部使用#号注释掉或者全部删除掉,然后在我们刚刚复制的脚本文件添加如下内容
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN_PATH=/usr/bin
WEB_PATH=/var/www/html
SVN_USER=xiaowang
SVN_PASS=123456
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
exit 0


上面脚本里面的/var/www/html根据自己实际情况填写


好了,下面就在本地进行checkout ,然后进行commit操作,再去试试看吧,如果不出意外,你自己本地提交修的东西,你指定的项目目录会有一模一样的东西,方便吧?比起以前用ftp方便多了,而且这个还能解决几个人同时修改冲突的问题


添加一点:担心连svn都不会登陆的孩子,

如果连自己linux服务器ip是多少都不知道的,自己在linux上执行命令ifconfig就能看到了

ubuntu的Linux安装svn并部署项目,同时实现项目同步更新(本地提交commit,项目目录自动更新)_第4张图片



如果还有什么不清楚的,记得给我留言,因为我经常玩csdn,会及时回复的,







你可能感兴趣的:(linux)