GitHubなどのGitリポジトリサービスではリポジトリをZipでダウンロードする機能があります。しかしZipダウンロードするとサブモジュールがある場合に、その情報がある.gitディレクトリがないので不便です。 そこで使ってみたいのがtarballizeです。指定したリポジトリをサブモジュールも含めてアーカイブしてくれます。

tarballizeの使い方

tarballizeはリポジトリに加えてタグも指定します。

$ ./tarballize https://github.com/devsisters/goquic master
Cloning into '/var/folders/s3/q1g_r4fn0bj__vcwwk_kkg6m0000gp/T/tmp.FPBZP8sB/master'...
remote: Enumerating objects: 235, done.
remote: Counting objects: 100% (235/235), done.
remote: Compressing objects: 100% (208/208), done.
remote: Total 235 (delta 42), reused 112 (delta 15), pack-reused 0
Receiving objects: 100% (235/235), 488.21 KiB | 775.00 KiB/s, done.
Resolving deltas: 100% (42/42), done.
Submodule 'libquic' (https://github.com/devsisters/libquic) registered for path 'libquic'
Cloning into '/private/var/folders/s3/q1g_r4fn0bj__vcwwk_kkg6m0000gp/T/tmp.FPBZP8sB/master/libquic'...
remote: Enumerating objects: 11815, done.        
remote: Total 11815 (delta 0), reused 0 (delta 0), pack-reused 11815
Receiving objects: 100% (11815/11815), 17.65 MiB | 2.68 MiB/s, done.
Resolving deltas: 100% (6295/6295), done.
Submodule path 'libquic': checked out '8954789a056d8e7d5fcb6452fd1572ca57eb5c4e'

tarballizeはテンポラリディレクトリでリポジトリをクローンしてサブモジュールを取得してくれます。最終的にtarボールにまとめてくれます。サブモジュールがあるかどうかぱっと見ただけでは分からないので、普段からtarballizeを使っていると便利そうです。

tarballizeはShellスクリプト製のオープンソース・ソフトウェア(MIT LicenseとApache License 2.0のデュアルライセンス)です。

devsisters/tarballize: Make tarballs of given git repository including its submodules.