Git自动部署

简介: Git自动部署文件位于repository下面的hooks里的post-receive   #!/bin/sh set -e git-update-server-info gitosis-run-hook update-mirrors # Check the remote git rep...

Git自动部署文件位于repository下面的hooks里的post-receive

 

#!/bin/sh

set -e

git-update-server-info

gitosis-run-hook update-mirrors

# Check the remote git repository whetherit is bare

IS_BARE=$(git rev-parse--is-bare-repository)

if [ -z "$IS_BARE" ]; then

         echo>&2 "fatal: post-receive: IS_NOT_BARE"

         exit1

fi

 

 

# Get the latest commit subject

SUBJECT=$(git log -1--pretty=format:"%s")

 

 

# Deploy the HEAD sources to publish

IS_PULL=$(echo "$SUBJECT" | grep"deploy")

if [ -z "$IS_PULL" ]; then

         echo>&2 "tips: post-receive: IS_NOT_PULL"

         exit1

fi

 

 

# Check the deploy dir whether it exists

DEPLOY_DIR=/var/www/htdocs/test_com/

if [ ! -d $DEPLOY_DIR ] ; then

         echo>&2 "fatal: post-receive: DEPLOY_DIR_NOT_EXIST:\"$DEPLOY_DIR\""

         exit1

fi

 

 

# Check the deploy dir whether it is gitrepository

#

#IS_GIT=$(git rev-parse --git-dir2>/dev/null)

#if [ -z "$IS_GIT" ]; then

#       echo>&2 "fatal: post-receive: IS_NOT_GIT"

#       exit1

#fi

# Goto the deploy dir and pull the latestsources

cd $DEPLOY_DIR

#env -i git reset --hard

unset GIT_DIR

git pull

 

提示我:"fatal: Not a git repository: '.'" 
也就是说这个hook脚本执行了cd之后,继续执行git语句拉取的时候还是在hooks文件夹下,而不是cd的文件路径
如果第三句改成 "env -i git pull",也会提示说env git不是一个命令什么的.. 
问题是git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,所以解决方法就是 
在git  pull与cd命令之间加上unsetGIT_DIR就搞定了

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

另外一篇参考文章:

http://www.360doc.com/content/14/0115/17/10058718_345507725.shtml

使用 Git Hooks 实现自动项目部署

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
6月前
|
开发工具 git
服务器定时自动拉取Git仓库代码自动部署
服务器定时自动拉取Git仓库代码自动部署
137 0
|
11月前
|
存储 Kubernetes jenkins
k8s初探(6)-Jenkins自动部署(2) 利用git软件向jenkins发送构建任务
k8s初探(6)-Jenkins自动部署(2) 利用git软件向jenkins发送构建任务
487 1
|
Linux 开发工具 git
【Linux】搭建Git后使用钩子实现代码自动部署
【Linux】搭建Git后使用钩子实现代码自动部署
279 0
【Linux】搭建Git后使用钩子实现代码自动部署
|
存储 Java 开发工具
将代码从Git自动部署到容器
本文讲的是将代码从Git自动部署到容器【编者的话】将您的代码从您的Git仓库转移到您的容器可能是一件痛苦的工作。本文介绍了如何实现自动化部署。
4946 0
|
JSON 开发工具 git
【Webhooks】使用Git的Webhooks进行服务器自动部署代码
使用Git的Webhooks进行服务器自动部署代码 本文项目地址 https://github.com/diandianxiyu/PageBlog/blob/master/%E4%BD%BF%E7%94%A8Git%E7%9A%84Webhooks%E8%BF%9B%E8...
3426 0
|
Web App开发 PHP 数据库
做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08)   阅读(200) | 评论(1) 12人收藏此文章, 我要收藏 赞1 8月22日珠海 OSC 源创会正在报名,送机械键盘和开源无码内裤   项目是THINKPHP写的 用了 oschina git 进行版本管理。
1431 0
|
Shell 开发工具 git
使用 Git Hook 实现网站的自动部署
自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法? 目前我在使用 Git Hook 来部署自己的项目。
1829 0
|
Shell 开发工具 git
**使用 Git Hook 实现网站的自动部署
http://www.tuicool.com/articles/3QRB7jU 自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法? 目前我在使用 Git Hook 来部署自己的项目。
1328 0
|
开发工具 git
gitblit git SERVER window 安装配置 hook post-receive 自动部署
项目中使用的是gitblit windos版 呆狐狸.凨 1.安装 需要JAVA SDK http://gitblit.com/Download Gitblit GO (Windows) 下载后,解压缩,放到例如 D:\gitblit 打开此目录  gitblit.cmd                #启动 gitblit-stop.cmd       #停止 ins
3177 0
|
开发工具 git
window 下 git SERVER 自动部署/生成更新项目 批处理
window 环境下 git 自动更新部署网站项目 作者:凨.呆狐狸 一键GIT 批处理更新 1.首先,克隆远程仓库 例如:生成目录:F:\test 2.安装window git 客户端 例如:安装目录:C:\Git 3.建立批处理文件 update.bat C:\Git\bin\git.exe pull origin master以上命令可以自己配置服务端自动部
1870 0