在我的 中.zshrc
,我使用以下 git 命令(来自zsh 提示:检查是否在 git 存储库内且未被 git 忽略)来检查我是否在 git 存储库中,以便我可以相应地更改提示:
git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 ]] ; then
但这个命令并不能区分我是否拥有这个存储库。这可能由系统上的其他用户拥有,但我没有写入权限。
是否可以检查我是否拥有该.git
目录或是否有写权限?
答案1
想必您关心.git
目录本身的写权限;如果是这样,
git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 && -w "$(git rev-parse --show-toplevel)/.git" ]]; then
then
仅当当前目录是 git 存储库中不可忽略的目录并且相关.git
目录对于当前用户可写时才会运行该块。
您git rev-parse
也可以用作 git 存储库内部的测试;所以如果你不关心 git 存储库中被忽略的目录,
if top="$(git rev-parse --show-toplevel 2>/dev/null)" && [ -w "$top/.git" ]; then
将确定当前工作空间的.git
目录(如果有)是否可写。
另请参阅[ -O "$top/.git" ]
检查您是否自己的test
该目录(不是标准的,但大多数s / shell都支持,包括zsh
)