标签: githooks

跟踪.git/hooks中钩子的变化

有没有办法跟踪git hook的变化?我有三个钩子只出现在我的机器上,而不是当我的其他开发人员拿到时.试图git add不起作用.

git githooks

48
推荐指数
3
解决办法
7849
查看次数

我如何在Git中编写预合并挂钩?

问题就是这一切.有没有办法在合并之前执行操作?我猜有一种方法可以使用pre-commit钩子,但我不太确定.

git merge githooks

43
推荐指数
2
解决办法
2万
查看次数

发布提交挂钩未运行

我的帖子提交挂钩在git之后没有运行.我已经验证了如果我从终端运行它,钩子确实有效.钩子中的代码是:

#!/bin/sh
#.git/hooks/post-commit
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git
Run Code Online (Sandbox Code Playgroud)

我确实将文件重命名为./.git/hooks/中的post-commit,权限是-rwxr-x-r-x如此,我不知道为什么它不起作用.

git bash github post-commit githooks

41
推荐指数
3
解决办法
3万
查看次数

Git预提交挂钩没有在Windows上运行

我刚刚开始研究Git钩子,但我似乎无法让它们运行.

我设置了一个本地存储库,所以我的项目文件夹中现在有一个'.git'目录.我已将".cmd"文件添加到名为"pre-commit.cmd"的C:/path/to/my/project/.git/hooks目录中.这是这个文件的内容:

echo "HOOK RUNNING"
echo. 2>C:/path/to/my/project/.git/hooks/EmptyFile.txt
Run Code Online (Sandbox Code Playgroud)

这应该回显文本"HOOK RUNNING"并在该目录中创建一个空文本文件.但是,如果我通过我的IDE(NetBeans)提交更改或使用Git Bash提交,它们似乎都没有运行我的预提交挂钩,因为没有创建文件.

我的理解是,你需要做的就是使用钩子的名称来添加一个可执行文件(正如我所做的那样).难道我做错了什么?

注意:这是在Windows 7 PC上.

windows git version-control githooks

40
推荐指数
4
解决办法
3万
查看次数

如何删除git hooks

我在预提交文件中设置了一个git钩子,git pull在任何提交之前运行.现在我删除了该文件并重新启动了我的计算机多次,但是在我的提交之前该挂钩仍在运行.

如何完全删除或禁用它?

git githooks

40
推荐指数
3
解决办法
3万
查看次数

37
推荐指数
4
解决办法
2万
查看次数

如何设置一个Git钩子,以便在推送到ssh://peter@foo.com/~/bar.com.git后,它会转到〜/ bar.com并做一个git pull?

我被建议在远程服务器上进行设置

foo.com/~/bar.com       # live webpage content
foo.com/~/bar.com.git   # a bare repo
Run Code Online (Sandbox Code Playgroud)

所以,从我的本地机器,我可以做到

git push
Run Code Online (Sandbox Code Playgroud)

它会推到foo.com/~/bar.com.git远程机器上(完整的路径是ssh://peter@www.foo.com/~/bar.com.git

如何添加一个钩子,以便在推送之后,远程服务器将cd ~/bar.com执行git pull以便更新所有内容(与本地计算机相同)?(不需要git update为Mercurial 运行吗?)

(这是关系到不能混帐克隆一个服务器上的文件夹,然后编辑和git推? 现在我可以ssh到foo.comcd ~/bar.com和那里等候,做一个git pull每当经过一个git push从本地机器,但它会是不错的它自动完成)

更新:如果您了解具体细节以及如何操作,请仅发布答案.如果您谷歌并在此发布第一个或第二个谷歌结果,它将无济于事.

更新2:我去了~/bar.com.git/hooks并添加了一个post-receive包含内容的新文件:

#!/bin/bash

cd ~/bar.com
git pull ../bar.com.git master
Run Code Online (Sandbox Code Playgroud)

而且chmod 755 post-receive,如果我编辑本地计算机上的文件,然后git com -m "ok"git push,它不进行更改进入远程机器的文件夹~/bar.com

git githooks

37
推荐指数
1
解决办法
3万
查看次数

更改默认的git hooks

不确定这是否可以在git中使用(我没有找到它,但我可能在我的搜索中使用了错误的词汇表),但是能够修改和启用钩子作为所有新存储库的默认值是有用的(在我的意思是创建的时间)所以每次创建新的存储库时都不必自定义这些.看起来这样做的简单方法是编写一个包装器,在我创建一个新的存储库时设置我的钩子和chmods,但如果有一种内置到git中的方法,我宁愿使用它而不是使用不必要的包装器脚本,而不是四处闲置.


澄清从评论复制到现在删除的答案:

我的问题是,是否可以更改所有新存储库的默认行为,因此不需要每次为每个新存储库以相同的方式自定义它们.简单的答案是编写一个包装器来创建和自定义repos(它生成钩子脚本并对它们进行chmod),但似乎这个默认行为也应该是可自定义的,而不必这样做.

git githooks

35
推荐指数
3
解决办法
2万
查看次数

只有在测试通过时才在git中提交

我最近开始使用git,并开始进行单元测试(使用Python的unittest模块).我想在每次提交时运行我的测试,并且只有在它们通过时才提交.

我猜我需要用pre-commit/hooks,我已经成功地使它运行测试,但我似乎无法找到一种方法来阻止,如果他们失败测试的承诺.我正在运行测试make test,而后者正在运行python3.1 foo.py --test.似乎我没有得到不同的退出条件,无论测试通过还是失败,但我可能在错误的地方寻找.

编辑:我想在这里做一些不寻常的事吗?我原以为这是一个常见的要求......

编辑2:万一人们无法阅读评论,问题是unittest.TextTestRunner不会以非零状态退出,测试套件是否成功.要抓住它,我做了:

result = runner.run(allTests)
if not result.wasSuccessful():
    sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

python git unit-testing githooks

35
推荐指数
2
解决办法
8355
查看次数

在更新后的挂钩中查找Git分支名称

每次将更新发送到我们的远程存储库时,我正在执行一个程序来提醒CruiseControl.我正在使用Git post-update钩子.

如果我能找到已经提交的分支,那将是很好的,所以我可以使用它来通知CruiseControl要构建哪个分支.有没有办法在更新后的钩子中访问分支名称?

git shell cruisecontrol githooks

33
推荐指数
1
解决办法
2万
查看次数