草庐IT

lifecycle-hooks

全部标签

git - 如何测试 git 钩子(Hook)

因为“测试”是Git钩子(Hook)的常见用途,所以我的问题很难搜索到。我正在编写一个相当复杂的gitpost-receive钩子(Hook),想知道测试它的最佳方法是什么。目前我的流程是:在虚拟“远程”存储库中更改接收后更改一个虚拟的本地仓库在虚拟本地repo中提交更改将更改推送到虚拟远程仓库有没有更简单的方法来测试这个?理想情况下它看起来像:在虚拟仓库中更改接收后发出“魔法”命令来测试接收后也许我可以“重新发出”之前的推送,或者让远程仓库像刚刚收到带有特定哈希的推送一样? 最佳答案 编写一个钩子(Hook),仅记录其参数/环境并

git - 在 post-update hook 中查找 Git 分支名称

这个问题在这里已经有了答案:Writingagitpost-receivehooktodealwithaspecificbranch(7个答案)关闭6年前。我正在执行一个程序,以便在每次向我们的远程存储库发送更新时提醒CruiseControl。为此,我正在使用Git更新后Hook。如果我能找出哪个分支已被提交就太好了,这样我就可以用它来通知CruiseControl要构建哪个分支。有什么方法可以在更新后Hook中访问分支名称吗?

svn - git 是否有类似 `svn propset svn:keywords` 或提交前/提交后的 Hook ?

浏览git文档,我看不到任何类似于SVN的提交Hook或“propset”功能的东西,例如,只要提交到存储库,就可以更新文件中的版本号或版权声明。是否期望git用户为此类功能编写外部脚本(这似乎不是不可能的),还是我只是错过了一些明显的东西?编辑:为了清楚起见,我更感兴趣的是,例如,svnpropsetsvn:keywords"AuthorDateIdRevision"expl3.dtx像这样的字符串:$Id:expl3.dtx7802008-08-3012:32:34Zmorten$每当发生提交时,相关信息都会保持最新。 最佳答案

git - 如何设置 Git 钩子(Hook),以便在推送到 ssh ://peter@foo. com/~/bar.com.git 后,它将转到 ~/bar.com 并执行 git pull?

有人建议我在远程服务器上设置foo.com/~/bar.com#livewebpagecontentfoo.com/~/bar.com.git#abarerepo所以,在我的本地机器上,我可以做一个gitpush它会推送到远程机器上的foo.com/~/bar.com.git(完整路径是ssh://peter@www.foo.com/~/bar.com.git如何添加hook,以便在推送之后,远程服务器将cd~/bar.com并执行gitpull以便更新所有内容(与本地机器相同)?(不需要像Mercurial那样运行gitupdate?)(这与Cannotgitcloneafolder

windows - Hook : "git error: cannot spawn .git/hooks/post-commit: No such file or directory" 的 msysgit 错误

我无法让接收后和提交后Hook与msysgit(Windows7Pro/32和Ultimate/64)一起正常工作。对于提交后Hook,如果我从git-bash或控制台提交,我会收到上述错误,但如果我通过git-gui提交,它会正常工作。对于接收后Hook,所有三个都给出相同的错误。我认为这是某种权限或路径错误,但真的不知道从哪里开始。 最佳答案 将SHEBANG添加到hook的第一行,如下所示:#!/bin/shecho"executingpost-commit"exit0这也让我困惑了一段时间,我看到添加shebang修复了它。

git - 远程拒绝 master -> master(预接收 Hook 被拒绝)

我在rails3.2中工作,当我尝试推送到heroku时收到错误消息:gitpushherokumasterCountingobjects:496,done.Deltacompressionusingupto8threads.Compressingobjects:100%(435/435),done.Writingobjects:100%(496/496),5.17MiB|249KiB/s,done.Total496(delta125),reused216(delta8)----->Herokureceivingpush----->Removing.DS_Storefiles!Hero

git - Git 钩子(Hook)可以自动将文件添加到提交吗?

我想使用Git中的提交前或提交后Hook将自动生成的文件添加到同一提交,具体取决于在该提交中修改的文件。我该怎么做?我已经尝试将其作为预提交Hook,但没有成功:#!/bin/shfiles=`gitdiff--cached--name-status`re=""if[[$files=~$re]]thenecho"Creatingfiles"execbundleexeccreate_my_filesexecgitaddmy_filesexecgitcommit--amend-CHEADfi这成功地将它们添加到存储库中,但没有将它们添加到提交中。我还尝试在提交后Hook中使用最后两行exe

git - git push 后本地执行 Hook ?

我看过thegithooksmanpage但除非我遗漏了一些东西,否则我看不到本地的、推送后的git钩子(Hook)的选项。在我将master分支推送到GitHub存储库后,我想要一个更新我的Web服务器上的api文档(我已经有一个脚本)。当然我也可以写自己的脚本,结合gitpush和apidocs运行,但感觉有点不雅。 最佳答案 这个问题的另一个解决方案是为执行.git/hooks/pre-push和.git/hooks/post的gitpush设置一个包装器-在gitpush调用之前和之后推送脚本。可能的包装器可能如下所示:#!

git - 强制 git 运行接收后 Hook ,即使一切都是 "up-to-date"

即使我没有要推送的新提交,如何强制git在服务器上运行post-receiveHook?背景我使用git自动将网站部署到服务器。我在服务器的protected区域中有一个裸仓库和一个post-receiveHook,用于检查内容并系统地将某些文件复制到public_html文件夹中。(灵感来自thistutorial)我厌倦了在服务器上手动修改post-receiveHook,所以我的post-receiveHook现在实际上从repo复制了一个新版本的它自己:#!/bin/shrm-rf~/../protected/*GIT_WORK_TREE=~/../protectedgitch

Git 远程/共享预提交 Hook

将一个官方存储库作为远程存储库,并从中克隆多个本地存储库,是否可以在该主存储库上编写预提交Hook脚本并在它的所有克隆上强制执行? 最佳答案 我不这么认为,因为钩子(Hook)没有被克隆。可能是如果该Hook脚本本身是版本化的,然后链接到克隆服务器中的(符号链接(symboliclink))(前提是他们的操作系统支持该链接功能)。或者如果钩子(Hook)是gittemplatedirectory的一部分用于创建克隆(这只会确保它们存在于克隆存储库中,不能保证它们实际被使用和执行)。但我认为没有任何“中央”方式来强制执行提交。正如Je