我有一个严格的预提交钩子设置与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的问题.
由于它的简单性,我们使用放置在共享磁盘上的远程存储库,使用文件系统路径(\ server\share)访问它.在这种情况下,是否可以运行在远程存储库中定义的钩子脚本?我已经定义了一个,但它似乎没有启动(在钩子脚本中使用无效编辑测试,女巫应该导致错误).
我希望我的远程存储库拒绝任何包含包含选项卡的文件的推送,但前提是该文件属于某个类(基于文件名).那可能吗?
我看了一下update hook
githooks,我认为这是正确的.
所以简而言之,如果出现以下情况,应该拒绝推送
*.cpp
,*.h
,CMakeLists.txt
)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.怎么可以简化/自动化?
https://github.com/typicode/husky能够自动运行 git hooks,以便在存储库中的团队之间共享它们。
这怎么可能行得通呢?由于挂钩需要位于.git/hooks
未添加到存储库中的位置。
它是否包装git
命令和拦截命令,并在命令发生时运行挂钩?
我想为 python 和 php 项目重现此行为,而不需要依赖 npm 或 node。
我正在尝试使用预提交来管理Black作为 Git 预提交挂钩,但我一定是做错了。
在我的预提交配置文件中,我有:
- repo: https://github.com/psf/black
rev: 19.3b0
hooks:
- id: black
Run Code Online (Sandbox Code Playgroud)
我期望发生的是 Black 只修改暂存文件,并且提交成功。因为 Black 的全部意义在于它自动强制执行 Python 代码样式规则,所以不会提出任何问题。
当我暂存(非黑色兼容)文件并尝试提交时实际发生的情况:黑色继续修改文件以使其符合预期……但问题是它返回了“失败”。所以提交失败。然后我必须取消暂存文件,然后在再次提交之前重新暂存它......只有这样提交才能成功。
这是一个巨大的烦恼,不可能是预期的工作流程?
我究竟做错了什么?
我有一个使用gitolite设置的中央git repo.
我想设置一个钩子,这样每当用户推送到repo时,它会执行其他地方的拉动,然后进行一些自动化测试.
到目前为止,我只想表现它.
在hooks目录中,我在更新后创建了以下脚本名称:
#!/bin/sh
cd /home/git/www/epicac
git pull
Run Code Online (Sandbox Code Playgroud)
当我使用./post-update调用此脚本时,它完全符合我的要求.
但是,每当我挂钩时自动调用它,我得到:致命:不是git存储库:'.'
知道为什么会这样吗?
我有一个带有预提交钩子的git repo,它故意在100%的时间内失败.
cat .git/hooks/pre-commit
> exit 1
Run Code Online (Sandbox Code Playgroud)
如果我尝试通过命令行提交,它会按预期失败.但是,如果我从egit提交,则忽略钩子并且提交更改.
egit/jgit不能识别挂钩吗?这有解决方法吗?
提前致谢!
我正在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找到 .
状态:以下所有正则表达式都无法编译.这可能表示我的脚本存在问题或语法不兼容.
我想使用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/
它似乎不必要地复杂,所以我想知道是否有更有效/更常见的方式来解决它.谢谢!
githooks ×10
git ×9
python ×2
deployment ×1
egit ×1
flake8 ×1
github ×1
husky ×1
jgit ×1
pre-commit ×1
python-black ×1
regex ×1
shell ×1
windows ×1
wordpress ×1