git で制御されたディレクトリ (実際にはホーム ディレクトリ) があり、その中には無視されたディレクトリ (ごみ箱スペースや他の VCS によって制御されているディレクトリなど) があります。ディレクトリがバージョン管理されているかどうか、および管理されている場合はどの VCS によって管理されているかを bash プロンプトに表示できるようにしたいのですが、たとえば、git rev-parse
常に最上位の.git
ディレクトリが検索されます。
追跡されていないディレクトリにいるかどうかをgitに尋ねる方法はありますか?
これが機能することがわかりました:
if ! git rev-parse 2>&/dev/null; then
echo "not in git"
else
PREFIX=$(git rev-parse --show-prefix)
if [ -z "$PREFIX" ]; then
echo "at git top level"
elif [ -z $(cd $(git rev-parse --show-toplevel); \
git ls-files -o --directory "${PREFIX%%/}")
echo "tracked by git"
else
echo "untracked"
fi
fi
ただし、非常にハックで壊れやすいようです。より良い方法はありますか?