我有一个使用gitolite设置的中央git repo.
我想设置一个钩子,这样每当用户推送到repo时,它会执行其他地方的拉动,然后进行一些自动化测试.
到目前为止,我只想表现它.
在hooks目录中,我在更新后创建了以下脚本名称:
#!/bin/sh
cd /home/git/www/epicac
git pull
Run Code Online (Sandbox Code Playgroud)
当我使用./post-update调用此脚本时,它完全符合我的要求.
但是,每当我挂钩时自动调用它,我得到:致命:不是git存储库:'.'
知道为什么会这样吗?
我在pre-push钩子中添加了类似的东西:
gs0=$(git status)
pip-dump
gs1=$(git status)
if [ "gs0" != "gs1" ]
then
git commit -m "pip-dump"
fi
Run Code Online (Sandbox Code Playgroud)
(这是更新我的点数要求文件)
看起来推送不是推动新提交,而是HEAD在脚本开头的时候.
如何解决?
我想使用git将网站部署到测试服务器.我的网站是一个用gulp构建的wordpress主题,存储库看起来像
theme.git/
-- gulpfile.js
-- src/
-- build/
Run Code Online (Sandbox Code Playgroud)
我按照这里和这里解释的步骤,在服务器上设置了一个裸存储库,配置git工作树的位置,并写一个post-receive挂钩来检查repo到那个位置.
问题是我只想将build/文件夹移动或复制到服务器上的位置.我唯一的想法就是写一个post-receive hook将repo拉到一个工作树位置(因为我觉得我读过那个裸的repos通常都没有工作树),然后cp是build文件夹到wp-content/themes/
它似乎不必要地复杂,所以我想知道是否有更有效/更常见的方式来解决它.谢谢!
你如何跨各种平台(比如*nix和windows)管理git pre/post commit钩子?
是否为此方案推荐了哪些最佳做法?
我一直在寻找复制品,虽然其中一些有类似的标题,但我没有发现任何人和我有同样的问题,所以这里有.
我编写了一个运行的脚本,pre-commit并使用输出git status --porcelain来编译已更改的项目中的任何LESS文件.这部分工作正常.但我希望.css文件包含在当前提交中.所以除了运行编译器之外,我的脚本还会运行git add <filename>.而这里的事情变得棘手.
该文件将添加到索引中,但它不是当前提交的索引.所以,如果我修改style.less,并运行git commit -a(或手动git add style.less)编译器应生成style.css和style.min.css并将其添加到当前提交.但是我注意到的行为只是style.less提交了,尽管有两个.css文件被添加到下一次提交的索引中.
所以我的问题是:有没有办法在预提交钩子中向提交添加文件,以便它们对该提交生效?请注意,在运行预提交挂钩之前,.css不会修改这两个文件,因此我不能在此之前添加它们.我也知道我可以以非零状态退出钩子,因此提交被取消但文件被添加,但我希望避免这种情况.有更好的想法吗?
有没有我可以用于合并冲突的git钩子?失败之后git merge,能够编写一个打开所有冲突文件的脚本会很棒$EDITOR.不幸的是,post-merge如果存在冲突,钩子不会运行,并且从我在githooks手册页中看到的,没有其他适用的钩子.
我想知道我是否错过了某些东西,或者是否有其他替代方案没有将'git merge'混淆到一个函数或类似的东西.
谢谢,克里斯
我有一个php项目,当我从另一个存储库中取出并且composer.lock文件被更改时,我应该运行composer.phar install --dev.git如何自动警告我/问我是否要运行此命令?我想某种钩子可以解决这个问题,但是我怎样才能获得有关拉入之前和之后发生了什么变化的信息?
我想在给定存储库的克隆中始终存在一些钩子.有没有办法在存储库中的.git/hooks中添加文件?
谢谢
我正在为Git编写一个预提交钩子,它运行pyflakes并检查修改后的文件中的制表符和尾随空格(Github上的代码).我想通过要求用户确认来覆盖挂钩,如下所示:
answer = raw_input('Commit anyway? [N/y] ')
if answer.strip()[0].lower() == 'y':
print >> sys.stderr, 'Committing anyway.'
sys.exit(0)
else:
print >> sys.stderr, 'Commit aborted.'
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
此代码产生错误:
Commit anyway? [N/y] Traceback (most recent call last):
File ".git/hooks/pre-commit", line 59, in ?
main()
File ".git/hooks/pre-commit", line 20, in main
answer = raw_input('Commit anyway? [N/y] ')
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)
甚至可以在Git钩子中使用raw_input()或类似的函数,如果是的话,我做错了什么?
调试git-hooks的最佳方法是什么?
我更喜欢的方法是添加语句以将输出添加到日志文件中.例如,以下内容.
echo 'post-receive executed' >> hooks.log
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法或记录方法?