PS1
特定のディレクトリセットの結果を表示する簡単な方法はありますか?
避けるためにXYの問題、あらかじめお話しますが、ディレクトリにあるすべてのgitリポジトリの状態をすばやく確認したいと思います。繰り返し実行できますが、git status
読みfor ... do ... done
にくいです。
私は持っていますああ、このくそコマンドプロンプトの一部としてうまく機能し、私が見たい状態を一目でわかります。私のディレクトリにある各サブディレクトリの内容を見たいのですがrepos
。
以下を手動で呼び出すと、必要なものがわかりますが、cd ~/repos/first-repo
繰り返し入力するだけでなく、1つもスキップせずにすべてのリポジトリを覚えておく必要があります。cd
各リポジトリにスクリプトを作成し、カスタムプロンプトを表示したいと思います。
答え1
for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status --short --branch --untracked-files=no )
done
または短いオプションを使用してください。
for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status -sbuno )
done
これにより、現在のディレクトリのすべてのディレクトリに変更され、指定されたgit status
コマンドが実行されます。出力は次のとおりです。
gnomad_browser/: ## master...origin/master
swefreq-browser/: ## gnomad-remerge...origin/gnomad-remerge
swefreq-config/: ## develop...origin/develop
swefreq/: ## feature/schema-update...origin/feature/schema-update
M sql/swefreq.sql
(ストレージにコミットされていないファイルがありますswefreq
)
ここで選択したオプションは、現在のブランチと変更されたファイルのみを表示しますが、またはを削除して追跡されていないファイルを表示するようにgit status
簡単に変更できます。-uno
--untracked-files=no
望むよりgit status --help
。
プロンプトを使用して各ディレクトリに関する情報を表示したいというアイデアは、プロンプトの設定方法に従って機能することができます。私のプロンプトは、評価する必要がある単一引用符文字列です。
for rep in */; do
( cd "$rep" && eval echo "$PS1" )
done
私はこれが非常に良い解決策であるとは思わず、各リポジトリに対して実行および通知する作業はあまり柔軟ではありません。
答え2
oh-my-gitを見ると、シェルスクリプトで次のことを行う必要があるようです。
#!/bin/bash
source ~/.oh-my-git/prompt.sh
for d in dir1 dir2...
do cd "$d"
pwd
bash_prompt # recalculate PS1 value
echo -en "$PS1"
done