标签: githooks

Flake8无法识别内置异常

我有一个严格的预提交钩子设置与flake8,所以我不能承诺,直到它开心.这通常是一件好事,但它会导致一些看似没问题的问题.

我无法让Flake8识别出来FileNotFoundError.

example.py

try:
    pass
except FileNotFoundError:
    pass
Run Code Online (Sandbox Code Playgroud)

这是足以使Flake8生成错误的代码

$ flake8 example.py
example.py:3:8: F821 undefined name 'FileNotFoundError'
$ python example.py # no error
$ python3 example.py # no error
Run Code Online (Sandbox Code Playgroud)

我检查了python文档,FileNotFoundError是一个'内置'异常,所以我认为我不应该从任何地方导入它,而我的python解释器没有抱怨它,只是看起来像flake8的问题.

python githooks flake8

21
推荐指数
2
解决办法
5873
查看次数

如何在Windows上运行git hook脚本,通过文件系统使用存储库?

由于它的简单性,我们使用放置在共享磁盘上的远程存储库,使用文件系统路径(\ server\share)访问它.在这种情况下,是否可以运行在远程存储库中定义的钩子脚本?我已经定义了一个,但它似乎没有启动(在钩子脚本中使用无效编辑测试,女巫应该导致错误).

windows git githooks

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

防止在某些文件中推送包含选项卡的git(例如*.cpp,*.h,CMakeLists.txt)

我希望我的远程存储库拒绝任何包含包含选项卡的文件的推送,但前提是该文件属于某个类(基于文件名).那可能吗?
我看了一下update hookgithooks,我认为这是正确的.

所以简而言之,如果出现以下情况,应该拒绝推送

  1. 有所列类型的一个文件(*.cpp,*.h,CMakeLists.txt)
  2. 包含一个或多个制表符.

git githooks

18
推荐指数
1
解决办法
4993
查看次数

如何自动化Pivotal Tracker和Github集成?

Pivotal Tracker和Github具有很好的集成性:一旦设置完成,每个以Pivotal Tracker ID为前缀的提交将自动显示在相应的Pivotal Ticket下,例如:

git commit -am '[#1234567] my new changes'
git push origin
Run Code Online (Sandbox Code Playgroud)

将使用github提交链接自动将评论"我的新更改"添加到1234567 Pivotal Ticket.

但是,每次都很容易忘记添加票证ID.怎么可以简化/自动化?

git github pivotaltracker githooks

18
推荐指数
1
解决办法
9344
查看次数

哈士奇的工作原理是什么?

https://github.com/typicode/husky能够自动运行 git hooks,以便在存储库中的团队之间共享它们。

这怎么可能行得通呢?由于挂钩需要位于.git/hooks未添加到存储库中的位置。

它是否包装git命令和拦截命令,并在命令发生时运行挂钩?

我想为 python 和 php 项目重现此行为,而不需要依赖 npm 或 node。

git githooks husky

18
推荐指数
2
解决办法
4962
查看次数

black as pre-commit hook 总是让我的提交失败

我正在尝试使用预提交来管理Black作为 Git 预提交挂钩,但我一定是做错了。

在我的预提交配置文件中,我有:

-   repo: https://github.com/psf/black
    rev: 19.3b0
    hooks:
    -   id: black
Run Code Online (Sandbox Code Playgroud)

我期望发生的是 Black 只修改暂存文件,并且提交成功。因为 Black 的全部意义在于它自动强制执行 Python 代码样式规则,所以不会提出任何问题。

当我暂存(非黑色兼容)文件并尝试提交时实际发生的情况:黑色继续修改文件以使其符合预期……但问题是它返回了“失败”。所以提交失败。然后我必须取消暂存文件,然后在再次提交之前重新暂存它......只有这样提交才能成功。

这是一个巨大的烦恼,不可能是预期的工作流程?

我究竟做错了什么?

git pre-commit githooks python-black pre-commit.com

18
推荐指数
3
解决办法
7983
查看次数

从git post-update钩子调用'git pull'

我有一个使用gitolite设置的中央git repo.

我想设置一个钩子,这样每当用户推送到repo时,它会执行其他地方的拉动,然后进行一些自动化测试.

到目前为止,我只想表现它.

在hooks目录中,我在更新后创建了以下脚本名称:

#!/bin/sh  
cd /home/git/www/epicac
git pull
Run Code Online (Sandbox Code Playgroud)

当我使用./post-update调用此脚本时,它完全符合我的要求.

但是,每当我挂钩时自动调用它,我得到:致命:不是git存储库:'.'

知道为什么会这样吗?

git shell githooks

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

Egit挂钩不会被触发

我有一个带有预提交钩子的git repo,它故意在100%的时间内失败.

cat .git/hooks/pre-commit
> exit 1
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过命令行提交,它会按预期失败.但是,如果我从egit提交,则忽略钩子并且提交更改.

egit/jgit不能识别挂钩吗?这有解决方法吗?

提前致谢!

git githooks egit jgit

17
推荐指数
1
解决办法
5649
查看次数

如何检查有效的Git分支名称?

我正在git post-receive用Python开发一个钩子.提供的数据stdin与类似的行

ef4d4037f8568e386629457d4d960915a85da2ae 61a4033ccf9159ae69f951f709d9c987d3c9f580 refs/heads/master
Run Code Online (Sandbox Code Playgroud)

第一个哈希是old-ref,第二个哈希是new-ref,第三列是要更新的引用.

我想将它分成3个变量,同时也验证输入.如何验证分支名称?

我目前正在使用以下正则表达式

^([0-9a-f]{40}) ([0-9a-f]{40}) refs/heads/([0-9a-zA-Z]+)$
Run Code Online (Sandbox Code Playgroud)

这不接受所有可能的分支名称,如man git-check-ref-format所示.例如,它排除名称build-master为有效的分支.

奖励标记

我实际上想要排除任何以"build-"开头的分支.这可以在同一个正则表达式中完成吗?

测试

鉴于下面的答案很好,我写了一些测试,可以在https://github.com/alexchamberlain/githooks/blob/master/miscellaneous/git-branch-re-test.py找到 .

状态:以下所有正则表达式都无法编译.这可能表示我的脚本存在问题或语法不兼容.

python regex git githooks

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

Git Post-receive钩子与工作树的一部分

我想使用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/

它似乎不必要地复杂,所以我想知道是否有更有效/更常见的方式来解决它.谢谢!

git deployment wordpress githooks

17
推荐指数
1
解决办法
683
查看次数