Git

複数のリポジトリで使える Git の差分を抽出するバッチファイル

確認は不十分だけど。

バッチファイル

archive.sh
repos={repositorys}
target={target}
output={output}

name=$1
suffix=$2
from=$3
to=$4

repo=${repos}/${name}
zip=${name}-diff-${suffix}

git --git-dir=${repo}/.git --work-tree=${repo} archive --format=zip --prefix=${zip}- --output=${output}/${zip}.zip HEAD `git --git-dir=${repo}/.git --work-tree=${repo} diff --diff-filter=ACMR --name-only ${from}..${to} ${repo}/${target}`

以下3行目までの値は、自分の環境に合わせて書き換え。

変更箇所 説明
repositorys ローカルリポジトリ群のディレクトリ ~/github
target 各リポジトリ内の差分を抽出するディレクトリ htdocs
output 差分zipファイルを出力するディレクトリ ~/Downloads

使い方

4つの引数を指定します。

bash archive.sh {name} {suffix} {from} {to}
引数 説明
name 指定ローカルリポジトリのディレクトリ名
suffix 差分zipファイルの接尾詞(バージョン等)
from 差分取得範囲の開始位置のブランチ、タグ、コミットID
to 差分取得範囲の終了位置のブランチ、タグ、コミットID

作った理由

  • コマンド短くしたい
  • リポジトリ内にファイルを置きたくない
  • 共通のバッチファイルを使いたい
  • 指定した共通の場所に差分zipファイルを出力したい
  • 差分zipファイルをそのまま納品できる形にしたい