git Bash获取cygwin终端的pid

gajydyqb  于 2023-04-19  发布在  Git
关注(0)|答案(1)|浏览(126)

我使用git pre-commit钩子来运行一个基于clang-format的自动格式化脚本format-src.sh。有些开发人员使用github-desktop来安装clang-format软件包。因此,我决定从precommit钩子调用cygwin bash。在cygwin中,使用cygwins软件包管理器来安装clang-format软件包是很容易的。
cygwin shell的调用是按照以下方式完成的:Creating batch file to start cygwin and execute specific command

预提交

#!/bin/sh
echo "Format src accordingt to format-src.sh"

CYGWIN_DIR=c:/cygwin64/
PROJ_DIR=/cygdrive/c/Projekte/ExampleProj

eval '$CYGWIN_DIR/bin/mintty $CYGWIN_DIR/bin/bash --login -c "cd $PROJ_DIR; ./format-src.sh"'

我的问题是,pre-commit钩子似乎没有等到cywin终端mintty完成了skript format-src.sh。因此,提交完成时,自动格式化脚本仍然运行。
我怎么能等到在mintty中运行的脚本完成呢?

fdbelqdn

fdbelqdn1#

我想使用$!。但结果是,minttyformat-src.sh脚本触发时更改了pid。我们必须从ps监视其状态。

#!/bin/sh
echo "Format src accordingt to format-src.sh"

CYGWIN_DIR=c:/cygwin64/
PROJ_DIR=/cygdrive/c/Projekte/ExampleProj

eval '$CYGWIN_DIR/bin/mintty $CYGWIN_DIR/bin/bash --login -c "cd $PROJ_DIR; ./format-src.sh"'

echo "Monitor mintty status"
while true; do
    ps -s | grep mintty || break
    sleep 1
done
echo "Cygwin mintty finished"

相关问题