关于git:使用gitlab定制post-receive hook

Custom post-receive hook with gitlab

我正在尝试使用gitlab设置自定义接收后挂钩

我在跟踪他们的文件在这里

我在自定义挂钩文件夹中有一个可执行的接收后文件,代码如下:

1
2
3
 !/bin/bash
 echo"post-receive firing | wall
 git pull

如果运行此文件时使用:

1
 ./post-receive

它工作得很好。当对gitlab repo进行推送时,它似乎根本不会开火。

这是我第一次尝试任何类型的网络钩子,所以我有点迷路了。

a)我在远程Web服务器上的.git/custom_hooks文件夹中有上述脚本,对吗?

b)我需要在回购协议中做什么吗?

c)在文档中,它指定我应该设置文件的权限,以便"git"用户拥有该文件。我在网络服务器上没有git用户…所有其他与Git相关的文件都归我的用户或根用户所有。

所以假设我在这里做了一些完全错误的事情,有人能帮我摆脱痛苦吗?当我从本地机器推到Gitlab时,有人能给我一个自动推到Web服务器的明智方法吗?我觉得我已经花了一些时间寻找一种方法来实现这一点,而且解决方案似乎是完全多余的(cronjob每隔几秒钟运行一次…)或者像上面所说的,似乎不起作用。或者至少我看起来不能让他们工作。

当然这是一个简单的任务…


on the file so it is owned by the 'git' user. I have no git user on the webserver... all other git related files are owned by my user or root.

这是因为Oyur Web服务器是Gitlab服务器的客户端。您参考的文档用于配置Gitlab服务器(向Gitlab repo添加后接收挂钩)。因此,"EDOCX1"(0)用户是Gitlab服务器上的默认用户。

但是,如果您要推到gitlab.com,就不能直接添加钩子。

您需要声明一个Web钩子,然后它将发送一个JSON消息,您可以监听该消息以触发另一个操作。

如果你是唯一可以推的人,你可以简单地推多个回购。这里不涉及钩子,客户机或服务器。但这将是一个仅对本地克隆的repo有效的本地设置。


请遵循以下步骤

  • 去你的Git服务器
  • 使用以下命令查找挂钩查找/-xdev 2>/dev/null-name"hooks"
  • 选择并转到各自的项目挂钩文件夹。
  • 以编辑模式打开接收后文件(http://www.wikihow.com/create-and-edit-text-file-in-linux-by-using-terminal)
  • 把你的逻辑放在这里。如果要执行url,可以按以下方式执行
  • 需要"net/http"需要"uri"uri=uri.parse("您的URL")response=net::http.get响应(uri)

    希望,这对你有帮助