Source Tree 1.6.22.0 on Windows 7 pro
背景
しばらくの日数、現在使用中のPCにアクセスできなくなる時、コミット忘れをして、戻ってきたときに別開発PCで作業したものをマージするなりしないといけなくなり面倒になる。
きちんと手仕舞いしておきたい。
複数プロジェクトにおける修正中のファイルリストを取得したい。
状況
1つの親フォルダに複数のプロジェクトフォルダが含まれる場合での対応をしている。

それ以外の場合はfor文の部分を変更が必要 (以下ではPROJECT_A, _Bは取りこぼす)。

v0.1
手順と実行結果
- SourceTreeでターミナルを起動
- cd .. で一つ上に移動 (親フォルダへ)
- 以下のスクリプトを実行すると、modifiedのファイル(とプロジェクト)が分かる
$ for dir in $(ls); do echo $dir; cd $dir; if [ -d .git ]; then git status | grep modified; fi; cd ..; done
...
PROJECT_1
# modified: Project1.res
# modified: Unit1.cpp
# modified: Unit2.cpp
PROJECT_2
# modified: shutdownButton.py
PROJECT_3
PROJECT_4
PROJECT_5
# modified: hello_test_exec
...
上記の例ではPROJECT_3とPROJECT_4は何も変更なし。PROJECT_1,2,5で修正したがcommitしてないファイルがあることが分かる。
v0.2
SHELLファイルにした。one linearよりデバッグしやすい。
スクリプトファイル
# !/bin/sh
for dir in $(ls); do
echo $dir;
cd $dir;
if [ -d .git ]; then
git status | grep modified;
fi;
cd ..;
done
使い方
- cd .. (親フォルダへ移動)
- sh checkYetToCommit.sh
または chmod +x checkYetToCommit.sh してる場合は
- cd .. (親フォルダへ移動)
- ./checkYetToCommit.sh
備考
- MINGW32の find コマンドは -type オプションがないようだ。
ディレクトリだけ取得というのが分からない - commitしたがpushしてない問題は未対応