LoginSignup
2
2

More than 5 years have passed since last update.

Gitで変更のあるプロジェクトを見つける

Posted at

git status を再帰的に全Gitディレクトリで実行して、変更のあるリポジトリを簡単に見つけたい。

と思ったので作りました。

yukimemi/gsr

go get でインストールできます。

(バイナリファイルもそのうち用意する)

$ go get github.com/yukimemi/gsr

使い方は簡単で

$ gsr [再帰的にチェックしたいディレクトリ]

とすると、 git status で変更のあるディレクトリだけ出力されます。
デフォルトでは、ディレクトリ名だけが出力されます。

$ gsr --status [再帰的にチェックしたいディレクトリ]

と、オプションをつけると、 git status の出力結果も出力されます。

ちなみに、 [再帰的にチェックしたいディレクトリ] を指定しなかった場合、
ghq root を対象にチェックします。

motemen/ghq を使っている人には便利です。

デフォルトの出力がディレクトリ名なのは、pecoとか使って移動したいからです。

例えば、 .zshrc に、こんな設定を書いてやると、

function __filter() {
  peco | while read line
  do
    echo "Exec: [$@ $line]"
    $@ $line
  done
}
alias gsrl='gsr | __filter cd'
alias ghl='gsr --all | __filter cd'

gsrl で、 ghq で管理された変更のあるgitディレクトリに移動出来るようになり、 ghlghq で管理されたすべてのディレクトリに移動出来るようになります。

非常にべんり。

さらに、 リモートと差分のあるリポジトリも対象としたい場合、以下のオプションが使用できます。

$ gsr --ahead --behind
オプション 出力対象
--ahead リモートより新しいものも対象にする
--behind リモートより古いものも対象にする

僕は常にこのオプションを有効化して使うので、環境変数に指定しています。
.zshenv とかに書いておくと、実行時にオプションをいちいち指定しなくても有効化されます。

export GSR_SHOW_AHEAD=1
export GSR_SHOW_BEHIND=1

これは、使ってるライブラリ urfave/cli の機能みたいです。すごい。


参考

urfave/cli

git statusを利用したリポジトリ情報のプロンプト表示

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2