menu
  1. HOME
  2. News & Blog
  3. Git
  4. SourceTreeで差分ファイルを抽出

News & Blogニュース&ブログ

2016.08.04

SourceTreeで差分ファイルを抽出

GitのクライアントでSourceTreeを利用する時、コミットの差分ファアイルをZIPファイルとして抽出する方法をご紹介致します。追加開発で差分ファイルのみを納品する時などで便利です。

動作環境

  • OS:Windows 10 Home
  • Git:version 2.8.3.windows.1
  • SourceTree:Version 1.9.5.0

概要

「git diff」コマンドを利用して、差分ファイル名を取得し、差分ファイルをアカイブするWindowsのBatchファイルを作成します。SourceTreeでは、カスタマイズ操作で作成したBatchファイルを登録します。 コミット間の差分ファイルを抽出するためには、SourceTreeでコミットを選択し、カスタマイズ操作を実行します。

Batchファイルの作成

以下の内容のBatchファイルを作成し、適切な場所に配置します。 例では「C:\dev\sourcetree_script\ export_diff_zip.bat」に配置しました。 指定された2つのコミットの差分ファイル名のリストを取得し、そのファイルをアカイブします。 差分ファイル名に空白が入力されていても問題無いですが、「,」が入力されている場合は、正常に差分ファイル名を取得できませんのでご注意下さい。
if "%2" EQU "" (
 set PARAM1=HEAD
 set PARAM2=%1
) else (
 set PARAM1=%1
 set PARAM2=%2
)
 
setlocal enabledelayedexpansion
set RET_DIR=
for /F "delims=, usebackq" %%i in (`git diff --name-only %PARAM1% %PARAM2%`) do (
 set RET_DIR=!RET_DIR! "%%i"
)

set dt2=%date:~0,10%
set dt2=%dt2:/=%
set dt2=%dt2: =0%

set tm2=%time:~0,8%
set tm2=%tm2::=%
set tm2=%tm2: =0%

set fname2=archive_%dt2%_%tm2%.zip

git archive --format=zip --prefix=archive/ %PARAM1% %RET_DIR% -o %fname2%

SourceTreeにBatchファイルを登録

SourceTreeを起動して、「メニュー>ツール>オプション」を選択します。 SourceTree-diff_01 オプション画面が表示されたら「カスタム操作」タブを選択し、「追加」ボタンを押します。 SourceTree-diff_02 カスタム操作の編集画面が表示されたら、以下の内容を設定し、「OK」を押します。
  • メニュー表示名:任意
  • 実行するスクリプト:作成したBatchファイルを選択します。
  • パラメータ:$SHA

SourceTree-diff_03

カスタム操作が追加されたことを確認して「OK」ボタンを押します。

SourceTree-diff_04

コミット間の差分ファイルを抽出

SourceTreeを起動して、ブランチを表示します。 開発の開始する直前のコミットと開発最終のコミットを選択します。Ctrlキーを押しながら選択すると複数選択ができます。 選択された状態で、マウスの右ボタンをクリックし、メニューを表示させます。表示されたメニューで「カスタム操作>カスタム操作の編集画面で入力したメニュー表示名」を選択します。 レポジトリのルートフォルダに「archive_日付_時刻.zip」のファイルが配置されていることを確認します。配置されたファイルが差分ファイルとなります。

SourceTree-diff_05

参考サイト

お気軽にご相談ください

株式会社アルベではIT、Webを使って皆様の課題解決のお手伝いをしています。
下記のようなお悩みを持つ方は、是非お気軽にご相談ください。

お問い合わせ