Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Поддержка клиентов Subversion

Доступ к репозиториям GitHub осуществляется с клиентов Git и Subversion (SVN). В этой статье рассматривается использование клиента Subversion на сайте GitHub и некоторые распространенные проблемы, с которыми вы можете столкнуться.

GitHub поддерживает клиенты Subversion через протокол HTTPS. Для передачи команды svn в GitHub используется мост Subversion.

Примечание. Поддержка Subversion будет удалена из GitHub 8 января 2024 г. В будущем выпуске GitHub Enterprise Server после 8 января 2024 г. также будет удалена поддержка Subversion. Дополнительные сведения см. в блоге GitHub.

Поддерживаемые функции Subversion в GitHub

Извлечение

Прежде всего необходимо извлечь код из Subversion. Так как в клонах GitHub рабочий каталог (в котором редактируются файлы) отделен от данных репозитория, в рабочем каталоге в каждый момент времени находится только одна ветвь.

Извлечение кода в Subversion выполняется по-другому: оно смешивает данные репозитория с рабочими каталогами, поэтому для каждой ветви и тега, которые извлекаются, создается рабочий каталог. Для репозиториев с большим числом ветвей и тегов на извлечение всего содержимого может потребоваться слишком много времени, поэтому следует начать с частичного извлечения.

  1. На экземпляр GitHub Enterprise Server перейдите на главную страницу репозитория. 1. Над списком файлов щелкните Код. Снимок экрана: список файлов на целевой странице репозитория. Кнопка "Код" выделена темно-оранжевым контуром.

  2. Скопируйте URL-адрес репозитория.

    • Чтобы клонировать репозиторий по протоколу HTTPS, в разделе "HTTPS" щелкните .

    • Чтобы клонировать репозиторий с помощью ключа SSH, включая сертификат, выданный центром сертификации SSH вашей организации, щелкните SSH, а затем выберите .

    • Чтобы клонировать репозиторий с помощью GitHub CLI, щелкните GitHub CLI, а затем выберите .

      Снимок экрана: раскрывающееся меню "Код". Справа от URL-адреса HTTPS для репозитория значок копирования выделен темно-оранжевым цветом.

  3. Создайте пустой каталог извлечения для репозитория:

    $ svn co --depth empty https://github.com/USER/REPO
    > Checked out revision 1.
    $ cd REPO
  4. Получите ветвь trunk. Мост Subversion сопоставляет магистраль с ветвью HEAD Git.

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
  5. Получите пустой каталог извлечения для каталога branches. В этом каталоге будут находиться все ветви кроме HEAD, и в нем также будут создаваться ветви функций.

    $ svn up --depth empty branches
    Updated to revision 1.

Создание ветвей

Вы также можете создавать ветви с помощью моста Subversion для GitHub.

В клиенте svn сделайте ветвь "master" текущей, обновив trunk:

$ svn up trunk
> At revision 1.

Затем можно создать новую ветвь с помощью svn copy:

$ svn copy trunk branches/more_awesome
> A    branches/more_awesome
$ svn commit -m 'Added more_awesome topic branch'
> Adding    branches/more_awesome

> Committed revision 2.

Вы можете проверить существование новой ветви в раскрывающемся списке ветвей репозитория:

Снимок экрана: страница репозитория. Раскрывающееся меню со значком ветви и "main" выделено оранжевым контуром.

Наличие новой ветви также можно подтвердить с помощью командной строки:

$ git fetch
> From https://github.com/USER/REPO/
> * [new branch]    more_awesome -> origin/more_awesome

Отправка фиксаций в Subversion

После того, как вы добавили некоторые функции и исправили несколько ошибок, необходимо зафиксировать эти изменения в GitHub. Сделать это можно точно так же, как в привычной системе управления версиями Subversion. Измените файлы и используйте команду svn commit для записи изменений:

$ svn status
> M    gizmo.rb
$ svn commit -m 'Guard against known problems'
> Sending    more_awesome/gizmo.rb
> Transmitting file data .
> Committed revision 3.
$ svn status
> ?    test
$ svn add test
> A    test
> A    test/gizmo_test.rb
$ svn commit -m 'Test coverage for problems'
> Adding    more_awesome/test
> Adding    more_awesome/test/gizmo_test.rb
> Transmitting file data .
> Committed revision 4.

Переключение между ветвями

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

$ svn co --depth empty https://github.com/USER/REPO/trunk

Затем можно переключиться на другую ветвь:

$ svn switch https://github.com/USER/REPO/branches/more_awesome

Просмотр SHA фиксации Git для фиксации Subversion

Сервер Subversion в GitHub предоставляет SHA фиксации Git для каждой фиксации Subversion.

Чтобы просмотреть SHA фиксации Git, необходимо запросить удаленное свойство git-commit, не находящееся в системе управления версиями.

$ svn propget git-commit --revprop -r HEAD https://github.com/USER/REPO
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3

С помощью SHA фиксации можно, например, найти соответствующую фиксацию Git в GitHub.