MacのSourceTreeで差分ファイルを取得
この方法ももっと早く知ってれば、2019年の幾度とない失敗を防げてたかも知れないのに・・・
とはいえ、今更でもないので、メモメモ。
準備
環境は、
macOS Mojave バージョン 10.14.6
SourceTreeバージョン 4.1.2
バッチファイルの作成
バッチファイル(シェルスクリプト)「export_diff.sh(のようなファイル名)」を任意の場所に作成し、git checkout-index
コマンドを登録します。
export_diff.sh
#!/bin/sh
git checkout-index -f --prefix=diff/ `git diff --name-only`
git checkout-index
コマンドを使うことでリポジトリからファイルをエクスポートできます。
ただ、作成したシェルスクリプトは実行権限を付与しないと実行時にlaunch path not accessible
エラーになるので、ターミナルから下記のコマンドを実行して権限を与えておきます。
$ chmod +x export_diff.sh
カスタムアクションを登録
SourceTreeの機能「カスタムアクション」を登録します。
Macのメニューバーの「SourceTree」から「環境設定」を開き、「カスタムアクション」タブを表示し、「追加」ボタンをクリックします。
「メニューキャプション」に任意のカスタムアクション名を入力し、「実行するスクリプト」に先ほど作成したバッチファイルを指定、「パラメータ」には$SHAを入力します。
「OK」ボタンをクリックし、カスタムアクションの登録は完了です。
差分ファイルを取得
SourceTreeのワークツリーの取得したい行を選択します。
右クリックでコンテキストメニューを表示させ、「カスタムアクション」から先ほどメニューキャプションに登録したカスタムアクション名をクリックし、カスタムアクションを実行します。
応用
1階層上のディレクトリで管理
上記した方法だと、gitの監視下(SourceTreeのワークツリー内)に生成されるため、管理するためにエクスポートした感じにならないような・・・そうでもないような・・・
なんてことも考えられるので、1階層上のディレクトリの「diff」ディレクトリに日付名のサブディレクトリを生成して管理する方が便利かもしれません。
export_diff.sh
#!/bin/sh
date=`"%Y%m%d"`
git checkout-index -f --prefix=../diff/$date/ `git diff --name-only`