clock-up-blog

go-mi-tech

GitHub のリポジトリ内のサブディレクトリのみをダウンロードする

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 機能はなかなか便利です。

});