Я экспериментировал с 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
И Вуаля! Папка успешно загружена в ваш текущий каталог.
Это очень просто, но было полезно для меня. Возможно, вы найдете его полезным для себя. Снова и снова!