之后,我把我的本地git仓库服务器:
$ git push origin master
我想在服务器上裸露的回购协议(后它从我收到的推送)到:
$ cd /Users/me/Sites
$ git pull
$ exit
我在这里看到了一些问题,他们提到在$ HOME / gitolite /钩子钩,
但这里是我的工作:
git@mm:gitolite $ pwd
/Users/git/gitolite
git@mm:gitolite $ ls
.git/ README.txt install*
CHANGELOG check-g2-compat* src/
COPYING convert-gitosis-conf* t/
如何添加特定的裸回购后,接收挂钩?
如果我进入我的裸回购:
git@mm:bare-repo.git $ ls hooks
applypatch-msg.sample* pre-rebase.sample*
commit-msg.sample* prepare-commit-msg.sample*
post-update.sample* update@
pre-applypatch.sample* update.sample*
pre-commit.sample*
我没有看到一个后收到钩。 是什么赋予了?
更新2013年8月,与最新的gitolite:你现在有正式的具体回购钩 :
它基本上只创建在一个符号链接<repo.git>/hooks
指向里面的一些文件$rc{LOCAL_CODE}/hooks/repo-specific
(除了gitolite-admin
回购)
原来的答案(
首先,如果使用的是gitolite V3,可以定义任何钩,包括一post-receive
钩子(除了update
钩,见使用钩 ):先前,与gitolite V2 , pre-receive
钩被保留。
现在,您可以通过复制其在添加钩gitolite-admin/common/hooks
本地克隆目录,推动gitolite-admin
回gitolite服务器:gitolite将确保钩被宣布为它管理的所有裸露的回购协议。
您也可以直接在服务器上的一个单独的位置由设计增添你的钩子$LOCAL_CODE
“ rc
”变量(“ rc
”在你来定义gitolite.rc
配置文件 ): $LOCAL_CODE/hooks/common
。 请参阅“ 自定义gitolite ”。
这样做是为了确保一个gitolite升级不会删除任何自定义程序。
简单地定义一个“后收到”文件,可执行文件( chmod 755
),并将其复制在common/hooks
你选择(的目录gitolite-admin
本地回购加git push
,或.gitolite
在服务器上,或$LOCAL_CODE
上服务器)。
注意:事实上,你没有看到一个“ post-receive.sample
”文件不妨碍你定义挂钩。
如果直接在服务器上完成的,你需要再运行gitolite setup --hooks-only
为了让您的自定义钩子是在所有裸露的回购协议设置。
你绝不会做的是直接在一个复制bare-repo.git/hooks
目录:这是gitolite的工作,发布“通用”挂钩到所有裸露的回购协议。
这样一来,就可以通过任何克隆直接管理他们gitolite-admin
回购(推回该回购将更新,你有可能改变钩)。
“所有的裸回购”是指你的post-receive
钩必须知道裸回购其所操作:
你可以通过检查的价值$GIT_DIR
(设置为根.git
上这个钩子运行裸回购的目录)。
最后,这种post-receive
挂机,请参阅“ Git中签post-receive
钩:“ Not a git repository '.'
” “:
您需要定义GIT_DIR
和GIT_WORK_TREE
为了明确地到目的地回购您git pull
成功。
GIT_WORK_TREE=/Users/me/Sites GIT_DIR=/Users/me/Sites/.git git pull