Ga naar inhoud

Repos toevoegen aan een werkruimte

Deze gids laat zien hoe je een Git-checkout in een werkruimte registreert, opnieuw indexeert en weer verwijdert.

Repo’s zijn werkruimtegebonden. Er is geen globaal register en geen koppelstap: een repo toevoegen en hem in een werkruimte zetten zijn dezelfde handeling. Dezelfde checkout die in twee werkruimtes is geregistreerd, wordt twee onafhankelijke rijen met twee verschillende id’s — over werkruimtes heen is de identiteit van een repo zijn bestandssysteempad, nooit zijn id.

Een map kan alleen worden geregistreerd als aan alle drie deze voorwaarden is voldaan:

  1. Hij staat binnen een git-worktree.
  2. Die worktree heeft een origin-remote.
  3. De origin-remote wijst naar een ondersteunde forge: github.com, gitlab.com of bitbucket.org.

Al het andere wordt op het moment van registratie geweigerd met een expliciete melding: “Folder is not inside a git work tree.”, “No origin remote configured for this repository.” of “The origin remote is not hosted on a supported forge (github.com, gitlab.com, bitbucket.org).”. Er is geen modus die alleen lokaal werkt.

De forge wordt uit de remote gelezen en op de repo opgeslagen — je kiest hem nooit zelf. Een werkruimte kan repo’s van alle drie tegelijk bevatten, en met elk wordt via zijn eigen API en met zijn eigen referentie gecommuniceerd. Geneste namespaces van GitLab blijven behouden, dus gitlab.com/group/subgroup/project wordt geregistreerd met eigenaar group/subgroup en naam project.

De map moet ook op de machine staan die cc_server host, binnen een van de --repo-roots-mappen van die server. Die allowlist staat standaard op de homedirectory van de servergebruiker, en browsen boven een root wordt geweigerd.

  1. Open Instellingen → Werkruimte → Repository’s (/workspaces/<id>/settings/workspace/repositories).
  2. Klik op Repository toevoegen.

Het dialoogvenster is een doorbladerbare browser over het bestandssysteem van de server, niet dat van jou. Het is dezelfde flow op desktop, web en telefoon, want een native mapkiezer zou een map op de verkeerde machine kiezen.

  1. Navigeer binnen de geconfigureerde roots van de server. Mappen die git-checkouts zijn, worden gemarkeerd.
  2. Vink er zoveel aan als je maar wilt. De selectie blijft bewaard terwijl je navigeert, zodat je checkouts uit meerdere mappen kunt verzamelen.
  3. Registreer ze in één batch.

Eén mislukte keuze laat de rest van de batch nooit vallen — je krijgt de id’s die zijn aangemaakt plus een fout per pad voor elk pad dat is geweigerd. Als je een pad opnieuw registreert dat al in deze werkruimte aanwezig is, krijg je de bestaande repo terug in plaats van dat er een duplicaat wordt aangemaakt.

Elke geregistreerde repo verschijnt in de lijst met zijn owner/name, een badge met de naam van zijn forge en zijn pad op de server. GitHub-repo’s tonen ook de avatar van de eigenaar; de andere forges hebben geen raadbare URL voor de avatar van de eigenaar, dus vallen ze terug op initialen.

De forgebadge is belangrijk in een gemengde werkruimte: twee repo’s kunnen op verschillende forges beide acme/web heten, en ze gedragen zich anders — wat een review kan doen, en waar een link naartoe gaat.

Registratie activeert een RepoAdded-gebeurtenis met deze werkruimte als scope, wat de pipeline index_code voor die checkout start. Dat is wat de codegraph vult, zodat zoeken en impactanalyse iets hebben om mee te antwoorden.

Alleen bestanden waarvan de taal een meegeleverde grammatica heeft, worden geïndexeerd (Dart, JavaScript, TypeScript, TSX, PHP, Python, Rust, Zig, C, C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB en Ada). Zie Code zoeken met de codegraph.

Elke rij heeft een knop Code indexeren. Klik erop om de indexeerder voor die checkout opnieuw te draaien; terwijl hij draait, wordt de knop een voortgangsweergave die gedane bestanden van het totaal toont, met een annuleerknop. Als hij klaar is, verandert hij in een vinkje met het aantal symbolen, of een waarschuwing als de run is mislukt.

Sleep het handvat op een rij. De volgorde die je instelt, is de volgorde die elke repolijst in de app terugleest.

Het linkpictogram op een rij opent een editor voor de GitHub-eigenaar en repositorynaam van de repo — handig wanneer de remote is hernoemd of overgedragen.

  1. Open Instellingen → Werkruimte → Repository’s.
  2. Klik op het prullenbakpictogram op de rij.
  3. Bevestig “Repository uit werkruimte verwijderen?”

Het dialoogvenster zegt wat het doet: “name wordt verwijderd uit deze werkruimte. De lokale bestanden op schijf worden niet aangeraakt.”

Verwijderen schrapt de reporij uit deze werkruimte en verwijdert in cascade de codegraph-rijen ervan — symbolen, randen, bestanden en indexcontrolepunten — plus elke repotoekenning per lid, zijn ruimte-repo-koppelingen en de registraties van zijn geïsoleerde checkouts. Dezelfde checkout die in een andere werkruimte is geregistreerd, is een onafhankelijke rij en blijft onaangetast. Worktrees op schijf waar die registraties naar verwezen, worden door het verwijderen niet afgebroken.