SourceTreeのカスタムアクションを使って差分ファイルだけをまとめる方法
データの納品後に修正依頼が来て、対応後は「修正ファイルのみをアップしたいので修正したファイルだけまとめてください」と言われるときがあります。
Gitで管理しておけば差分は分かりますが、それを見ながら手動で1つ1つファイルを抽出するのは面倒です。
そこで、カスタムアクションを使って差分ファイルだけを簡単にまとめるようにしました。
シェルスクリプトの準備
下記のシェルスクリプトをコピーして.sh
拡張子で保存します。
自分の場合は「diff_export_zip.sh」という名前で保存しました。
#!/bin/sh
if [ "$2" = "" ]; then
git archive --format=zip --prefix=diff_archive/ HEAD `git diff --name-only HEAD $1` -o diff_list.zip
else
git archive --format=zip --prefix=diff_archive/ $1 `git diff --name-only $1 $2` -o diff_list.zip
fi
やっていることは、最初に$2(コミットID、tag, branch)が存在しないかどうかで条件分岐をしています。
そしてそれぞれの場合にgit archive
コマンドを使ってGit管理下のファイルをアーカイブ化しています。
オプションの「–output=diff_list.zip」部分が出力するファイル名で、このままだと「diff_list.zip」という名前で出力されます。
実行権限の追加
ターミナルを開いて、下記コマンドで実行権限を追加する必要があります。
$ chmod +x diff_export_zip.sh
実行権限をしていないと、あとでカスタムアクションを実行したときに「launch path not accessible」エラーが出てきて実行されないので注意が必要です。
SourceTreeの設定
.sh
ファイルを保存したら、そのファイルをカスタムアクションに登録します。
[カスタムアクション]タブが選択できない場合
SourceTreeの環境設定の[カスタムアクション(Cutsom Actions)]タブを選択します。
ただ、日本語のSourceTreeを使っている場合は[カスタムアクション]タブがグレーになっていて選択できなくなっているみたいです。英語に切り替えると選択できるようになります。
カスタムアクションの登録
[Custom Actions]タブを開いたら、左下の「Add」ボタンをクリックします。
あとは必要な情報を入力します。
項目 | 内容 | 備考 |
---|---|---|
Menu Caption | 表示されるラベル名 | |
Click to record shortcut | ショートカットキーの設定 | クリックして設定したいショートカットキーを押して登録する |
Open in Separate Window | 別のウインドウで開く | |
Show Full Output | 出力結果をフルで表示する | |
Script to run | 保存したシェルスクリプトファイルを指定する | |
Parameters | 引数を指定する | 今回は「$SHA」を指定する |
カスタムアクションの使い方
今回の場合はどこからどこまでの差分が欲しいのか指定してあげる必要があるので、下記手順で2つコミットを選択します。
- 開始位置となるコミットをクリック
- commandを押しながら差分となるコミットをクリック
あとは右クリックメニューから[カスタムアクション]→[差分ファイルをZip出力(Menu Captionで設定した名前)]を選択します。
これで「diff_list.zip」ファイルが生成されて、中に差分のファイルがまとまっています。