@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

SubversionのようにGitで差分リリースする

Subversionでは指定した二つのコミット間で変更のあったファイルのスナップショットを書き出せるようです。 差分リリースでよく利用されているかと思います。

Gitではそのままのコマンドがないので今まで諦めていたのですが、 コマンドの組み合わせで実現できることがわかりました。 cf: Using Git to create an archive of changed files.

スクリプト

以下の内容を git-diff-exportという名前で保存し、実行権限をつけるとgitのサブコマンドとして認識されるようになります。 (使い方はスクリプト上部のechoの行を見てください)

SourceTreeで使う

SourceTreeであればカスタムアクションという機能で外部コマンドを実行できます。

  • 設定例

    f:id:peccu:20170605193926p:plain

    • 「メニューキャプション」は任意の名前(ここでは「書き出し」)
    • 「実行するスクリプト」に保存したスクリプトを指定
    • 「パラメータ」に$SHAを指定します。
  • 使用例

    f:id:peccu:20170605194234p:plain

    • 書き出したい差分を求める二つのコミットを選択
    • 右クリック→カスタムアクション→書き出し(設定でメニューキャプションに指定したもの)と選択
    • リポジトリの一つ上のディレクトリにexport.zipが出力される (同じ名前のファイルがあると上書きされます)