Sourcetreeで差分ファイルをzip出力
作成日:2019-06-28, 更新日:2020-02-04
基本
「SourcetreeでGitファイル差分をZip化するカスタムアクション(http://cresson.ivory.ne.jp/kuruton/git_001)」をコピペ(2020-02-04時点で記事が消えてた・・・)
▼流れ
・バッチファイルを用意
・Sourcetreeの「メニュー:ツール」の「オプション」の「タブ:カスタム操作」でバッチファイルを指定
実行するスクリプトは作ったバッチファイルへのPATH
パラメータは「$SHA」
・Sourcetreeのヒストリーからコミットを一つ(or 2つ)選択して、右クリック→「カスタム操作」の使いたいヤツをクリック
→差分ファイルがzipで出力される
※追加・修正ファイルは分かるけど、削除したファイルは当然のコトながら出力されない。
バッチファイル
「git」のPATHを通しておかないとエラーになる。
※バッチファイルの「git」のトコをフルPATHにしてても良さげ
▼win
@echo off if "%2" EQU "" ( set PARAM1=HEAD set PARAM2=%1 ) else ( set PARAM1=%1 set PARAM2=%2 ) setlocal enabledelayedexpansion set RET_DIR= for /F "usebackq" %%i in (`git diff --name-only %PARAM2% %PARAM1% --diff-filter=ACMR`) do ( set RET_DIR=!RET_DIR! "%%i" ) git archive --format=zip --prefix=archive/ %PARAM1% %RET_DIR% -o ../archive.zip
最後の行の「../archive.zip」が出力先になる。
▼mac(未調査)
#!/bin/sh if [ "$2" = "" ]; then git archive --format=zip --prefix=archive/ HEAD `git diff --name-only $1 HEAD --diff-filter=ACMR` -o ../archive.zip else git archive --format=zip --prefix=archive/ $1 `git diff --name-only $2 $1 --diff-filter=ACMR` -o ../archive.zip fi
「git」のPATH
▼Sourcetreeで「メニュー:ツール→オプション」で「タブ:Git」にある「Gitバージョン」ってトコに記載あり
C:\Users\〇〇〇\AppData\Local\Atlassian\SourceTree\git_local\cmd.exe
▼PATHを通すとき
C:\Users\〇〇〇\AppData\Local\Atlassian\SourceTree\git_local
PATHを通したらCMDとかで「git -h」とかで確認してエラーが出なければOK
※PC再起動が必要かもしれない
差分の取得
▼こういうときの問題
・本番環境にはGitが無いので修正ファイルを手動でupしないとダメなとき
やりたいコト、問題
1.フィーチャーブランチ作成 2.ファイルを修正→コミット→テスト 3.ファイルを修正→コミット→テスト 4.ファイルを修正→コミット→テスト
→本番反映するために「1」と「4」の差分が欲しい
「2」~「4」はヒストリーを見ればわかるが、「1」がヒストリーのドコにあるのかが分からない
対策
「このコミットを打消し...」ってヤツをやれば「Revert 〇〇〇」としてヒストリーに残るので、疑似的にフィーチャーブランチ作成した最初が分かる。
▼手順
1.フィーチャーブランチ作成 2.適当にファイルを修正→コミット 3.「このコミットを打消し...」で「Revert 〇〇〇」としてヒストリーに残す(「1」と同じ状態になる) 4.ファイルを修正→コミット→テスト 5.ファイルを修正→コミット→テスト 6.ファイルを修正→コミット→テスト
→ヒストリーから「3」と「6」を指定して差分出力すればOK
他問題
上記方法を模索する前にファイルを修正していた。
1.フィーチャーブランチ作成 2.ファイルを修正
というトコまで来ていた。
コミットすると「1」が消える
コミットしてRevertすると「2」が消える→その後、「2」の修正を復活させるっていうのは面倒・・・
▼とりあえず下記のような感じで対応
1.フィーチャーブランチ作成 2.ファイルを修正 3.「2」をスタッシュで一時退避させておく 4.適当にファイルを修正→コミット 5.「このコミットを打消し...」で「Revert 〇〇〇」としてヒストリーに残す(「1」と同じ状態になる) 6.「3」を復活→コミット
→ヒストリーには「Revert 〇〇〇」の後に「6」のコミットが記載される
bitbucketで確認
bitbucketのコミットのトコに変更されたファイル一覧アリ
・A - 追加されたファイル
・M - 変更されたファイル
・D - 削除されたファイル
bitbucketでもダウンロードが出来るそうだけど・・・タグがよく分からず挫折中。