gitolite后收到具体的裸回购挂钩(gitolite post receive hook for

2019-07-31 07:15发布

之后,我把我的本地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*

我没有看到一个后收到钩。 是什么赋予了?

Answer 1:

更新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_CODErc ”变量(“ 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_DIRGIT_WORK_TREE为了明确地到目的地回购您git pull成功。

 GIT_WORK_TREE=/Users/me/Sites GIT_DIR=/Users/me/Sites/.git git pull


文章来源: gitolite post receive hook for specific bare repo
标签: git gitolite