SourceTreeの「カスタムアクション」を使って、コミットの履歴から差分ファイルを抽出する方法は、以下のエントリーで紹介しました。
ただし、納品ファイルとして提出する際には、同時に差分のファイルリストを求められるケースも多いでしょう。
そこで、今回は同様にSourceTreeの「カスタムアクション」を使って、変更した差分ファイルの一覧を作成する方法を紹介します。
(下記の説明はMac OS 10.10.4での操作を前提としています)
バッチファイルの作成
差分を表示するには git diff コマンドを使いますが、以下のように --name-status
オプションを付けると、変更されたファイルの名前とステータスだけを抽出することができます。
さらに、 >
に続けてファイル名を指定することで、コマンドの表示結果をテキストファイルなどに書き出して保存することができます。
#!/bin/sh
git diff --stat --name-status $2 $1 > filelist.txt
カスタムアクションの登録
上記テキストファイルを list_diff.sh
等のファイル名で保存し、「指定された差分でファイルリスト作成」という名前でカスタムアクションとして登録しました。
(パラメータには $SHA
を入力)
また、作成したシェルスクリプトに実行権限を追加しないと、カスタムアクションの実行時に「launch path not accessible」というエラーが発生してしまうので、ターミナルから以下のコマンドを実行しておきます。
chmod +x list_diff.sh
カスタムアクションの実行
SourceTreeの「ログ表示」画面で、Commandキーを押しながら2つのリビジョンを選択し、右クリックから「カスタムアクション」→「指定された差分でファイルリスト作成」を実行します。
すると、プロジェクトのルートディレクトリに filelist.txt
というファイルが作成され、変更されたファイル名とステータスの一覧が書き出されます。
ファイルリストの加工・編集
filelist.txt
に保存されたファイルリストの形式は、以下のような形になります。
M common/img/img01.jpg
A img/banner_a.png
D index.html
M=変更ファイル、A=追加ファイル、D=削除ファイル、と覚えておけばいいでしょう。
このままだと、さすがにちょっと味気ないので、EXCELやCSVに加工して適宜編集して使用します。
置換やソート機能を使って加工すれば、好みに合わせて見やすいリストを作成できると思います。
git diff
コマンドで書き出したファイルリストは、タブ区切りテキストになっているので、EXCEL等にコピー&ペーストする分にも問題ありません。
応用
こちらのカスタムアクションも、シェルスクリプトを書き換えることで様々な応用が可能です。
前回と同じように、gitの管理下にならない上階層にフォルダを作って、その都度日付名を付けてリストを保存するようにしたサンプルは以下になります。
他にもシェルスクリプトを使えば、プロジェクトごとにフォルダやファイル名を振り分けることなども可能なので、ニーズに応じて色々とアレンジしてみてください。
一階層上の/archive/ディレクトリに日付名でファイルリストを作って書き出す場合
#!/bin/sh
today=`date +"%Y%m%d"`
git diff --stat --name-status $2 $1 > ../archive/$today.txt