问题标签 [githooks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Calling 'git pull' from a git post-update hook
I have a central git repo set up using gitolite.
I want to set up a hook such that whenever a user pushes to the repo, it performs a pull elsewhere followed by some automated testing.
So far, I only want to it perform the pull.
In the hooks directory I created the following script names post-update:
When I invoke this script using ./post-update, it does exactly what I want.
However, whenever it's invoked automatically as I hook, I get: fatal: Not a git repository: '.'
Any idea why this might be happening?
git - git hook post-merge - 错误:无法运行
为了在拉动后触发 git 钩子,我做了一个合并后钩子。脚本如下所示:
该文件称为“合并后”,并且与运行拉取命令的文件具有相同的所有者。它还具有正确的权限:755。
当你这样做时,我 git pull [remote] master 我得到这个错误:
合并后文件位于 .git/hooks 文件夹中。
git - git post-commit hook - 提交文件的脚本
我可以在某处看到一个示例 post-commit 挂钩以在每个提交的文件上运行脚本吗?
例如。
并且钩子执行:
最好是有参数来提交命令来运行这个钩子,例如。git commit -X
… 执行这个 post commit 钩子。最终像git-commitx
.
与索引中文件的预提交挂钩相同的版本怎么样?当其中一个文件的脚本执行失败时,我可以中止提交吗?
编辑:
这是我现在拥有的:
git - Git远程/共享预提交钩子
将一个官方存储库作为远程存储库,并从中克隆多个本地存储库,是否可以在该主存储库上编写预提交挂钩脚本并在其所有克隆上强制执行?
git - 使用 gitosis 管理对 git 存储库的 http 访问
[2010 年 9 月 16 日更新]
昨晚看了这个之后,我意识到我最初的问题实际上是在问两个不同的问题:
1)是否可以为 gitosis 创建的所有远程存储库设置更新后挂钩(即mv hooks/post-update.sample hooks/post-update
在 gitosis 创建存储库后不必手动执行)这是通过 HTTP 克隆工作所必需的(愚蠢的 HTTP 客户端依赖于git update-server-info
从更新后挂钩中调用的事实)。
2)一旦可以通过 HTTP 访问存储库,是否可以使用 gitosis.conf 中的选项打开和关闭访问(类似于daemon = no
or gitweb = yes
)
--- 问题 1 的解答 ---
事实证明,Git 使用模板通过git init
命令创建新的存储库。通过mv hooks/post-update.sample hooks/post-update
在模板目录中执行,我的服务器上的所有未来调用git init
都将正确配置更新后挂钩。(在 OSX 上,模板目录是/opt/local/share/git-core/templates/
为那些关心的人准备的)
这个工作的另一个要求是打开 Apache 重写规则,以便存储库的 HTTP 克隆 URL 看起来像http//git.example.com/repo.git
我的重写规则/etc/apache2/extra/httpd-vhosts.conf
如下所示:
--- 仍在寻找问题 2 的解决方案...帮助!:) ---
现在 HTTP 克隆适用于我所有的存储库,我想知道是否有一种方法可以使用 gitosis 来管理 HTTP 访问控制。设置daemon = no
并gitweb = no
关闭存储库的 git-daemon 和 gitweb 访问,但由于 Apache 重写规则仍处于启用状态,因此存储库仍可在http://git.example.com/repo.git
. 关于如何使用 gitosis 来管理这个的任何想法?
[我最初发布的问题]
是否可以使用 gitosis 管理对 git 存储库的 http 访问?例如,在 gitosis.conf 中,我可以使用以下命令管理 gitweb 和 git-demon 的访问:
我目前可以通过发出以下命令来克隆我的存储库:
但是,当我发出以下命令时:
我收到以下错误消息:
但是,如果我登录到我的服务器并从 repo.git 中运行以下命令:
然后通过http克隆工作正常。
有没有办法从 gitosis 中管理对存储库的 http 访问?
git - git commit 不推送后发送邮件
提交到存储库后,我需要发送带有差异的电子邮件。我知道如何在推送后发送电子邮件,但它不适用于提交。
对于推送,我创建了获取参数的钩子 post-receive。但是钩子 post-commit 没有收到任何参数,因此我不能使用我的脚本来发送邮件。
也许有一种方法可以在 post-commit 钩子中获取有关 newrev 和 refname 的信息,或者还有其他方法可以在提交后发送邮件?
git - git:谁推了 post-receive 钩子
如何确定谁推送到存储库?
即有人这样做git push origin master
,并且在origin
repo 的 post-receive 挂钩中,我需要使用 Somebody 的名称或电子邮件。
git - git:接收后挂钩中的空参数
post-receive-email
我正在根据目录中的脚本编写接收后挂钩contrib
,但似乎oldrev
andnewrev
参数是空的。
脚本如下所示:
该脚本在推送时运行,但所有、 和$1
都是$2
空的。我应该配置一些东西来让它运行吗?$oldrev
$newrev
(gitolite
如果它确实重要,存储库是由创建的)
git - Git:使用 git hook 将回车符 \r 转换为新行 \n?
一位程序员同事使用一台 Windows 计算机,该计算机在我们的源代码中随处放置回车符。
有没有办法编写一个将所有转换为的 git\r\n
钩子\n
?
注意我以前没有使用过 git 钩子,所以多一点额外的手可能会有很长的路要走:)