首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预提交钩子执行正确,但之后不提交更改。

预提交钩子执行正确,但之后不提交更改。
EN

Stack Overflow用户
提问于 2022-09-10 15:12:39
回答 1查看 138关注 0票数 0

我正在使用php-cs-fixer,并决定尝试将该命令放入pre-commit钩子中。#!/bin/sh

代码语言:javascript
复制
echo "php-cs-fixer pre commit hook start"

SRC="src/Controller/Api/FlowsController.php"

exec tools/php-cs-fixer/vendor/bin/php-cs-fixer fix $SRC

echo "php-cs-fixer pre commit hook finish"

因此,php-cs-fixer命令工作正常,但修改后不会执行。当钩子完成时,我也看不到最后的echo语句。我看到的是:

代码语言:javascript
复制
toma.tomov@MBP-TOMA myproject % git commit -m "test"
php-cs-fixer pre commit hook start
Loaded config default from "/Users/toma.tomov/Desktop/projects/myproject/.php-cs-fixer.dist.php".
Using cache file ".php-cs-fixer.cache".
Paths from configuration file have been overridden by paths provided as command arguments.
   1) src/Controller/Api/FlowsController.php

Fixed all files in 2.028 seconds, 26.000 MB memory used
[PHP-CS-FIXER 9550f90a22] test
 1 file changed, 2 insertions(+)
EN

回答 1

Stack Overflow用户

发布于 2022-09-10 18:33:07

一般情况下,预提交钩子不应该试图更改将要提交的内容。取决于您如何调用Git,它们可能无法更改将要提交的内容。因此,预提交钩子只应验证您计划提交的内容是否正确(根据您希望执行的任何正确性规则)。

上面的规则有一些例外,但在违反这些规则之前,您必须对Git的内部操作有很多了解。如果您想在提交之前重新格式化或以其他方式修复文件,那么您应该作为一个单独的步骤来完成此操作。

提示:根本不要运行git commit。运行您自己的程序,它运行文件修复步骤,然后运行git add,然后运行git commit。您可以保留检查钩子(它验证要提交的内容看起来正确,然后允许或拒绝提交),而且由于文件修复步骤在git add步骤之前已经运行,所以一切都应该通过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73672925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档