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

本文介绍了如何通过配置svn的post-commit钩子实现自动部署。首先在svn的hooks目录下复制并编辑post-commit.tmpl文件,设置好用户名、密码和项目路径,赋予文件执行权限。然后,在服务器上确保项目目录已checkout,并手动执行post-commit脚本以测试配置。遇到错误如255、提示跳过目录或错误路径,需检查权限、目录状态和svn路径的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的路径

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值