我们想制作一些我们可以共享的基本钩子脚本 - 例如预格式化提交消息.Git有通常存储在其下的钩子脚本<project>/.git/hooks/.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播.
有没有一种好方法可以帮助每个人获得正确的钩子脚本?我可以让这些钩子脚本指向我的仓库中的版本控制脚本吗?
它被认为是一种不好的做法 - 将.git/hooks放入项目存储库(例如,使用符号链接).如果是的话,为不同的git用户提供相同的钩子的最佳方法是什么?
我编写了自己的自定义后合并钩子,现在我在我的主项目文件夹中添加了一个"hooks"目录(因为git不跟踪.git/hooks中的更改),在某处我读到我可以从钩子中创建一个符号链接到.git/hooks所以每次有人更改时我都不必将文件从一个文件夹复制到另一个文件夹,所以我尝试了:
ln -s -f hooks/post-merge .git/hooks/post-merge
但它似乎没有用,任何想法为什么?"ln hooks/post-merge .git/hooks/post-merge"工作正常,但制作一个硬链接就像copyin一样我猜....
这实际上源于我之前的问题,其中一个答案让我想知道人们如何以不同的方式使用scm/repository进行开发.
从SVN切换到Git后,我们失去了通过pre-commitsubversion服务器上的钩子强制执行编码标准的能力.
使用Git,您只能在客户端上使用预提交挂钩,而这些挂钩无法以任何方式强制执行.更糟糕的是,我们让开发人员使用所有三个主要操作系统,因此在Linux或OS X上运行的预提交挂钩不会自动在Windows上运行.
要走的路是pre-receive在服务器上实现一个钩子,但解决方案并不像看起来那么容易:
想象一下,开发人员做了20次提交并希望推动它们.所有预提交和预收到钩,我知道(的1,2)只检查单的提交,这将最终失败,并防止推.现在,开发人员修复了问题并进行了另一次提交,并尝试再次推送.由于钩子检查单个提交,它将再次失败.
所以我们需要一个pre-receive钩子,它会在所有要推送的提交中生成所有已更改文件的列表,并仅在当前状态下运行phpcs.
这样的钩子脚本是否已存在?哪里?
编辑:似乎有一个脚本可以创建该文件列表 - 不幸的是在Python中,但可以移植.我仍然对PHPCS的预制解决方案感兴趣:)
我有一个预提交钩子,我想将它添加到存储库,以便通过检查它,我的同事立即将它.
但是,如果我尝试添加它(在我的项目的根目录中),我得到以下结果:
$ git add .git/hooks/pre-commit
error: Invalid path '.git/hooks/pre-commit'
error: unable to add .git/hooks/pre-commit to index
Run Code Online (Sandbox Code Playgroud)
任何想法,如果这项工作,如何实现我的目标?
是否有任何预制的解决方案可以在Git提交钩子中强制执行优秀的Python标准?
有没有办法在本地检出中自动化这个过程(类似于Bazaar,可以将提交挂钩推送到客户端)?当你签出一个repo时,它应该是安装了commit hooks,没有进一步的工作/命令来运行.
例如,如果您的.py文件有一个标签,则提交将中止,并且发送一个机器人来打开开发人员.
如何创建可供团队中的每个人使用的全局预提交挂钩?基本上,我希望无论何时克隆远程存储库,他都应该默认获得这个全局预提交钩子.
我遇到了这个更改默认git钩子,Git提交钩子 - 全局设置 和这个https://coderwall.com/p/jp7d5q,它建议创建一个具有公共钩子的模板目录,并设置init.templatedir指向此目录.但是,这仅适用于在您自己的计算机上为自己设置默认挂钩.默认情况下,如何将预提交挂钩提供给整个团队?
我正在尝试添加一个git预提交钩子,它将检查所有已更改的文件和新文件TODO:.
我试过了
#!/bin/sh
. git-sh-setup # for die
git-diff-index -p -M --cached HEAD -- | grep '^+' |
grep TODO: && die Blocking commit because string TODO: detected in patch
:
Run Code Online (Sandbox Code Playgroud)
我在类似的问题中看到了,但没有运气.
在用例或工作逻辑方面,git中的pre-push和pre-receive hook之间是否有区别?
我从他们的文档中可以理解的唯一区别是他们收到的输入 -
1. 预推:有关推送内容的信息在挂钩的标准输入上提供了表格线 - 本地参考SP本地sha1 SP遥控器SP遥控器sha1 LF
2. 预接收:对于每个要更新的ref,它在标准输入上接收格式的行 -
旧值SP新值SP ref-name LF
但是,我想知道每个是否有特定的用例挂钩还是可以互换使用?