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

git - 用于网站发布的 Git post-receive 钩子 - 选定的文件不起作用

基于这个答案,我尝试实现以下内容:

推送到 web 存储库时,我不希望将整个存储库内容复制到我的 web 目录,而只复制某些文件/目录。

所以,在我的post-receive钩子里,我这样做:

但是,非常奇怪的index.php是目录中的版本永远不会正确更新。虽然git log我的裸存储库目录中显示了推送到它的最新提交,但它的版本index.php是以前的版本。

此外,我创建了一个名为test并将其添加到上面的路径中以复制到工作树中的文件 - 这也没有显示出来。

该文件肯定已执行。我添加了一个echo显示在我的控制台上的命令,并在按预期工作的目录中进行了一些清理。所有文件都在那里并更新。(我检查了一个全新的git clone。)只有一个分支,master

所有这一切都非常令人沮丧,因为当我第一次设置它时它运行良好。不知道这里有什么问题。谢谢。


更新:

我尝试了以下方法:

因此,repo 会按预期更新,但找不到新文件。也许路径规范有问题?

0 投票
1 回答
6813 浏览

github - github 服务挂钩和基本身份验证

我试图弄清楚如何保护 github 服务挂钩的 webhook 接收器。

在 github 手册页中,当您查看有关 github 挂钩将来自哪些 IP 地址的部分时,它会出现以下警告:

“我们强烈建议您不要将服务挂钩的 IP 列入白名单。相反,设置 HTTPS 和基本身份验证来验证传入请求。”

post receive hooks的文档中,我看不到任何设置基本身份验证的方法。

如何使用 github post-recieve/service/web 挂钩使用基本身份验证,通知我提交到存储库?

0 投票
3 回答
5037 浏览

python - 使用 GitPython 查找分支上的第一个提交

我正在使用 Python 和 Git-Python 编写一个 git post-receive 挂钩,它收集有关推送中包含的提交的信息,然后使用摘要更新我们的错误跟踪器和 IM。fromrev在推送创建分支(即post-receive 的参数全为零)并且还跨越该分支上的多个提交的情况下,我遇到了麻烦。我正在从torev提交中向后遍历父母列表,但我不知道如何判断哪个提交是分支中的第一个提交,即何时停止查找。

在命令行我可以做

这将给我准确的提交列表this-branch,而不是其他的。我尝试使用Commit.iter_parents记录在案的方法来复制它,该方法采用与 git-rev-list 相同的参数,但据我所知,它不喜欢位置参数,而且我找不到一组关键字参数那项工作。

我阅读了 Dulwich 的文档,但不清楚它是否会与 Git-Python 做任何不同的事情。

我的(简化的)代码如下所示。当推送启动一个新分支时,它目前只查看第一个提交然后停止:

0 投票
2 回答
1608 浏览

git - Git post-receive hook不会从master中删除已删除的文件

我在我的服务器上创建了一个裸 git repo,并从这个博客设置了以下 post-receive 钩子:

这样每当我在本地推送到我的服务器时,更改都会自动发布到每个分支的文件夹中,而无需手动拉取。

我设置了正确的权限以同时使用 dev 文件夹:

并且从开发分支推送按预期工作。当我签出主分支并进行合并时会出现问题。当我推送主文件时,新文件被复制到我服务器上的活动文件夹中,但我在本地删除的文件没有被删除。

如何让 post-receive 正确更新 live 文件夹?谢谢!

0 投票
2 回答
5329 浏览

git - Git post-receive 挂钩将每个分支签出到不同的文件夹?

我们的 Git 工作流程的基本设置是本地网络服务器上的一个裸存储库,两个开发人员推/拉到它。

我们希望自动复制(签出)每个被推送到本地网络服务器上不同位置的分支。举例说明:

将“开发”分支副本推送到“开发”子文件夹。将“master”分支副本推送到“master”子文件夹。

