Skip to main content

Устранение неполадок проверки GPG для GitHub Codespaces

В этой статье приводятся рекомендации по устранению неполадок, связанных с подписью фиксаций в пространствах кода.

Если включить проверку GPG, GitHub Codespaces автоматически подписывает фиксации в пространствах кода, создаваемых из выбранных репозиториев. Дополнительные сведения см. в разделе Управление проверкой GPG для GitHub Codespaces.

После включения проверки GPG он автоматически вступит в силу в любых новых пространствах кода, создаваемых из соответствующих репозиториев. Чтобы проверка GPG вступила в силу в существующем активном пространстве кода, необходимо остановить и перезапустить пространство кода. Дополнительные сведения см. в разделе Остановка и запуск пространства кода.

Если GitHub Codespaces не удалось подписать фиксацию, может появиться сообщение gpg failed to sign the data об ошибке в командной строке или во всплывающем окне Visual Studio Code .

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

  • Если проверка GPG ранее была включена в параметрах GitHub Codespaces, и вы недавно отключили проверку GPG или удалили репозиторий из списка доверенных репозиториев, Git может по-прежнему пытаться подписать фиксации. Дополнительные сведения см. в разделе "Ошибки после отключения проверки GPG".
  • Если для пространства кода включена проверка GPG, возможно, вы переопределили конфигурацию Git, необходимую для подписывания фиксаций. Дополнительные сведения см. в разделе "Ошибки, вызванные конфликтующей конфигурацией Git".
  • Если проверка GPG отключена для пространства кода и возникает ошибка при попытке фиксации из представления "Управление версиями" в VS Code, это может быть связано с параметрами VS Code. Дополнительные сведения см. в разделе "Ошибки в представлении VS Code "Управление версиями".

Ошибки после отключения проверки GPG

При включении проверки GPG GitHub Codespaces подписывает все фиксации, которые вы делаете в пространствах кода по умолчанию. Для этого необходимо задать commit.gpgsign для параметра конфигурации Git значение true.

Если вы отключили проверку GPG и работаете в существующем пространстве кода, это значение по-прежнему будет задано true. Это означает, что GitHub Codespaces попытается подписать фиксации, но не сможет сделать это, так как вы отключили параметр проверки GPG.

Чтобы сохранить регулярные фиксации без знака в пространстве кода, сбросить commit.gpgsign значение false по умолчанию, введя следующую команду в терминале.

Shell
git config --unset commit.gpgsign

Чтобы проверка, что значение было правильно удалено из конфигурации, можно ввестиgit config --list. В списке не должно отображаться значение commit.gpgsign .

Ошибки, вызванные конфликтующей конфигурацией Git

Чтобы автоматически подписать фиксации, GitHub Codespaces задает определенные значения конфигурации Git в пространстве кода. Если переопределить значения, заданные GitHub Codespaces, вы не сможете подписать фиксации.

Вы можете случайно переопределить эти значения, если вы связали GitHub Codespaces с репозиторием dotfiles, который содержит файлы конфигурации Git. Дополнительные сведения об использовании dotfiles с GitHub Codespacesсм. в разделе "Персонализация GitHub Codespaces для вашей учетной записи".

Проверка конфликтующей конфигурации

Чтобы подписать фиксации с помощью GPG, GitHub Codespaces автоматически задает следующие значения конфигурации Git на уровне системы.

Параметр конфигурацииОбязательное значение
user.nameДолжен соответствовать полному набору имен в профиле GitHub
credential.helperНужно задать значение /.codespaces/bin/gitcredential_github.sh
gpg.programНужно задать значение /.codespaces/bin/gh-gpgsign

Чтобы проверка правильно задать эти значения в пространстве кода, можно использовать git config --list --show-origin команду. Так как GitHub Codespaces задает эту конфигурацию на уровне системы, необходимые параметры конфигурации должны поступать из /usr/local/etc/gitconfig.

$ git config --list --show-origin
file:/usr/local/etc/gitconfig   credential.helper=/.codespaces/bin/gitcredential_github.sh
file:/usr/local/etc/gitconfig   user.name=Mona Lisa
file:/usr/local/etc/gitconfig   gpg.program=/.codespaces/bin/gh-gpgsign

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

  • Значение user.signingkey конфигурации Git
  • Значение commit.gpgsign конфигурации Git
  • Установка вручную GITHUB_TOKEN

Удаление конфликтующей конфигурации

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

Например, если глобальный .gitconfig файл на локальном компьютере содержит gpg.program значение, и этот файл был отправлен в репозиторий dotfiles, связанный с GitHub Codespaces, вы можете удалить gpg.program из этого файла и задать его на уровне системы на локальном компьютере.

Примечание. Любые изменения в репозитории dotfiles будут применяться к новым пространствам кода, создаваемым, но не к существующим пространствам кода.

  1. На локальном компьютере откройте терминал.

  2. Чтобы удалить конфликтующее значение из ~/.gitconfig (Mac/Linux) или C:\Users\YOUR-USER\.gitconfig (Windows), используйте git config --global --unset команду.

    git config --global --unset gpg.program
    
  3. Отправьте изменение в репозиторий dotfiles в GitHub.

  4. При необходимости, чтобы сохранить локальную конфигурацию, задайте значение еще раз в файле конфигурации Git, который не отправляется в репозиторий dotfiles.

    Например, флаг можно использовать --system для установки конфигурации в файле PATH/etc/gitconfigуровня системы, где PATH находится каталог, в котором установлен Git в вашей системе.

    git config --system gpg.program gpg2
    

Кроме того, если репозиторий dotfiles содержит скрипт установки в распознаваемом файле, например install.sh, можно использовать $CODESPACES переменную среды для добавления условной логики, например только gpg.program если вы не находитесь в пространстве кода. В следующем примере возвращаетсяtrue, -z "$CODESPACES" если вы не находитесь в пространстве кода.

Shell
if [ -z "$CODESPACES" ]; then
  git config --global gpg.program gpg2
fi

Ошибки в представлении VS Code "Управление версиями"

Если проверка GPG отключена в параметрах для GitHub Codespaces, или репозиторий, созданный вами из пространства кода, не находится в списке доверенных репозиториев, Git не должен пытаться подписать фиксации. Если при попытке зафиксировать ошибку подписывания из представления "Управление версиями" в VS Code, необходимо проверка параметры VS Code в пространстве кода.

  1. В левом нижнем углу окна выберите , а затем щелкните Параметры.

    Снимок экрана: раздел веб-клиента VS Code . Значок шестеренки и параметр "Параметры" в меню выделены оранжевым контуром.

  2. На вкладке "Пользователь" в строке поиска найдите "gpg".

  3. Убедитесь, что параметр "Включить подписывание фиксации с помощью GPG или X.509" не выбран.

    Снимок экрана: вкладка "Параметры пользователя". Выбранная проверка box с меткой "Включение подписывания фиксации с помощью GPG или X.509" выделена оранжевым контуром.

Если этот параметр включен, следует отменить выбор проверка box, чтобы остановить VS Code, пытаясь подписать фиксации, или включить проверку групповой политики для репозитория, в который вы работаете, чтобы фиксации могли быть успешно подписаны.

При изменении параметров VS Code необходимо убедиться, что Параметры синхронизация включена, если вы хотите поделиться изменениями с другими пространствами кода, которые вы создали. Вы должны включить синхронизацию Параметры только в пространстве кода, созданном из доверенного репозитория. Дополнительные сведения см. в разделе Персонализация GitHub Codespaces для вашей учетной записи.

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