gpt4 book ai didi

Git 预提交 Hook : changed/added files

转载 作者:IT王子 更新时间:2023-10-29 00:40:11 24 4
gpt4 key购买 nike

我正在编写一个预提交 Hook 。我想对所有扩展名为 .php 的文件运行 php -l。但是我被卡住了。

我需要获取暂存的新/更改文件的列表。应排除已删除的文件。

我尝试过使用 git diffgit ls-files,但我想我需要帮忙。

最佳答案

获取相同列表的一种稍微简洁的方法是:

git diff --cached --name-only --diff-filter=ACM

这将返回需要检查的文件列表。

但是仅仅在你的工作副本上运行 php -l 可能不是正确的做法。如果您正在进行部分提交,即仅选择当前工作集和提交的 HEAD 之间差异的子集,那么测试将在您的工作集上运行,但将验证您的工作集上从未存在过的提交磁盘。

要正确执行此操作,您应该将整个暂存图像提取到一个临时区域并在那里执行测试。

rm -rf $TEMPDIR
mkdir -p $TEMPDIR
git checkout-index --prefix=$TEMPDIR/ -af
git diff --cached --name-only --diff-filter=ACM | xargs -n 1 -I '{}' \bin\echo TEMPDIR/'{}' | grep \\.php | xargs -n 1 php -l

参见 Building a better pre-commit hook for Git用于另一个实现。

关于Git 预提交 Hook : changed/added files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com