Git Advent Calendar 2016 9日目の記事です。
概要
巨大なリポジトリの一部ディレクトリのみ手元にダウンロードする手法を紹介します。
たとえば xamarin-forms-sample のリポジトリ (https://github.com/xamarin/xamarin-forms-samples) を丸々 clone したり ZIP ダウンロードしようとすると数百メガバイトの容量になりなかなか大変なのです。
方法
GitHub 上のリポジトリは当然 Git なのですが、GitHub の場合 Subversion で export できる機能があるのでそれを使います。
master ブランチの特定のサブディレクトリ配下をダウンロード
試しに https://github.com/xamarin/xamarin-forms-samples/tree/master/Behaviors 配下のみをダウンロードしてみましょう。
URL内「tree/master」の部分を「trunk」に書き換えた URL に対して svn export します。
$ svn export https://github.com/xamarin/xamarin-forms-samples/trunk/Behaviors
結果
$ find Behaviors -name "*.*" | head -5 Behaviors/AttachedNumericValidationBehavior/Metadata.xml Behaviors/AttachedNumericValidationBehavior/README.md Behaviors/AttachedNumericValidationBehavior/Screenshots/01All.png Behaviors/AttachedNumericValidationBehavior/Screenshots/01Android.png Behaviors/AttachedNumericValidationBehavior/Screenshots/01UWP.PNG
こんな感じに Behaviors 直下のファイルのみをダウンロードできました。
$ du -sk Behaviors/ 8156 Behaviors/
サイズは8MB程度に収まっています。
別ブランチの特定のサブディレクトリ配下をダウンロード
https://github.com/xamarin/xamarin-forms-samples/tree/2.3.4/Behaviors 配下のみをダウンロードしてみます。
URL内「tree/2.3.4」の部分を「branches/2.3.4」に書き換えた URL に対して svn export します。
$ svn export https://github.com/xamarin/xamarin-forms-samples/branches/2.3.4/Behaviors
結果
$ find Behaviors -name "*.*" | head -5 Behaviors/AttachedNumericValidationBehavior/Metadata.xml Behaviors/AttachedNumericValidationBehavior/README.md Behaviors/AttachedNumericValidationBehavior/Screenshots/01All.png Behaviors/AttachedNumericValidationBehavior/Screenshots/01Android.png Behaviors/AttachedNumericValidationBehavior/Screenshots/01UWP.PNG
さきほどと同様の結果が得られました。(内容はブランチ 2.3.4 のものになっている)
おしまい
Git Advent Calendar なのに実質使うコマンドは Subversion であり恐縮ですが。GitHub が提供してくれているこの Subversion 機能はなかなか便利です。