如何在 .git 文件夹中的每个命令(例如"fatal: This operation must be run in a work tree")上发送消息



.git文件夹中,消息

fatal: This operation must be run in a work tree

标题中的来自我的输入,如ls,cd .,甚至echo hi等。

我的问题不是如何解决这个问题,也不是问为什么会出现这个问题。

我想为我自己的目的(当PWD位于指定位置时,如/home/user_name/target,如果可能的话)向用户(在任何命令上)发送消息。它是如何安装的?我的环境是macOS。(如果我有任何线索,我会在任何其他操作系统上找到解决方案)

(我的问题可能与Git无关)

我不清楚你为什么想要这个。简短的回答是否定的,bash、cshell、zsh、ksh等没有这样的钩子来调用函数并根据该函数的返回值决定不执行命令。

要做这样的事情,你需要你自己的shell(解释器),你的代码将执行你想要在。git目录中执行的检查,并在你决定需要打印的时候打印该消息。

包装shell命令看起来微不足道,但完整的shell功能并非如此。注意:下面没有测试

#!/bin/bash
while [ read line ]
do
if inGitDir 
then
if [ $line != "pwd" ]
then
echo "fatal: This operation must be run in a work tree"
else
exec $line
fi
done

这只是一个游戏示例,因为真正的shell/解释器处理多个命令,包括重定向、子shell、终端控制组、Suspend、Resume等。

如果您想这样做(仍然),那么寻找bash或您最喜欢的shell的源代码并实现它。: -)

相关内容

  • 没有找到相关文章