# Solución de problemas de comprobación de GPG para GitHub Codespaces

En este artículo se proporcionan consejos para solucionar problemas de errores relacionados con la firma de las confirmaciones en los espacios de código.

Si habilitas la comprobación de GPG, GitHub Codespaces firma automáticamente las confirmaciones en los espacios de código creados a partir de repositorios seleccionados. Para más información, consulta [Administración de la comprobación de GPG para GitHub Codespaces](/es/codespaces/managing-your-codespaces/managing-gpg-verification-for-github-codespaces).

Una vez habilites la comprobación de GPG, surtirá efecto automáticamente en los nuevos espacios de código que crees a partir de los repositorios pertinentes. Para que la comprobación de GPG surta efecto en un espacio de código activo existente, deberás detener y reiniciar el espacio de código. Para más información, consulta [Detención e inicio de un codespace](/es/codespaces/developing-in-codespaces/stopping-and-starting-a-codespace).

Si GitHub Codespaces no firma una confirmación, puede ver el mensaje de error `gpg failed to sign the data` en la línea de comandos o en una ventana emergente de Visual Studio Code.

En las secciones siguientes de este artículo se proporcionan consejos para conocer las causas comunes de este error.

* Si la comprobación de GPG se ha habilitado anteriormente en la configuración de GitHub Codespaces, y recientemente has deshabilitado la comprobación de GPG o has quitado un repositorio de la lista de repositorios de confianza, Git puede seguir intentando firmar las confirmaciones. Para más información, consulta [Errores después de deshabilitar la comprobación de GPG](#errors-after-disabling-gpg-verification).
* Si la verificación de GPG está habilitada para Codespaces, es posible que hayas anulado la configuración de Git necesaria para firmar tus confirmaciones. Para más información, consulta [Errores causados por conflictos en la configuración de Git](#errors-caused-by-conflicting-git-configuration).
* Si la comprobación de GPG está deshabilitada para el codespace y encuentras un error al intentar realizar un commit desde la vista "Control de código fuente" en VS Code, puede deberse a la configuración de VS Code. Para más información, consulta [Errores en la vista "Control de código fuente" de VS Code](#errors-in-the-vs-code-source-control-view).

## Errores después de deshabilitar la comprobación de GPG

Al habilitar la comprobación de GPG, GitHub Codespaces firma todas las confirmaciones que realices en los espacios de código de forma predeterminada. Esto ocurre al establecer el `commit.gpgsign` valor de configuración de Git a `true`.

Si ha deshabilitado la comprobación de GPG y está trabajando en un espacio de código existente, este valor seguirá estando establecido en `true`. Esto significa que GitHub Codespaces intentará firmar las confirmaciones, pero no podrá hacerlo, ya que has deshabilitado la configuración de comprobación de GPG.

Para seguir realizando confirmaciones normales sin firmar en el espacio de código, restablece `commit.gpgsign` al valor predeterminado de `false` al escribir el siguiente comando en el terminal.

```shell copy
git config --unset commit.gpgsign
```

Para comprobar que el valor se ha eliminado correctamente de la configuración, escribe `git config --list`. No deberías ver un valor para `commit.gpgsign` en la lista.

## Errores causados por una configuración de Git en conflicto

Para firmar automáticamente las confirmaciones, GitHub Codespaces establece unos valores de configuración de Git determinados en el espacio de código. Si invalidas los valores establecidos por GitHub Codespaces, es posible que no puedas firmar las confirmaciones.

Es posible que invalides accidentalmente estos valores si has vinculado GitHub Codespaces con un repositorio dotfiles que contiene archivos de configuración de Git. Para obtener más información sobre cómo usar dotfiles con GitHub Codespaces, consulte [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#dotfiles).

### Comprobación de configuraciones en conflicto

Para firmar las confirmaciones con GPG, GitHub Codespaces establece automáticamente los siguientes valores de configuración de Git en el nivel del sistema.

| Ajuste de configuración | Valor obligatorio                                                        |
| ----------------------- | ------------------------------------------------------------------------ |
| `user.name`             | Debe coincidir con el nombre completo establecido en tu perfil de GitHub |
| `credential.helper`     | Se debe establecer en `/.codespaces/bin/gitcredential_github.sh`         |
| `gpg.program`           | Se debe establecer en `/.codespaces/bin/gh-gpgsign`                      |

Para comprobar que estos valores se establecen correctamente en un espacio de código, puedes usar el comando `git config --list --show-origin`. Dado que GitHub Codespaces establece esta configuración en el nivel del sistema, los valores de configuración necesarios deben proceder de `/usr/local/etc/gitconfig`.

```shell
$ 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
```

Además de los valores enumerados anteriormente, pueden producirse errores si los dotfiles usados en los espacios de código contienen cualquiera de los valores siguientes.

* El valor de configuración de Git `user.signingkey`
* El valor de configuración de Git `commit.gpgsign`
* Un `GITHUB_TOKEN` establecido manualmente

### Eliminación de configuraciones en conflicto

Si deseas mantener habilitada la comprobación automática de GPG para GitHub Codespaces, deberás eliminar cualquier tipo de configuraciones en conflicto de los dotfiles usados en los espacios de código.

Por ejemplo, si el archivo global `.gitconfig` del equipo local contiene un valor `gpg.program` y lo has insertado en un repositorio de dotfiles que está vinculado a GitHub Codespaces, probablemente desearás eliminar `gpg.program` de este archivo y establecerlo en su lugar en el nivel del sistema del equipo local.

> \[!NOTE]
> Los cambios realizados en el repositorio de dotfiles se aplicarán a los nuevos codespaces que crees, pero no a los ya existentes.

1. En el equipo local, abra un terminal.

2. Para quitar el valor en conflicto de `~/.gitconfig` (Mac/Linux) o `C:\Users\YOUR-USER\.gitconfig` (Windows), use el comando `git config --global --unset`.

   ```shell
   git config --global --unset gpg.program
   ```

3. Inserta el cambio en el repositorio de dotfiles en GitHub.

4. Opcionalmente, para mantener la configuración local, establece el valor de nuevo en un archivo de configuración de Git que no insertes en el repositorio de dotfiles.

   Por ejemplo, puedes usar la marca `--system` para establecer la configuración en el archivo de nivel de sistema en `PATH/etc/gitconfig`, donde `PATH` es el directorio en el que está instalado Git en el sistema.

   ```shell
   git config --system gpg.program gpg2
   ```

Como alternativa, si el repositorio de dotfiles contiene un script de instalación en un archivo reconocido como `install.sh`, puedes usar la variable de entorno `$CODESPACES` para agregar lógica condicional, como por ejemplo establecer únicamente `gpg.program` si no te encuentras en un espacio de código. En el ejemplo siguiente, `-z "$CODESPACES"` devuelve `true` si no estás ubicado en un espacio de código.

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

## Errores en la vista "Control de código fuente" de VS Code

Si la comprobación de GPG está deshabilitada en la configuración de GitHub Codespaces o el repositorio desde el que creó el codespace no está en la lista de repositorios de confianza, Git no debería intentar firmar las confirmaciones. Si se produce un error de firma al intentar confirmar desde la vista "Control de código fuente" en VS Code, debes comprobar la configuración de VS Code en el codespace.

1. En la esquina inferior izquierda de la ventana, selecciona **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="Manage" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg>** y, después, haz clic en **Configuración**.

   ![Captura de pantalla del cliente web de VS Code. Están resaltados con un contorno naranja un icono de un engranaje y la opción "Configuración" de un menú.](/assets/images/help/codespaces/vscode-settings.png)

2. En la pestaña "Usuario", en la barra de búsqueda, busca "gpg".

3. Comprueba que el valor "Habilita la firma de confirmación con GPG o X.509" está desactivado.

   ![Captura de pantalla de la pestaña de configuración "Usuario". Una casilla sin seleccionar, etiquetada como "Habilita la firma de confirmación con GPG o X.509", se destaca en naranja.](/assets/images/help/codespaces/gpg-vscode-setting.png)

Si este valor está habilitado, debes anular la selección de la casilla para impedir que VS Code intente firmar las confirmaciones, o bien debes habilitar la comprobación de GPG para el repositorio en el que trabajas, con el fin de que las confirmaciones se puedan firmar correctamente.

Si cambias la configuración de VS Code, debes asegurarte de que la sincronización de configuración está habilitada si quieres compartir los cambios con otros codespaces que crees. Solo debes activar la sincronización de la configuración en los codespaces creados a partir de repositorios de confianza. Para más información, consulta [Personalización de GitHub Codespaces para su cuenta](/es/codespaces/setting-your-user-preferences/personalizing-github-codespaces-for-your-account#settings-sync).

## Información adicional

* [Acerca de la verificación de firma de confirmación](/es/authentication/managing-commit-signature-verification/about-commit-signature-verification)
* [
  `git config`
  ](https://git-scm.com/docs/git-config) en la documentación oficial de Git