zsh:現在私のGitリポジトリにあることを確認してください(git check-ignore)

zsh:現在私のGitリポジトリにあることを確認してください(git check-ignore)

鉱山では、.zshrc次のgitコマンドを使用します(fromzsh ヒント: 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リポジトリ内でこれをテストとして使用するgit rev-parseこともできるので、gitリポジトリで無視されるディレクトリを気にしない場合は、

if top="$(git rev-parse --show-toplevel 2>/dev/null)" && [ -w "$top/.git" ]; then

現在のワークスペースの.gitディレクトリ(存在する場合)が書き込み可能かどうかを決定します。

以下も[ -O "$top/.git" ]参照してください。私自身testディレクトリ(標準ではありませんが、ほとんどのs / shellでサポートされていますzsh

関連情報