Я экспериментировал с RMagick для проекта, связанного с работой, и оказался в ситуации, когда я хотел получить содержимое папки examples, которую я нашел в репозитории проектов GitHub, на свой компьютер, чтобы протестировать некоторые функции драгоценных камней. . Мне не хотелось клонировать весь репозиторий, поэтому я начал задаваться вопросом, как мне обойти загрузку только этой конкретной папки.

После некоторого поиска в Google и переполнения стека я пришел к выводу, что нет четкого способа сделать это с помощью git-команды. Было ли моим единственным решением получить код вручную, загрузив zip/tarball и распаковав файлы? Или, что еще хуже, скопировать и вставить исходный код?

Итак, введите Apache Subversion.

Subversion — это централизованная система управления версиями с открытым исходным кодом, которая существует примерно с 2000 года. К сожалению, я не очень хорошо знаком с SVN. Когда я начал использовать системы контроля версий, естественным выбором было использование Git. Основное различие между этими двумя системами заключается в том, что Git — это децентрализованная система, что делает ее более подходящей для проектов распределенных команд с разработчиками, которые не всегда подключены к главному репозиторию. Но, эй, это пост не о Subversion и Git, а скорее о том, как мне удалось решить реальную проблему, объединив эти две вещи.

Хорошо, что к репозиториям GitHub можно получить доступ как из клиентов Git, так и из клиентов Subversion. Так что я могу использовать определенную функцию, которая доступна мне в SVN, но не в Git. Вот что я собираюсь сделать, чтобы решить свою проблему.

Давайте двигаться дальше…

Итак, мне нужно убедиться, что в моей системе установлена ​​Subversion. У меня Mac с установленным доморощенным пивом, поэтому я использую:

$ brew install subversion

Это может занять некоторое время… Кроме того, если у вас возникнут проблемы с разрешениями, я рекомендую этот SO post.

Для систем Linux и т. д. всю необходимую информацию можно найти на https://subversion.apache.org/packages.html.

Давайте посмотрим на мой пример. Репозиторий RMagick GitHub находится по адресу https://github.com/gemhome/rmagick, а интересующая меня папка — по адресу https://github.com/gemhome/rmagick/tree/master/examples, верно? Хитрость заключается в том, чтобы заменить tree/master на trunk в URI. trunk — это основная линия разработки в репозитории SVN, эквивалентной основной ветке в Git.

Я использую команду ls, чтобы убедиться, что мы на правильном пути, и увидеть, существует ли контент на самом деле:

$ svn ls https://github.com/gemhome/rmagick/trunk/examples

И конечно... Я вижу содержимое удаленной папки в своем терминале.

Итак, давайте используем команду svn export для загрузки содержимого этой папки:

$ svn export https://github.com/gemhome/rmagick/trunk/examples

И Вуаля! Папка успешно загружена в ваш текущий каталог.

Это очень просто, но было полезно для меня. Возможно, вы найдете его полезным для себя. Снова и снова!