- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Gitlab。 Gitlab 正在创建以下链接以通过所有存储库分发相同的 Hook
hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks
在此目录中,已经有一个 post-receive
Hook ,用于在 Gitlab 中正确处理提交,它是用 ruby 编写的。我想添加一个用 bash 编写的附加钩子(Hook)。这可能吗?
最好的问候
最佳答案
Gitlab 在 $GIT_DIR/custom_hooks
directory 中支持项目 Hook .
这支持 pre-receive
, post-receive
和 update
钩子(Hook)。
来自上面的网页:
Normally, git hooks are placed in the repository or project's hooks directory. GitLab creates a symlink from each project's hooks directory to the gitlab-shell hooks directory for ease of maintenance between gitlab-shell upgrades. As such, custom hooks are implemented a little differently. Behavior is exactly the same once the hook is created, though. Follow these steps to set up a custom hook.
- Pick a project that needs a custom git hook.
- On the GitLab server, navigate to the project's repository directory. For an installation from source the path is usually
/home/git/repositories/<group>/<project>.git
. For Omnibus installs the path is usually/var/opt/gitlab/git-data/repositories/<group>/<project>.git
.- Create a new directory in this location called custom_hooks.
- Inside the new custom_hooks directory, create a file with a name matching the hook type. For a pre-receive hook the file name should be
pre-receive
with no extension.- Make the hook file executable and make sure it's owned by git.
- Write the code to make the git hook function as expected. Hooks can be in any language. Ensure the 'shebang' at the top properly reflects the language type. For example, if the script is in Ruby the shebang will probably be
#!/usr/bin/env ruby
.That's it! Assuming the hook code is properly implemented the hook will fire as appropriate.
运行多个相同类型的钩子(Hook)
现在可以像任何其他 git 存储库一样完成此操作:编写委托(delegate)脚本以将操作转发给您想要触发的所有 Hook 实现。例如:
#!/bin/bash
# Allow to run multiple hooks
# For each hook type (post-receive, post-update, ...) create a type.d subdirectory, e.g. post-receive.d/
# Then put all hook scripts into that directory and make them executable.
# Requires the "pee" utility from moreutils package: http://joeyh.name/code/moreutils/ or use "apt install moreutils"
# pee duplicates stdinput to all scripts
script_dir=$(dirname $0)
hook_name=$(basename $0)
hook_dir="$script_dir/$hook_name.d"
if [[ -d $hook_dir ]]; then
pee $hook_dir/* $*
fi
exit 0
关于git - 多个 git post-receive 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33690788/
问题 我想在可由用户添加的表单中实现输入字段的键/值对。 参见 animated gif on dynamic fields . 此外,我想在用户提交表单并再次显示页面时显示保存的数据。 参见 ani
这个问题已经有答案了: The useState set method is not reflecting a change immediately (19 个回答) 已关闭去年。 问题是,在网页中该
这个问题已经有答案了: The useState set method is not reflecting a change immediately (19 个回答) 已关闭去年。 问题是,在网页中该
我对钩子(Hook)相当陌生,我正在尝试实现一个拖放容器组件,该组件在整个鼠标移动过程中处理 onDragStart、onDrag 和 onDragEnd 函数。我一直在尝试使用钩子(Hook)复制此
有人向我介绍了 CSS 钩子(Hook)这个术语,但我对此不是很清楚。你能给我一些想法吗? 什么是 CSS 钩子(Hook)? 最常见的钩子(Hook)是什么? 使用 CSS 钩子(Hook)的最佳做
文档 ( https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#test-hook
问题是包含 PR_Write() 的 DLL 调用的不是 npsr4.dll,而是 nss3.dll 和 Hook 无法从不存在的库中找到 GetProcAddress()。 我正在尝试创建 Fire
我的 git hook 似乎没有工作。即commit-msg来自 gerrit 的钩子(Hook)。 commit-msg Hook 存在于 /.git/hooks/并具有正确的语法。 最佳答案 确保
用gdb调试不熟悉的程序时,程序执行后经常会意外退出next .发生这种情况时,我通常会设置一个断点,重新运行程序并执行 step而不是 next追踪正在发生的事情。但是,有时很难知道在哪里设置断点。
当我创建一个节点时,我希望它以编程方式创建一些引用刚刚创建的节点的节点。 虽然我只需要更改表单的 form_alter 提交函数来调用自定义函数来创建节点。 检查输出 $form_state 我可以看
我是钩子(Hook)的新手,在学习了对类的 react 之后才来,所以有点迷茫。在下面的代码中,我将 setDog 更改为 Husky,然后它应该告诉 API 调用搜索并获取我的哈士奇图片。但是,尽管
我编写(进程中)钩子(Hook)以防止在本地添加 BAD 标记名称: .hg/hgrc : pretag.badtagname = python:.hg/hgcheck.py:localbadtag
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Improve this qu
如果这个问题之前已经得到解答,我提前表示歉意(对于这篇长文,但我已尽力做到具体)。但是,我找到的答案并不完全令我满意。 我想在我的项目中使用新的令人惊叹的 React Hooks。到目前为止我所做的一
通过阅读一些文字,尤其是关于委托(delegate)的iOS文档,所有协议(protocol)方法都被称为 Hook 自定义委托(delegate)对象需要实现。但是其他一些书,命名为 Hook 作为
我的所有依赖项都位于受密码保护的存储库中。 我有一个要求输入用户名和密码的功能,但它经常困扰我。 有没有办法在依赖检索之前执行它? 在大多数情况下,我在本地 maven/gradle 缓存中拥有所有依
当我尝试运行 git commit -m 'message here' 时出现以下错误。 致命:无法执行 '.git/hooks/prepare-commit-msg':权限被拒绝 当我在我的 ubu
当我尝试运行 git commit -m 'message here' 时出现以下错误。 致命:无法执行 '.git/hooks/prepare-commit-msg':权限被拒绝 当我在我的 ubu
我有一个分支和主干的服务器存储库。分支是所有团队成员的存储库。我正在尝试使用 svn hooks仅在我的分支下的 repo 中,但它似乎无法正常工作。以下是我尝试采取的步骤: checkout my_
我正在尝试为我的模块找到一种在安装时创建 anchor 链接的方法。 我目前的策略是创建一个自定义菜单,类似于主菜单、次菜单等并位于其中。在此菜单中,我希望有一个或多个由我的模块定义的链接。然后我希望
我是一名优秀的程序员,十分优秀!