问题标签 [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.
php - Git - 从接收后结帐中排除配置文件
我有一个正在本地工作的 git 项目。这是一个 PHP 项目,带有一个存储 MySQL 数据库连接信息的配置文件。我的本地 MySQL 设置与远程设置不同。
在我的遥控器上,我有一个接收后挂钩,可以将文件签出到服务器上的文件夹:
我怎么能告诉这个结帐不包括(覆盖配置文件),因为它会用我的本地配置文件替换远程配置文件?我尝试将我的本地配置文件添加到 .gitignore,但似乎没有这样做。
知道如何从结帐中排除配置文件吗?
git - 在 post-receive 钩子中跳过之前已经处理过的 Git 修订的处理
我有一个 git post-receive 钩子,它提取在“git push”期间添加的所有修订,并对每个修订进行一些处理(例如发送通知电子邮件)。这很好用,除非在合并时;例如:
- 我在 branch1 上进行了一些提交,然后推送了 branch1。post-receive 挂钩正确处理提交。
- 我将分支 1 合并到分支 2 中,然后推送分支 2。post-receive 钩子第二次处理所有合并的提交。
我怎样才能避免这种情况?下面是我的 post-receive 钩子的开始,我从中提取应该处理的提交(最后 $COMMITS 保存要处理的提交列表)。
php - 每次提交时自动从 github 下载?
我有一些使用 jQuery 创建的插件,我的演示位于我的服务器上,我想在每次更改提交到 github 上的 master 分支时自动更新演示。
我知道我可以使用Post-Receive Hooks在我的服务器上获得嗡嗡声,这很容易,我还不知道如何获取 PHP 脚本以从 github 下载整个存储库的最新版本?
是否有执行此操作的 API,或者是否有直接链接到压缩存储库的最新版本?
git - 为什么 EC2 不通过接收后挂钩从 bitbucket/github 提取更新?
在迁移到 EC2 之前,我会将提交推送到 bitbucket 存储库并有一个 post-receive 挂钩将它们拉到服务器:提交后,会调用URL http://mywebsite.com/update.php ,其中 update.php是:
这曾经像一个魅力。但是,它不适用于 EC2,我不知道为什么。
我尝试了以下方法:
sudo chmod +x update.php
这应该使 update.php 可执行。将 update.php 更改为
将 update.php 更改为
将 update.php 更改为
我认为这与权限有关,因为当我通过 ssh 在我的实例上时,我可以以 ec2-user 身份运行“git pull”。此外,当我是 root 用户时,“git pull”也有效。
我怎样才能让它工作?我认为这与权限有关。
更新
我做了一些故障排除(感谢@cyberx86 的提示)并发现以下内容:
我能够通过运行在命令行上执行更新挂钩php update.php
,它为什么我是 root,但当我是 ec2-user 时却不行。错误日志显示
错误:无法打开 .git/FETCH_HEAD:权限被拒绝
所以我chmod -R 777 .git
以root用户身份运行命令。
现在我可以通过命令行git pull
和php update.php
在命令行上提取更新,但是当我通过 post-receive 挂钩或将浏览器指向 url/update.php 时它不起作用。错误日志显示
主机密钥验证失败。^M
致命:远程端意外挂断
我认为这意味着无论哪个用户在通过浏览器访问该命令时运行该命令都没有设置 ssh 密钥,因此看起来 shell 命令正在运行,但远程存储库不允许该用户拉取。
根据@cyberx86 的建议,我检查了 /etc/passwd 中的用户,虽然没有 PHP 用户,但有一个名为 apache: 的用户apache:x:48:48:Apache:/var/www:/sbin/nologin
,然后我运行sudo -u apache php -q update.php
并收到以下消息
无法创建目录“/var/www/.ssh”。
无法确定主机“bitbucket.org (207.223.240.181)”的真实性。
RSA 密钥指纹已编辑
您确定要继续连接(是/否)?是的
未能将主机添加到已知主机列表 (/var/www/.ssh/known_hosts)。
权限被拒绝(公钥)。
致命:远端意外挂断
因此,这似乎是为通过浏览器运行 shell 脚本的用户(可能是 apache)设置一个 ssh 密钥的问题。
git - Git post-receive 钩子无法正常工作
我有一个带有 git 存储库的服务器。每次我推送到该服务器时,我都想为该存储库重新生成我的 gitstats 文档。
在该机器中,如果我执行以下命令,它将正确刷新 gitstats 文档:
这是我在该服务器存储库中的接收后挂钩:
因此,当我向该机器进行推送时,它会尝试执行该命令,但无法正常工作,推送后的输出消息包含以下错误消息:
如果我从钩子中删除该命令,我不会收到任何错误消息。
我不明白为什么该命令在直接在服务器上执行时可以正常工作,而在推送后执行时却不行。
有什么建议么?
git - git pull in hooks/post-receive 失败
在服务器上,/home/git/xxx/hooks/post-receive:
在服务器上,/var/www/xxx 是这样创建的:
当我在客户端上运行“git push”时,收到以下消息:
有任何想法吗?
git - gitolite 中的每个分支,每个 repo 提交钩子
我想添加一个提交钩子,当在 gitolite/git 服务器上收到推送时,只针对给定的分支和 repo 组合(repo 'dog' 上的分支'cat')。
我的环境:git版本1.7.4.1,
到目前为止我做了什么:
/home/git/repositories/dog.git/hooks/post-receive.secondary
在 git/gitolite 服务器上触摸了一个文件。使用以下内容编辑文件:
/li>将文件的所有者设置为“git”用户
将文件权限设置为 700
对“狗”回购的“猫”分支进行了提交
结果:未创建测试文件
ruby - Heroku Post 钩子处理器如何工作,以及如何了解有关构建此类动物的更多信息
我最近部署了一个 ruby 应用程序,它利用一些本地 heroku 功能通过 github 运行提交后挂钩。
https://github.com/ajlai/github-heroku-pusher。
现在我很好奇它是如何工作的,以及我如何构建一个与 heroku 类似的低级插件,可能是另一种语言。
程序功能的简要总结:
基本上,这个红宝石程序:
每次推送到 github 时自动部署我的 heroku
仅由 4 个参数配置(主要参数是 heroku API 密钥)。
开箱即用完美:不需要对heroku进行特定的处理。我只是将这个应用程序部署为一个新的 heroku 应用程序,并将 post recieve 挂钩添加到 github,然后发现每次我将它提交到 github 时,heroku 都会自动为我构建我的应用程序。
我关于这个 ruby 脚本(https://github.com/ajlai/github-heroku-pusher/blob/master/web.rb)如何将这个 github 驱动到 heroku 自动部署服务的问题
它似乎运行一个shell命令。这在 heroku 中是否允许?
来自 github 的实际“git pull”在哪里发生?我看到一个“GitPusher”对象,但不清楚该对象的定义位置(我怀疑它是静态导入到类中的 ruby gem 对象,但我看不出它可能来自什么 gem)。
我想知道构建这个项目的勇敢的灵魂在哪里找到了为 Heroku 构建这样一个低级挂钩所需的文档。任何关于我如何构建相同同类的自定义工作者钩子(最好是使用 Ruby 以外的语言)的提示都将不胜感激。
git - Windows 的接收后脚本(电子邮件通知)
我在 Windows 机器上创建了一个裸(中央)存储库。我的同事和我自己现在正在使用这个存储库。我希望 git 在更新时发送电子邮件通知。我知道我们需要在post-receive
钩子和配置mailinglist
和emailprefix
属性中编写一些脚本。但我需要的是脚本(在接收后),它在 Windows 机器中发送邮件。
注意:这里有一个类似的问题。但答案是“怎么办?” 不是'怎么办? 如果我的 repo 在 Windows 机器上,我可以让 git 发送一封带有 post-receive-email 脚本的电子邮件吗?
提前致谢。
git - Git站点部署-接收后挂钩中的结帐不起作用
我已经按照本教程“使用 Git 管理网站”,使用 Tower 提交本地存储库并将其推送到远程服务器。推送成功并显示以下消息:
我已经验证了我的 post-receive 挂钩正在执行,但是该checkout
命令没有将推送的代码添加到我认为我已经设置为我的工作目录的目录中。我整天都在想办法解决这个问题。
收到后:
我是 Git 新手,非常渴望学习。调试这个的最佳方法是什么?