问题标签 [git-post-receive]

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.

0 投票
1 回答
4514 浏览

git - gitlab-shell 中的“post-receive”钩子还能用于自定义钩子吗?

根据gitlab-shellpost-receive钩子的内容,它已被弃用。

但仅适用于 Gitlab 特定逻辑还是一般?恕我直言,我应该仍然可以将它用于更新我的存储库的 chiliproject post-receive 挂钩。不幸的是,我在这方面找不到任何具体的东西,主要是由于 gitlab v5 中的 gitolite <> gitlab-shell 转换。我希望有人能对此有所了解……</p>

[编辑]

对于 v1.7.1,该post-receive钩子已从gitlab-shell 中删除。所以正确的方法是要么创建一个 web-hook,仔细修改更新钩子,要么更密切地观察 gitlab-shell 的开发,直到实现自定义钩子支持。;-)

0 投票
2 回答
2196 浏览

php - GitHub WebHook POST 未通过

当我推送到存储库时,我已经设置了 github webhooooks 以将 POST 发送到我服务器上的 PHP 脚本。( https://help.github.com/articles/post-receive-hooks )

MY PHP 脚本记录连接 IP 以及收到的有效负载:

从日志中,我可以看到当我推送到我的仓库时连接了一个 IP,但没有记录任何 POST 数据。我使用 RequestBin 进行了测试,并确认存在 POST 数据。此外,如果我在 URL 中手动放置一个 $_GET 有效负载变量,则会记录下来(因为我正在检查 $_REQUEST 而不仅仅是 $_POST)。我怀疑我的 PHP 服务器被配置为拒绝来自其他服务器的 POST 请求。我使用的是 1and1 共​​享主机,所以我没有专门的控制,但我可以通过 SSH 登录,也可以使用 .ini 文件在本地配置 PHP 设置。任何建议将不胜感激!

*我不在乎我是用 PHP 还是其他语言来做这件事。如果您认为使用 Python 或其他东西可能会更容易,那也很酷。

-杰里米

0 投票
1 回答
1672 浏览

git - Git post-receive 对我不起作用

我已经经历了很多很多的答案,但没有任何结果。

基本上 post-receive 永远不会被调用。这是 /home/git/repo.git/hooks/post-receive 里面的脚本

我们想查看 /home/ubuntu/project

有一个 Ubuntu 服务器,用户名为ubuntu。还有一个用户叫git。我们针对 git 用户下的存储库克隆/推送/拉取等。

sudo chmod +x post-receive完成。

git 用户是 sudoer。

所以当有变化的时候!什么都没发生。甚至没有创建 post-receive.log。我可以以 git 用户身份在服务器上手动运行脚本。不是作为 Ubuntu 用户...

0 投票
4 回答
1173 浏览

git - git push 后接收慢

我的 git push 操作在大约 25-30 秒内完成,而不是(或多或少)立即返回。我正在使用我在这里找到的很长的接收后(bash)脚本:https ://raw.github.com/zma/usefulscripts/master/script/post-receive

一些细节:

  • 我的远程存储库位于 LAN 服务器上,我们有大约 70MB/s 的读/写访问(这看起来不错)
  • 这是一个新的存储库,其中只有 1 个测试文件
  • 我正在使用由 gitextension 安装的 git bash(git 版本 1.7.11.msysgit.1)
  • 我也用gitgui测试了一个push操作,但是延迟是一样的。所以我认为这与我使用的前端无关。
  • 如果我删除 post-receive 脚本,推送操作可以正常工作(完全没有延迟)

我做了一些测试,如果 post-receive 脚本包含大约 70 行都被注释掉(所以脚本什么都不做),push 会有大约 5 秒的延迟。

这是正常的吗?或者有没有办法加快推送?或者我必须大幅减少脚本大小?

更新: 重要的是要提到:

  • 我正在使用windows7
  • 远程存储库托管在 linux 服务器上,可通过 samba 访问
0 投票
2 回答
912 浏览

git - Git 服务器挂钩以静默忽略对特定文件的更改

在中央 git 存储库中,当特定文件被推送到存储库时,我需要忽略它们的更改。我不想拒绝(失败)整个推送,而只是忽略这些更改。有没有我可以使用的 git hook 来过滤掉一些变化?

我考虑过使用过滤器,但我不确定它们是否会在中央回购中使用,因为它是“裸露的”,例如,没有工作副本。

详细信息:在与此类似的场景中,数十名开发人员正在推送对这些文件的更改。我尝试在中央存储库上使用git update-index --assume-unchanged,但它会被“流浪”开发人员所做的每次推送重置,然后在他们拉出时传播给其他开发人员。我不能一次更改所有开发人员的存储库。我想在中央存储库上进行一次更改,然后忽略对这些文件的更改。

0 投票
1 回答
870 浏览

git - post-receive 挂钩调用可执行文件:无法执行二进制文件

设置:

  • 在 LAN 服务器 (linux) 上有一个远程 git 存储库
  • 可以通过 samba 和 ssh 访问此存储库。这两种访问方法都用于各种开发人员,以及所有在 Windows 上工作的开发人员。
  • post-receive 脚本(最后)调用命令行 smtp 邮件程序,它将发送一封电子邮件(通过内部 smtp 服务器)
  • 我有 2 个可用的命令行 smpt 邮件程序,一个用于 windows (bmail.exe),另一个用于 linux (smtpstoat)。两者都有

问题:

  • 如果 post-receive 脚本调用 linux 可执行文件 (smtpstoat),git push则对于通过 ssh 访问远程存储库的开发人员来说,执行是正确的(发送电子邮件)。但是当通过 samba 访问的另一部分开发人员执行git push命令时,git 会抱怨:remote: ./hooks/smtpstoat: ./hooks/smtpstoat: cannot execute binary file
  • 如果我修改 post-receive 脚本以调用 windows 可执行文件 (bmail.exe),则具有 samba 访问权限的开发人员对git push. 但是 ssh 用户得到了:remote: hooks/post-receive: line 708: ./hooks/bmail.exe: cannot execute binary file

无论您如何访问远程存储库,如何使此电子邮件发送正常工作?

0 投票
2 回答
5232 浏览

json - GitLab 5.2 接收后 WebHook

我在与生产网络服务器(/var/www 中的文档根)相同的服务器上运行 GitLab v5.2。

我正在尝试设置一个标准的 GitLab Post-Receive Hook,但我发现关于如何设置脚本来处理发布的 JSON 数据的信息非常少。我不想做任何自定义,开箱即用,我想在我的网站位置接收接收后数据(记住在同一台服务器上),然后在收到时从 origin-master 中提取(前提是发起推送的接收后数据发送到主分支)。这样,在 /var/www 中找到的网站始终是同一主站。

有人可以给我一个从帖子数据中提取脚本的例子,或者指出我创建一个正确的方向吗?

GitLab 挂钩请求示例- 对于那些没有 GitLab 实例的人,这里是 GitLab 接收后 JSON 数据的样子(直接来自 GitLab 帮助)

0 投票
1 回答
5292 浏览

git - GIT post-receive hook doesn't run

This has been asked a lot of times and I went through countless threads and Google pages, but none seem to be able to fix my issue. Perhaps I am not doing it the standard way, but it should still work.

I have a remote server that has a git repo

I push to it from local via ssh:

Pushing works fine and the remote repository gets updated. I can easily check that using putty and running git show. However, the post-receive hook that I wrote - doesn't run. The remote git project folder is: wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git and the hook is in wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git/hooks/post-receive

The contents of post-receive are:

I must note that executing that file manually sends the email as expected. But never triggers as a hook. Not even the touch. Any hints on what you think the cause of this may be is apprecaited!

P.S. ls -la on the hooks folder:

Edit: I had progress. Instead of pushing from NetBeans IDE, I used Git GUI to see a more detailed output. Here is what happened when I pushed to remote: remote: fatal: cannot exec 'hooks/post-receive': Permission denied[K To ssh://WAUDWARE\denis@wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git ab6ddef..a5644e8 master -> master. You can see my permissions in the post. Is there anything wrong with them? Are there some other permissions that can prevent execution of post-receive?

0 投票
1 回答
1417 浏览

git - Git钩子,通过提交的post-receive循环

在服务器端使用 git 钩子,是否可以在每次有人推送到远程存储库时循环从客户端发送到服务器的新提交消息?

我需要从每条消息中提取信息,

哈希,日期,提交作者,分支

我找不到任何关于 git hooks 的好文档。我已经阅读了 git post-receive 钩子,它抓取提交消息并回发到 URL

而且我不懂一行简单的代码

0 投票
1 回答
731 浏览

git - Git Post Receive Hook:将当前工作分支更新到登台服务器

所以,我有一个登台服务器设置,我想做的是当有人推送到非主分支时更新登台服务器的目录。我当前的接收后挂钩如下所示:

但是我没有在服务器上看到我想要的更改,并且远程返回“Already up-to-date”,这让我觉得它是从 Master 或其他东西那里拉出来的?

这不是一个优雅的解决方案,但我们是一个非常小的团队,致力于一个项目。理想的解决方案是将每个分支保存到登台服务器中的新目录,然后每次推送仅更新该目录。