# Управление доступом к другим репозиториям в кодовом пространстве

Вы можете управлять репозиториями, к которым у GitHub Codespaces есть доступ.

## Обзор

По умолчанию пространство кода назначается маркером с `read` разрешением или `read``write` разрешением на репозиторий, из которого он был создан. Область этого маркера автоматически изменяется в следующих обстоятельствах.

* Если создать пространство кода для репозитория, к которому у вас есть доступ только для чтения, сделайте фиксацию в пространстве кода или отправьте новую ветвь, GitHub Codespaces автоматически связывает пространство кода с новым или существующим вилком репозитория и обновляет маркер, чтобы иметь `read` и `write` разрешение на вилку. Дополнительные сведения см. в разделе [Использование системы управления версиями в codespace](/ru/codespaces/developing-in-a-codespace/using-source-control-in-your-codespace#about-automatic-forking).
* Если вы создаете пространство кода из шаблона, опубликуйте пространство кода в новый репозиторий, GitHub Codespaces обновляет маркер `read``write` и разрешение на новый репозиторий. Дополнительные сведения см. в разделе [Создание пространства кода на основе шаблона](/ru/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template#publishing-to-a-repository-on-github).

Дополнительные сведения см. в разделе [Безопасность в GitHub Codespaces](/ru/codespaces/reference/security-in-github-codespaces#authentication).

Если в проекте требуются дополнительные разрешения для других репозиториев, его можно настроить в `devcontainer.json` файле, как описано [в разделе "Настройка дополнительных](#setting-additional-repository-permissions) разрешений репозитория" далее в этой статье. Если разрешения перечислены в файле `devcontainer.json`, вам будет предложено просмотреть и авторизовать дополнительные разрешения в процессе создания кодового пространства для этого репозитория. После того как вы авторизуете перечисленные разрешения, GitHub Codespaces запомнит ваш выбор и не будет запрашивать авторизацию, пока разрешения в файле `devcontainer.json` не изменятся.

> \[!NOTE]
> Обновление разрешений в `devcontainer.json` файле не изменяет разрешения существующих пространств кода. Если вам нужны дополнительные разрешения в существующем пространстве кода, см [. раздел AUTOTITLE](/ru/codespaces/troubleshooting/troubleshooting-authentication-to-a-repository#authenticating-to-repositories-that-you-didnt-create-the-codespace-from).

## Создание пространств кода с пользовательскими разрешениями

Чтобы создать пространство кода с пользовательскими разрешениями, необходимо использовать одно из следующих элементов:

* веб-интерфейс GitHub;
* [интерфейс командной строки GitHub](https://github.com/cli/cli/releases/latest) 2.5.2 или более поздней версии;
* [GitHub Codespaces Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) 1.5.3 или позже

## Настройка дополнительных разрешений репозитория

Вы настраиваете разрешения репозитория для GitHub Codespaces в `devcontainer.json` файле. Все настраиваемые разрешения, которые вы добавляете или изменяете, будут применяться только к новым пространствам кода, созданным после фиксации изменений в репозитории. При добавлении или изменении разрешений из пространства кода эти разрешения не будут применяться к текущему пространству кода, даже если вы перестроите пространство кода.

1. Если репозиторий еще не содержит файл `devcontainer.json`, добавьте его. Дополнительные сведения см. в разделе [Добавление конфигурации контейнера разработки в репозиторий](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration).

2. Измените файл `devcontainer.json`, добавив имя репозитория и необходимые разрешения в отношении объекта `repositories`:

   ```json copy
   {
     "customizations": {
       "codespaces": {
         "repositories": {
           "my_org/my_repo": {
             "permissions": {
               "issues": "write"
             }
           }
         }
       }
     }
   }
   ```

   > \[!NOTE]
   >
   > * Вы можете ссылаться только на репозитории, принадлежащие к той же личная учетная запись или организации, в которой сейчас работает репозиторий.
   > * С помощью `*` подстановочного знака можно предоставить разрешения нескольким репозиториям в организации. Например, чтобы предоставить разрешения всем репозиториям `my_org` в организации `my_org/*`. Этот синтаксис действителен только для пространств кода. В любых `devcontainer.json` файлах, используемых для предварительной сборки, необходимо определить разрешения для каждого репозитория отдельно. Дополнительные сведения см. в разделе [Предоставление предварительной сборке доступа к другим репозиториям](/ru/codespaces/prebuilding-your-codespaces/allowing-a-prebuild-to-access-other-repositories).

   Для каждого указанного репозитория можно предоставить любое количество следующих разрешений:

   * `actions` — чтение/запись;
   * `checks` — чтение/запись;
   * `contents` — чтение/запись;
   * `deployments` — чтение/запись;
   * `discussions` — чтение/запись;
   * `issues` — чтение/запись;
   * `packages` — чтение;
   * `pages` — чтение/запись;
   * `pull_requests` — чтение/запись;
   * `repository_projects` — чтение/запись;
   * `statuses` — чтение/запись;
   * `workflows` — запись.

   Чтобы задать разрешение для репозитория в организации, необходимо явно добавить это имя репозитория в `repositories` объект.

   ```json
   {
     "customizations": {
       "codespaces": {
         "repositories": {
           "my_org/my_repo": {
             "permissions": {
               "issues": "write"
             }
           }
         }
       }
     }
   }
   ```

   Чтобы задать все разрешения для определенного репозитория, используйте в объекте репозитория `"permissions": "read-all"` или `"permissions": "write-all"`.

   ```json
   {
     "customizations": {
       "codespaces": {
         "repositories": {
           "my_org/my_repo": {
             "permissions": "write-all"
           }
         }
       }
     }
   }
   ```

## Авторизация запрошенных разрешений

Если в файле `devcontainer.json` определены дополнительные разрешения репозитория, во время создания codespace или конфигурации предварительной сборки для этого репозитория появится запрос на просмотр и авторизацию разрешений при необходимости. При авторизации разрешений для репозитория GitHub Codespaces не будет повторно запрашивать данные, пока набор запрошенных разрешений для репозитория не будет изменен.

![Снимок экрана: страница запрошенных разрешений. Два разрешения отображаются как запрошенные: разрешение на чтение метаданных и разрешение на запись для проблем.](/assets/images/help/codespaces/codespaces-accept-permissions.png)

Авторизуйте разрешения только для тех репозиториев, которые вы знаете и которым доверяете. Если вы не доверяете набору запрошенных разрешений, нажмите **Продолжить без авторизации**, чтобы создать кодовое пространство с базовым набором разрешений. Отклонение дополнительных разрешений может повлиять на функциональные возможности проекта в кодовом пространстве, поскольку кодовое пространство будет иметь доступ только к тому репозиторию, из которого оно был создано.

Вы можете авторизовать только те разрешения, которые есть у вашей личной учетной записи. Если кодовое пространство запрашивает разрешения в отношении репозиториев, к которым у вас нет доступа, обратитесь к владельцу или администратору соответствующего репозитория для получения доступа, а затем попробуйте создать кодовое пространство еще раз.

## Дополнительные материалы

* [Настройка параметров пользователя](/ru/codespaces/setting-your-user-preferences)
* [Настройка codespace](/ru/codespaces/customizing-your-codespace)