我们遇到的问题是让 post-receive 挂钩来执行此操作。这是我们目前拥有的:

收到的错误是:

“远程:致命:此操作必须在远程工作树中运行:更改推送到开发。”

正如您对该错误所期望的那样 - 实际上没有检查任何内容。

我也尝试过以这种方式接收后,但同样的问题:

任何人都可以在这里解释我做错了什么(随时像对 3 岁的孩子一样解释它:))。谢谢。

为了让未来的读者更清楚答案,托雷克一针见血。我曾经--work-tree=/master尝试进入我的裸仓库根目录中的一个名为“master”的文件夹(例如,在“分支”、“钩子”等旁边)。一旦我将其更改为--work-tree=./master(注意正斜杠前的点),一切都按我的预期工作。

0 投票
3 回答
436 浏览

ruby-on-rails - Rails 控制器中的 git 命令

我正在尝试建立一个系统,当我将更改提交到我的 GitHub 存储库时,我的服务器也会接收这些提交。

为此,我将我的 GitHub 存储库设置为向我的 rails 应用程序上的 URL 发送一个接收后挂钩。我有一个控制器来处理这个。

问题是:如何在 rails 控制器中运行 git 命令?我知道如何在命令行中执行此操作。

我是否只需键入以下内容:

0 投票
1 回答
182 浏览

git - git checkout 修改了太多文件

我正在使用 git 发布一个网站。工作流程大致是:

Web 服务器上的 post-receive 挂钩如下所示:

绝大多数情况下,这工作得很好。当我说好时,我的意思是,如果我添加了一个文件,结帐会修改那个文件。

只有当我等待一天然后再次提交并推送时,post-receive 挂钩中的 git checkout 才会重新获取我工作副本中的每个文件。它不仅需要很长时间,而且会与我稍后运行的 rsync 混淆。

一夜之间会发生什么,以至于明天发生的结帐与我今天可以一遍又一遍地重复的结帐完全不同?

0 投票
1 回答
256 浏览

git - 如果特定文件已被修改,如何创建一个 git post-receive 钩子发送电子邮件?

我想将以下行为添加到由 gitolite 管理的 git 存储库中。在推送到 master 的东西(可以忽略其他分支)上,我想检测一个特定文件是否在其中一个提交中被更改,如果是,则向指定地址发送电子邮件。电子邮件内容每次都可以相同。可以通过执行脚本或 bash 命令发送电子邮件,假设必要的可执行文件可用。

如何使用 git post-receive 钩子来做到这一点?


背景:对某个文件的更改需要对代码中不受控制的内容进行内部手动处理。我希望这封电子邮件能够提醒您完成该手动过程。

0 投票
1 回答
435 浏览

git - GIT 挂钩在提交时更新了 T-SQL 数据库

我已经用谷歌搜索了一个小时,但还没有找到解决方案。有没有办法编写一个 GIT 挂钩,将来自提交的 git 消息放入 postreceive 的 SQL Server 数据库中?我想做的是在我的数据库中存储一个包含我所有提交的表,就像 bitbuckets 问题跟踪器一样,如果提交消息类似于“关闭问题 #2”,我想关闭另一个表中的问题。

0 投票
1 回答
172 浏览

git - 为什么 trac 1.0 仍然需要 post-receive 挂钩?

为了能够使用 git commit 消息关闭工单,我们可以这样写:

之后,当我查看 trac 中的时间线时,此提交消息与提交哈希一起出现。此外,trac 识别出#2引用了一张票并创建了一个可点击的链接,以便我可以点击#2并观看这张票。

因此,显然解析提交消息所需的一切都已经存在。但是即使我写fixes #2了,票状态也不会被触及。

我需要将http://trac.edgewall.org/attachment/wiki/TracGit/post-receive-hook.py提供的 post-receive 挂钩放入hooksgit repo 的目录中,以便使用提交更新票证状态消息。

为什么还需要这个?是否有已知的计划让钩子变得多余?