Ir al contenido

Añadir repos a un espacio de trabajo

Esta guía te muestra cómo registrar un checkout de Git en un espacio de trabajo, reindexarlo y quitarlo de nuevo.

Los repos están acotados al espacio de trabajo. No hay registro global ni paso de vinculación: añadir un repo y ponerlo en un espacio de trabajo son el mismo acto. El mismo checkout registrado en dos espacios de trabajo se convierte en dos filas independientes con dos IDs distintos: entre espacios de trabajo, la identidad de un repo es su ruta en el sistema de archivos, nunca su ID.

Una carpeta solo se puede registrar si se cumplen las tres condiciones siguientes:

  1. Está dentro de un árbol de trabajo de git.
  2. Ese árbol de trabajo tiene un remoto origin.
  3. El remoto origin apunta a un host de código compatible: github.com, gitlab.com o bitbucket.org.

Cualquier otro caso se rechaza en el momento del registro con un mensaje explícito: “Folder is not inside a git work tree.”, “No origin remote configured for this repository.” o “The origin remote is not hosted on a supported forge (github.com, gitlab.com, bitbucket.org).”. No hay un modo solo local.

El host de código se lee del remoto y se guarda en el repo — tú nunca lo eliges. Un espacio de trabajo puede contener repos de los tres a la vez, y con cada uno se habla a través de su propia API con su propia credencial. Los espacios de nombres anidados de GitLab se conservan, así que gitlab.com/group/subgroup/project se registra con el propietario group/subgroup y el nombre project.

La carpeta también debe estar en la máquina que aloja cc_server, dentro de uno de los directorios --repo-roots de ese servidor. Esa lista de permitidos usa por defecto el directorio home del usuario del servidor, y navegar por encima de una raíz se rechaza.

  1. Abre Ajustes → Espacio de trabajo → Repositorios (/workspaces/<id>/settings/workspace/repositories).
  2. Haz clic en Añadir repositorio.

El diálogo es un navegador por el sistema de archivos del servidor, no por el tuyo. El flujo es el mismo en escritorio, web y teléfono, porque un selector de carpetas nativo elegiría una carpeta de la máquina equivocada.

  1. Navega por las raíces configuradas del servidor. Las carpetas que son checkouts de git se señalan.
  2. Marca tantas como quieras. La selección se mantiene mientras navegas, así que puedes reunir checkouts de varias carpetas.
  3. Regístralos en un solo lote.

Una selección fallida nunca descarta el resto del lote: obtienes los IDs que se crearon más un error por ruta para cada una que se rechazó. Volver a registrar una ruta que ya está en este espacio de trabajo devuelve el repo existente en lugar de crear un duplicado.

Cada repo registrado aparece en la lista con su owner/name, una insignia que indica su host de código y su ruta en el servidor. Los repos de GitHub también muestran el avatar del propietario; los otros hosts de código no tienen una URL de avatar del propietario deducible, así que recurren a las iniciales.

La insignia del host de código importa en un espacio de trabajo mixto: dos repos pueden llamarse ambos acme/web en hosts distintos, y se comportan de forma diferente; lo que puede hacer una revisión y adónde lleva un enlace.

El registro desencadena un evento RepoAdded acotado a este espacio de trabajo, que inicia el pipeline index_code para ese checkout. Eso es lo que rellena el grafo de código, para que la búsqueda y el análisis de impacto tengan algo con lo que responder.

Solo se indexan los archivos cuyo lenguaje tiene una gramática incluida (Dart, JavaScript, TypeScript, TSX, PHP, Python, Rust, Zig, C, C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB y Ada). Consulta Buscar código con el grafo de código.

Cada fila incluye un botón Indexar código. Haz clic en él para volver a ejecutar el indexador de ese checkout; mientras se ejecuta, el botón se convierte en un indicador de progreso que muestra los archivos procesados sobre el total, con un control para cancelar. Cuando termina, se convierte en una marca de verificación con el recuento de símbolos, o en una advertencia si la ejecución falló.

Arrastra el asa de una fila. El orden que fijes es el orden que devuelve cada lista de repos de la app.

El icono de enlace de una fila abre un editor para el propietario de GitHub y el nombre del repositorio del repo, útil cuando el remoto se renombró o se transfirió.

  1. Abre Ajustes → Espacio de trabajo → Repositorios.
  2. Haz clic en el icono de papelera de la fila.
  3. Confirma «¿Quitar repositorio del espacio de trabajo?»

El diálogo dice lo que hace: «name se eliminará de este espacio de trabajo. Los archivos locales en disco no se modifican.»

Quitar elimina la fila del repo de este espacio de trabajo y borra en cascada sus filas del grafo de código —símbolos, aristas, archivos y puntos de control de indexación—, además de cada permiso de repositorio por miembro sobre él, sus vínculos entre espacio y repo y sus registros de checkouts aislados. El mismo checkout registrado en otro espacio de trabajo es una fila independiente y no se ve afectado. Los worktrees en disco a los que apuntaban esos registros no se desmontan con el borrado.