概要
リリースごとにタグを発行していますが、そのタグの間で差分を出力したかったので作業メモを残す。
<出力したい差分>
・修正されたファイルの一覧 (list.txt)
・各ファイルの修正内容 (diff.txt)
・修正されたファイル一式 (diff.tar.gz)
修正ファイルの一覧
修正ファイルの一覧を「list.txt」に書き出す。
ターミナル
# tag1からtag2で修正されたファイルの一覧を出力する
$ git diff --name-only --diff-filter=AMCRD tag1 tag2 > ./tmp/list.txt
各ファイルの修正内容
修正内容を「diff.txt」に書き出す。
ターミナル
# tag1とtag2の差分を出力する
$ git diff --diff-filter=AMCRD tag1 tag2 > ./tmp/diff.txt
修正されたファイル一式
修正されたファイルを一式「diff.tar.gz」に圧縮して出力する。
ターミナル
# tagとtagの間の差分ファイルを出力する
$ git archive --format=tar.gz --prefix=diff/ tag2 `git diff --name-only --diff-filter=AMCR tag2 tag1` -o ./tmp/diff.tar.gz
上記一式をスクリプト化する
ターミナル
# 作業フォルダ作成
$ mkdir tmp
# 対象を指定する
$ TAG1='hoge-old'
$ TAG2='hoge-new'
# tag1からtag2で修正されたファイルの一覧を出力する
$ git diff --name-only --diff-filter=AMCRD ${TAG1} ${TAG2} > ./tmp/list.txt
# tag1とtag2の差分を出力する
$ git diff --diff-filter=AMCRD ${TAG1} ${TAG2} > ./tmp/diff.txt
# tagとtagの間の差分ファイルを出力する
$ git archive --format=tar.gz --prefix=diff/ ${TAG2} `git diff --name-only --diff-filter=AMCR ${TAG2} ${TAG1}` -o ./tmp/diff.tar.gz
# 差分ファイルを解凍する
$ cd ./tmp/
$ tar zxvf diff.tar.gz