Git の 差分ファイル を ZIP で 取得
差分ファイルだけ 納品してください という事が あるのですが
納品時には もう どのファイルを 修正したか覚えていないことのほうが多いかと思います
そんな時 Git で 管理していれば 修正したファイルが 取得できるのです
( 私の環境は Mac なので Windowsの人は コードが異なります )
シェルスクリプトで取得する
コミットID を 2つ指定して その差分を ZIP で 取得します
HEAD から 取得する場合は COMMIT_1 に HEAD を 指定すれば OK です
出力先は Downloads / Sourcetree 以下に archive_[日付].zip で 出力されます
( Sourcetree ディレクトリは 事前に作成しておいてください )
#!/bin/sh
# -*- coding: utf-8 -*-
COMMIT_1="1234567"
COMMIT_2="7654321"
# --------------------------------------------------------------------------------------------------
git archive ${COMMIT_1} `git diff --name-only ${COMMIT_2} ${COMMIT_1} --diff-filter=ACMR` -o ~/Downloads/Sourcetree/archive_`date "+%Y%m%d_%H%M%S"`.zip
Sourcetreeで取得する
Sourcetree に カスタムアクション として 登録することで 差分のファイルを 取得することができます
シェルスクリプト の 作成
任意のディレクトリに シェルスクリプトを 作成します
#!/bin/sh
# -*- coding: utf-8 -*-
if [ "$2" = "" ]; then
COMMIT_1="HEAD"
COMMIT_2=$1
else
COMMIT_1=$1
COMMIT_2=$2
fi
# --------------------------------------------------------------------------------------------------
git archive ${COMMIT_1} `git diff --name-only ${COMMIT_2} ${COMMIT_1} --diff-filter=ACMR` -o ~/Downloads/Sourcetree/archive_`date "+%Y%m%d_%H%M%S"`.zip
作成した スクリプトには 実行権限を 与えておいてください
Sourcetree に カスタムアクション を 追加
Sourcetree での 設定
「SourceTree」→「環境設定」→「カスタムアクション」タブ→「追加」
カスタムアクション 登録時
[メニューキャプション] は 任意の名前で 大丈夫です
[実行するスクリプト] に 先程作成した シェルスクリプトファイル を 指定する
[パラメーター] に [$SHA] を 指定する
ワークスペース の 履歴 から 範囲指定して 差分 して 右クリックで カスタムアクション を 選択
先程指定した [メニューキャプション] が 追加されているはずなので そちらを 選択
先程と同様に Downloads / Sourcetree 以下に archive_[日付].zip で 出力されます
人力で 差分ファイルを 集めようとすると どうしても 見落とし や 抜けが あったり ディレクトリ構造 が 崩れたりするので Git から 集めてられるのは 便利ですね
さらに Sourcetree の カスタムアクション を 登録しておけば 次回から 対象を指定して 実行するだけなので コンソール画面が怖い人にも 優しいですね