git hook bash不起作用

时间:2012-01-31 01:03:53

标签: git bash

努力配置我的git存储库,但没有成功。

目标:一旦我推动我的lokal repo,到dev分支,它将与主brench合并。

更新后(挂钩)

#!/bin/bash
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

LOGFILE=/www/htdocs/w00dac5d/_production/.git_push_log.tmp

&> $LOGFILE

echo 'push-start'

echo `basename $PWD`
#cd ../
#echo `basename $PWD`

git status
git checkout master

echo 'push-checkout'
git merge dev

exec git-update-server-info

得到错误,如

“它不是一个git repo”但是我检查了一个文件夹,它是正确的。

enter image description here

1 个答案:

答案 0 :(得分:2)

这里的问题是,在非裸存储库的post-update挂钩中,GIT_DIR设置为.,而您当前的目录是.git目录。有关每个不同git挂钩的详细信息,请参阅this underrated blog post;)

这意味着,如果您执行cd ..,那么GIT_DIR仍然是.,但您当前的目录将不再是.git目录。尝试使用以下命令开始您的钩子脚本:

export GIT_DIR=/whereever/production/.git
export GIT_WORK_TREE=/whereever/production/

......安全 - 有关GIT_DIRGIT_WORK_TREE如何互动的规则很繁琐。