LoginSignup
12
12

More than 5 years have passed since last update.

git archiveでgzip以外の圧縮フォーマットを使用する

Last updated at Posted at 2015-06-26

git archiveコマンドについて

git archiveコマンドは指定したコミットのツリーをアーカイブファイルとして生成するコマンドです。ソースコードをリリースしたい時などに便利です。

例えば

$ git archive HEAD --format=tar.gz > hoge.tar.gz

とすれば、現在のブランチの最終コミットのツリーをhoge.tar.gzにしてくれます。

また、出力ファイル名指定する-oオプションを指定してやれば、拡張子から判断してtar.gzフォーマットにしてくれます。

$ git archive HEAD -o hoge.tar.gz

デフォルトではtar、tar.gz、zipにしか対応していない

git archiveコマンドは標準では圧縮フォーマットとして、tar、tar.gz、zipにしか対応していません。

$ git archive HEAD --format=tar.bz2 > hoge.tar.bz2
※ hoge.tar.bz2はただのtarファイルになる

としてみても、非対応のフォーマットが指定されたため、デフォルトの圧縮フォーマットのtarで固めただけのアーカイブになってしまいます。

tar.bz2 や tar.xz でアーカイブを作る

それではtar.bz2tar.xzの圧縮フォーマットでtarballを作りたい場合はどうするかというと、gzipされていないただのtarフォーマットで生成し、それぞれの圧縮コマンドにパイプで渡してやればとりあえず目的は達成できます。

$ git archive HEAD --format=tar | bzip2 > hoge.tar.bz2
$ git archive HEAD --format=tar | xz > hoge.tar.xz

--formatオプションにtar.bz2やtar.xzを対応させる

上述のやりかたでtar.bz2tar.xzを生成できますが、若干面倒くさいです。--formatオプションでこれらのフォーマットを直接指定できるようになれば便利です。

これはgitの設定で可能です。設定項目は、tar.[拡張子].commandで、これに圧縮プログラムを指定することで拡張子が--formatオプションに対応します。

例えば以下のようにしてグローバルの設定ファイル~/.gitconfigに設定を追加してやると、

$ git config --global tar.tar.bz2.command bzip2

--formatオプションでtar.bz2が指定可能になります。出力ファイル名指定の拡張子にも対応します。

$ git archive HEAD --format=tar.bz2 > hoge.tar.bz2
$ git archive HEAD -o hoge.tar.bz2
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12