やりたいこと
gitで、特定のコミットからHEADまでの差分ファイルを
zipファイルにまとめる。その処理を任意のコマンド名で実行する。
モチベーション
差分ファイルのみ納品・アップロードが必要な時に、
該当ファイルを目視確認でピックアップするのは大変。普段GUIのGitクライアント利用していて、コマンドを覚えておらず、
簡易な記述でコマンド実行したい。
一つのやり方
gitコマンドのAliasに実行したい関数を指定する。
- 設定
僕の現時点での記述はこんな感じ。
.gitconfig
[alias]
ziff = "!f() { git archive --format=zip HEAD `git diff --diff-filter=d --name-only $1 HEAD -- $3` -o $2.zip;}; f"
# git ziff [コミットのハッシュ] [zipのファイル名] [特定のディレクトリのみzipにまとめたい場合はディレクトリ名を指定]
今のところ引数を最低2つ指定して実行させる仕様。
- 実行
$ git ziff HEAD^ 20150909
このように実行すると、
HEADとその一つ前のコミットの差分ファイルが格納された、
20150909.zip が カレントディレクトリに生成される。
なお各ファイルはディレクトリ構造を保ったまま入ってる。
$ git ziff HEAD^ 20150909 public
こう実行すると、./public/
フォルダ内の差分ファイルのみが格納される。
TODO
- 引数にデフォルトの値を渡したい