ftp
やscp
を使用して本番デプロイする方向けの投稿です。
作業分のファイルを抽出する際にgit archive
を使用しますが、
合わせてバックアップのファイルも用意したい場合のスクリプトを作りました。
例えばgit archive
で抽出したファイルを本番環境にあてた際に予期せぬ不具合が発生した場合に、
- 元のファイルの状態に戻す
- 急いでbugfix を行う
以上のことを本番環境に対して行うと思います。
今回は「元のファイルの状態に戻す」について話を進めます。
元のファイルの状態に戻すとは、git archive
で差分抽出前のファイルが用意できれば良いわけです。
シェル化した
やっていること
- 差分ファイルの作成
- バックアップファイルの作成
# !/bin/sh
# -------------------------------------------------------
# A shell script that generates a MIT LICENSE file
# Written by: takecore
# Last updated on: 2015/10/22
# -------------------------------------------------------
ORIGIN_BRANCH=`git rev-parse --abbrev-ref HEAD`
FROM_RIVISION=$1
TO_RIVISION=HEAD
if [ "$2" ]; then
TO_RIVISION=$2
fi
# as you like change below
DIFF_LIST_PATH=$HOME/Desktop/diff_list_$FROM_RIVISION
RELEASE_ARCHIVE_PATH=$HOME/Desktop/release_$FROM_RIVISION.zip
BACKUP_ARCHIVE_PATH=$HOME/Desktop/backup_$FROM_RIVISION.zip
# archive start
git diff --name-only $TO_RIVISION $FROM_RIVISION > $DIFF_LIST_PATH
git archive --format=zip $TO_RIVISION `git diff --name-only $TO_RIVISION $FROM_RIVISION` -o $RELEASE_ARCHIVE_PATH
git checkout $FROM_RIVISION
zip $BACKUP_ARCHIVE_PATH -@ < $DIFF_LIST_PATH
rm $DIFF_LIST_PATH
git checkout $ORIGIN_BRANCH
git-archive-with-backup.sh
リリース差分ファイルの抽出とバックアップファイルの作成を目的としたスクリプトです。
配置場所
- 任意のbin フォルダ等に配置し実行権限を与えて下さい
例えば以下のようなディレクトリ
$ chmod 755 /Uses/your_user_name/bin/git-archive-with-backup.sh
使い方
gitの作業ディレクトリ直下にて実行してください。使用例は以下になります。
# make revision_hash to HEAD diff archive
$ ~/bin/git-archive-with-backup.sh <from_revision_hash>
# or
$ ~/bin/git-archive-with-backup.sh <from_revision_hash> <to_revision_hash>
$ cd /Users/your_user_name/dev/git_repository
$ ~/bin/git-archive-with-backup.sh a88bfca3abbaffd69d16a3b71bb8eec210e27f67
差分ファイルとバックアップファイルの出力先
以下のディレクトリにそれぞれ.zipファイルが生成されます。出力場所は任意に書き換えてください。
~/Desktop/release_{from_revision_hash}.zip
~/Desktop/backup_{from_revision_hash}.zip
追記
上記の.sh をSourceTree
と組み合わせるととても便利に使用できます。
そちらについては後日Qiitaに投稿したいと思います。
バグ等のご指摘も宜しくお願いします。
以上になります。
2015/10/26 コミットに削除ファイルがある場合にリスト化に失敗するため--diff-filter=D
オプションを追加しました。
http://qiita.com/takecore@github/items/9e2067cfe62897205d5e/revisions/4