问题标签 [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 投票
2 回答
1554 浏览

git - git post-receive 钩子并防止标签推送

在我的 GIT 的 post-receive 挂钩中,如果推送标签,我需要避免执行某些代码。

我尝试使用环境变量 $refname 但它看起来是空的。

任何想法?

谢谢

随机化

0 投票
2 回答
251 浏览

git - 使用 post receive hook 推送到 DEV 服务器效果很好 - 但随后无法提交远程更改

对 git 来说非常新,经过一番阅读后,我们设置了以下工作流程:

  • Github 仓库

  • 本地存储库(工作站和笔记本电脑)

  • 开发服务器 - 将接收钩子从裸仓库推送到提供文件的目录

这一直很好,但今天我想提交在开发服务器上所做的更改,然后将它们拉回本地。

但是当我尝试暂存并提交更改时,我收到了错误:“致命:不是 git 存储库......”

我想我明白为什么(因为包含所有文件的目录不是 git repo)但是我将如何在 DEV 服务器上提交更改并将它们拉回本地?

任何帮助将不胜感激 - 我是一名设计师,所以你可能不得不简单地解释一下。

干杯

0 投票
1 回答
860 浏览

macos - 在 OS X 中通过 HTTP 进行 Git 后接收

我的设置是:
1. 用于 Git 存储的 OS X 运行 apache 服务器。
2. 我的 Git 项目目录在这里:/Library/WebServer/Documents/CI
3. 我遵循了这个教程:http ://www.pkgbox.org/wordpress/2011/08/setting-up-a-git -server-on-macos-x-lion/并通过 HTTP
4 设置 Git 访问。我的 gitrepo.conf 如下:

5. HTTP 身份验证工作正常,我有不同的用户和不同的组,一切正常。

我的问题是: 我希望能够在我的 git 中使用 post-receive 钩子。我读过这个问题:Git post-receive hook not working 而我从那里得到的是我需要设置 SMART HTTP。不幸的是,这个链接: http ://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html get's me 404。

我在这里读过:http: //progit.org/2010/03/04/smart-http.html但我真的是设置服务器的新手,我不明白我应该做什么......你能为我提供激活 GIT 钩子的有效配置吗?

建议的解决方案 更改为 SMART HTTP。

这是我当前的 gitrepo.conf

我已更改 /etc/hosts 以将 ciserver.smt 添加为指向 127.0.0.1 现在我无法发出此请求:

我越来越:

我还是做错了什么?

0 投票
2 回答
2855 浏览

git - 如果第二次推送仅从第一次推送开始快进,并发 git 推送是否总是安全的?

我想自动将 post-receive 钩子中的提交从我们 LAN 上的中央仓库推送到云中的另一个中央仓库。LAN 存储库是使用git clone --mirror git@cloud:/path/to/repo或等效命令创建的。

因为提交的文件相对于我们的上游带宽来说会很大,所以完全有可能发生这样的事情:

  1. Alice 发起对 LAN 存储库的推送。
  2. 当 post-receive 钩子运行时,Bill 从 LAN 存储库中提取。
    • LAN 存储库正在推送到云存储库。
    • 这也意味着 Bill 的本地仓库包含 Alice 推送的提交。通过测试确认。
  3. Bill 启动了对 LAN 存储库的推送。
    • Bill 的推送是 Alice 推送的快进,因此 LAN repo 将接受它。

当 LAN repo 的 post-receive 钩子执行时,将启动从 LAN repo 到云 repo 的第二次推送,并且两者将同时运行。

我不担心 git 对象。最坏的情况是两个推送都从 Alice 的推送中上传所有对象,但据我了解 git 的内部结构,这无关紧要。

我担心裁判。假设 Alice 使用慢得多的连接进行推送,因此 Bill 的推送首先完成。假设数据包丢失或其他原因导致钩子从 LAN 存储库推送到 Bill 的推送云之前完成,然后钩子从 LAN 存储库推送到 Alice 的推送云。如果 Alice 和 Bill 都在推送 master 分支并且 Bill 的推送首先完成,那么 master ref 在云存储库上会是什么?我希望它是 Bill 的 HEAD,因为那是后来的推送,但我担心它会是 Alice 的 HEAD。

进一步澄清:

我意识到如果 Bill 从他的机器推送到 LAN 存储库首先完成,Alice 从她的机器到 LAN 存储库的推送将失败。在这种情况下,LAN repo 的 post-receive 钩子将不会执行。此外,请假设没有人会强制推送,所以如果 post-receive 钩子在 LAN repo 上运行,所有 ref 更改都是快进的。

0 投票
1 回答
1011 浏览

git - Git:致命:执行挂钩/接收后失败

我有一个用git --bare init.

当我推动时,我得到:

hooks/post-receive 看起来像这样:

工作树是在远程配置中设置的(路径很好,如果我 cd 进入远程并git checkout -f检查到工作树)。

钩子上的烫发看起来像:

关于为什么钩子可能会失败的任何线索?

0 投票
0 回答
657 浏览

php - 后接收,请求 php 脚本,拉 git repo

我的网络服务器上有一个 PHP 脚本 git.php,只有几行,其中一行使用 shell_exec() 来运行

(请注意,您无法推送到网络服务器,这已禁用且无法启用。) 如果您转到 example.com/git.php,这一切都可以正常工作。脚本运行并且 repo 得到更新。(回购在另一个不相关的服务器上)

我想做的是使用我的 post-receive 钩子从我的 git 服务器更新我的 web 服务器上的 git repo。我正在使用 ssh 进行连接,所以钩子应该(并且确实有效,我已经测试过)有效,并且很确定没有权限问题。

我的问题是如何编写“接收后”脚本?

我尝试了一些没有运气的事情,我的脚本目前只有 1 行长,看起来像这样

但这无济于事。:(

有谁能帮助我吗?或者建议我可以做得更好的任何事情?提前致谢。

0 投票
1 回答
1095 浏览

git - git post-receive 未执行

我已经设置了以下接收后:

这是可执行的:

因此,当我从本地机器推入它时,它应该结帐并在本地进行更改。但事实并非如此:

当地的:

之后在远程机器上:

所以它的工作树中没有测试文件

任何想法可能有什么问题?

0 投票
1 回答
431 浏览

git - 通过 curl (git) 在接收后挂钩上发送提交数据的问题

我的项目的目的是将开发人员所做的每个提交记录到 mongodb 中。我已经设置了一个
nodejs 侦听器,它将将在帖子中收到的数据持久化到 mongo。

我正在运行一个 gitolite 服务器,每次开发人员推送时,我都使用 post-receive 挂钩通过 curl 将提交发布到我的节点侦听器。

我成功地做到了这一点,除了在旧版本是旧版本的初始提交中,0000000000000000000000000000000000000000当我尝试运行 git log 时,我得到一个无效的参数。

模棱两可的参数“8a2db961045bd4825624b16ad62e75be49dd70b6~1..8a2db961045bd4825624b16ad62e75be49dd70b6”:未知修订版或路径不在工作树中。使用 '--' 将路径与修订分开

下面是我的 bash/post-receive 脚本的摘录。

我不确定如何在我的 bash 脚本中/使用我正在使用的 git 命令来处理这个问题。

一个(懒惰的)选项是使用 git log 而不使用任何修订信息,并避免使用项目名称/git commit id 将重复的提交添加到我的集合中。但这在大型存储库上会很慢。

0 投票
1 回答
391 浏览

github - 如何为私人服务器重新创建 Github post-receive?

我正在使用出色的Sprint.ly来管理我的项目。我正在使用 git 进行源代码控制,而 Sprint.ly 通过获取其接收后消息并扫描更改(请参阅他们的文档)与 github 进行了出色的集成。

没有使用 github 来托管这个 repo,而是使用我自己的私有服务器。如何重新创建 github post-receive 消息并将其发布到 sprint.ly?我不太擅长编写这样的脚本,因此将不胜感激任何帮助。

0 投票
2 回答
3662 浏览

git - git post-receive 无法正常工作

我有以下问题。我已将“接收后”更新为 cd 到某个目录,然后将 repo 拉入以部署它,如下所示:

但是,每当我在本地机器上执行“git push origin master”时,我都会得到以下信息:

然而,当我手动 cd/var/www/site并执行git pull origin master它时,它工作得很好。