我正在研究git的一些更高级的用法,我认为hooks是我想要的方式,也许有人可以在这里给我一些建议。我的计划是拥有一个包含3个分支(开发、暂存和生产)的git存储库。我希望对这3个分支中的每一个进行提交,以在提交后触发不同的脚本。git有能力做到这一点还是我找错树了?提前致谢。 最佳答案 在提交后Hook中,您可以执行以下操作:if[`gitrev-parse--abbrev-refHEAD`=="development"];thenecho"development-script"elif[`gitrev-parse--abbrev
我想Hook到一个新分支的创建。创建分支时或完成第一次推送时。一种或两种都可能吗? 最佳答案 接受的答案是使用updatehook。我不确定这对每个人都有帮助,因为那是服务器端Hook。如果你推送你的新分支,它会起作用,但如何保持它纯粹在本地呢?我正在创建从不推送的本地分支,所以我使用post-checkout代替。创建分支后,您通常不会在对它进行任何其他操作之前检查它吗?当我检测到一个新分支时,我会修改它并自动添加一个提交。之后,我可以根据它是否有提交历史来确定这是否是checkout时的新分支。这是我的做法(我的钩子(Hook)
在使用谷歌搜索将所有提交通过电子邮件发送到远程/共享存储库后,我找到了Git的接收后Hook。这个post-receivehook的问题是它只能提供提交者、日志消息、日期、受影响的文件的能力。我还想在电子邮件中查看受影响的文件生成的补丁,以查看对代码进行了哪些更改。Subversion做得相当好。有没有人有解决方案来解决可能传递给执行此操作的接收后Hook的环境变量?或者更好的是,一个已经准备好的例子?谢谢大家! 最佳答案 最近的Git版本应该安装一个post-receive-email脚本。其中,它说:hooks.showrevT
我想在Git提交之前检查提交消息。我使用预提交Hook来执行此操作,但我找不到在.git/pre-commit脚本中获取提交消息的方法。我怎么能得到它? 最佳答案 在pre-commit钩子(Hook)中,提交消息通常还没有被创建1。您可能想改用prepare-commit-msg或commit-msgHook之一。有一个nicesectioninProGit这些Hook的运行顺序,以及您通常会用它们做什么。1.异常(exception)情况是提交者可能已经使用-m提供了提交消息,但是pre-commitHook仍然无法访问该消息,
我需要使用多个预提交Hook脚本。不确定如何处理它们。是否应该将它们全部组合成一个大型预提交脚本?如果不是,如何处理多个预提交脚本? 最佳答案 Shouldallofthembecombinedintoonesinglelargepre-commitscript?是和否:你只能声明一个预提交脚本,所以这个脚本应该负责:调用实际的预提交脚本选择调用这些脚本的顺序。所以:一个预提交脚本调用多个脚本,每个脚本允许或不允许(及其退出状态)继续提交。 关于git-处理多个预提交Hook,我们在St
我们在项目中使用自定义编写的GitHook。Hook存储在项目的存储库中,当它们发生变化时,要获得新版本,每个用户必须手动将它们复制到他的.git/hooks目录中。这样比较不方便。改进这一点的一种方法是使.git/hooks成为工作树的符号链接(symboliclink)。但这意味着每个分支(甚至是用户正在开发的本地特性分支)都应该有最新版本的钩子(Hook)。这也不方便。你会如何解决这个问题? 最佳答案 维护一个单独的钩子(Hook)存储库并将符号链接(symboliclink)到该存储库。我同意,如果Git有一个用于传播h
我想设置一个git钩子(Hook),它根据传入的标签创建一个CDN风格的目录结构。因此,例如,如果本地存储库中的最后一个标签是“v1.2.1”并且我使用“v1.2.2”提取提交,它应该看到新标签并将存储库直接克隆到一个新的(../1.2.2)相应地。我很确定我想将它附加到接收后,但是我在文档中找不到任何关于githooks的关于如何读取传入标签的内容。它们是在不同的钩子(Hook)上交付的吗?我真的需要让shell脚本运行git命令来查看是否有任何新提交有新标签吗?谢谢! 最佳答案 标签和其他标签一样是引用(比如提交)。如果标签被推
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我最近需要编写git钩子(Hook),以便所有提交都引用特定的票证。我希望有一个地方可以开始学习。progit书中的所有内容都是用Ruby编写的。由于Ruby不是我的强项,任何人都可以分享有关用其他语言编写的githooks的教程吗?(我特别喜欢Python或Bash脚本。)
我们想在外部数据库中存储一些关于提交的元信息。在克隆或checkout期间,应引用此数据库,我们将元信息复制到克隆的存储库中的文件中。需要数据库而不是仅仅使用文件是为了索引和搜索等......我想如果有一个克隆钩子(Hook),我们就可以触发它。我无法在.git/hooks中的示例中找到克隆Hook。有吗?checkout后Hook是客户端的唯一可能性吗? 最佳答案 好的,一种方法是使用clone--template选项。指定客户端Hook将存储为--template开关值的位置。钩子(Hook)被复制到克隆中,并立即触发check
我得到错误:remote:error:cannotrunhooks/post-receive:Nosuchfileordirectory尝试推送到远程时。post-receivce文件存在于正确的位置(testnew.git/hooks)并包含:#!/bin/bash2exportGIT_DIR=/var/www/testnew/testnew/.git/exportGIT_WORK_TREE=/var/www/testnew/testnew/cd/var/www/testnew/testnew/echo"herewego..."gitfetchgitmergeorigin/maste