WebDesigner's Memorandumウェブデザイナーの備忘録

SourceTreeのカスタムアクションを使って差分ファイルだけをまとめる方法

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」ボタンをクリックします。

[Custom Actions]タブ

あとは必要な情報を入力します。

カスタムアクションの追加

項目内容備考
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」ファイルが生成されて、中に差分のファイルがまとまっています。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね