svn使用post

svn使用post-commit实现自动部署,自动checkout

搭建svn都不是仅仅为了把代码存到仓库,而是同步部署到对应的项目。

在 svn 目录的 /hooks里面有一堆tmpl,这些tmpl可以做很多事情,不过今天我们就说一下自动部署post-commit.tmpl。

tmpl文件是模版文件,我们要用post-commit需要手动复制对应tmpl里面的内容到新的post-commit里面

在svn版本库的hooks目录

]# cd  /var/svn/four/hooks

]# cp  post-commit.tmpl     post-commit   //复制post-commit.tmpl  改名为post-commit

]# >  post-commit    //清空内容

]# vi  post-commit    打开文件

写入以下内容

#!/bin/sh

export LANG=zh_CN.UTF-8

/usr/bin/svn update --username ****  --password ****  /www/4th

其中第一行意思是:用sh来解析这个脚本,因为各种shell的语法有细微的差别

第二行是编码格式:这里我使用的是UTF-8

最后一行/usr/bin/svn 是svn的路径,不是项目路径,应该都是一样的,后半句分别是用户名、密码、和项目路径。--username这个比较坑了,网上搜出来的很多都搞错了,前面其实是两个减号,英文输入法下的。

例:

修改post-commit的可执行权限

]# chmod 755 post-commit

在服务器进入项目目录/www/4th  checkout 整个项目。

例:

]# cd  /www/4th

]# svn checkout svn://192.168.1.111/four .

svn checkout svn://{您的服务器地址}:{端口号}/four.

//注意目录后面还有一个点

注意:此处的/four 可不需要添加:( 添加的目的是为了实现多个项目。 )

常见错误:

255错误:post-commit没有给执行权限 或者 头部没有执行用sh执行,就是没有#!/bin/sh 
提示跳过目录:服务器目录没有checkout代码,记得一定要先checkout一次,才能同步(!,每次新建项目都需要) 
什么提示也没有:这种情况出现在用工具commit的时候,成功了,但是就是没有同步,建议你到linux下,使用./post-commit手动执行看报什么错误。如果乱码,请将文件内编码格式修改为GBK 
提示** is a direcitory:/usr/bin/svn你把这个搞错了,他不是一个目录,是svn的路径

(0)

相关推荐