Guider

Flere repoer og deling i team

Jobber agenten i en tjeneste og et bibliotek samtidig, legger du til det andre repoet. Skriv det i .cplt.toml, så får kollegaene samme oppsett med én kommando.

brew update
brew upgrade navikt/tap/nav-pilot navikt/tap/cplt
copilot update    # Copilot CLI
opencode upgrade  # hvis du bruker opencode

Legg til et repo til

Stå i repoet du starter agenten fra, og oppgi det andre repoet med navn. cplt finner utsjekkingen på maskinen din og sjekker at origin er det repoet du ba om:

cplt link navikt/sykepenger-model

cplt leter ved siden av repoet du står i, og i mappestrukturen vert/org/repo hvis du bruker den. Ligger utsjekkingen et annet sted, oppgi mappa. Den blir også sjekket:

cplt link navikt/sykepenger-model ~/kode/sykepenger-model

Lenken gjelder denne utsjekkingen og alle senere økter. Oppstartsoversikten viser hvilke repoer som er med. Fjern lenken igjen med --unlink:

cplt link navikt/sykepenger-model --unlink

Trenger du repoet bare én gang, bruk --repo-dir i stedet. Det lagrer ingenting:

cplt --repo-dir ~/kode/sykepenger-model

Et lenket repo får det samme som prosjektmappa:

  • Agenten kan lese, skrive og kjøre programmer i hele repoet.
  • gh pr create og andre skrivekommandoer i gh virker mot repoet.
  • Git-vakten beskytter default branch i hvert repo, også om den heter noe annet enn main.
  • [deny] i repoets egen .cplt.toml gjelder.
  • Rapporten etter økta viser endringene i hvert repo for seg.

Del lista med teamet

Trenger alle i teamet de samme repoene, legg til --propose. Da lenker cplt repoet for deg og skriver det inn i .cplt.toml. Fila blir laget hvis den ikke finnes, og resten av den blir stående:

cplt link --propose navikt/sykepenger-model
git add .cplt.toml
git commit -m "chore: propose sykepenger-model for cplt sessions"
git push

Fila får en liste med navn på repoer, aldri stier:

.cplt.toml
[propose]
repos = ["navikt/sykepenger-model", "navikt/spleis-testdata"]

Lista er et forslag. Den gir ingen tilgang før hver kollega har godkjent den på sin egen maskin. Fila må være sjekket inn: cplt ser bort fra repos i en .cplt.toml som ikke er committet.

Det kollegaen ser

Når en kollega har hentet endringen og starter agenten, sier cplt fra om forslaget før oppstartsoversikten. Agenten får ikke tilgang til repoene ennå:

[cplt] Untrusted .cplt.toml: 1 unapproved permission(s), not applied. Review: cplt trust
  ○ repos: navikt/sykepenger-model, navikt/spleis-testdata (each resolved and origin-verified on this machine)
  Approve: cplt trust accept --all

Se hele forslaget først. Der står det også hvilke repoer cplt fant på maskinen:

cplt trust show

Godkjenn bare repoene. cplt trust accept --all godkjenner også resten av forslaget:

cplt trust accept repos

cplt finner hvert repo og sjekker origin, akkurat som cplt link. Mangler et repo på maskinen, spør cplt om det skal klones ved siden av repoet du står i:

Clone navikt/sykepenger-model into /Users/deg/kode/sykepenger-model? [Y/n]

Svarer du ja, kloner cplt repoet, sjekker origin og lenker det. Uten terminal skriver cplt bare klonekommandoen og kjører ingenting. Til slutt står det hvor mange av de foreslåtte repoene som er lenket.

Kloner du et repo senere, sier oppstarten fra om at det ikke er lenket. Kjør cplt trust accept repos på nytt, så blir det lagt til. Det samme gjelder når noen legger et nytt repo i lista.

Har du allerede lenket et repo selv, lar godkjenningen det være. Angrer du, fjern det godkjenningen la til:

cplt trust revoke repos

Hva godkjenningen gir

Hvert repo du godkjenner, får samme tilgang som prosjektmappa: lese, skrive og kjøre. Fem repoer i lista er fem slike tilganger. Derfor er det et eget steg:

  • Lista har navn, ikke stier. En innsjekket fil kan ikke peke cplt til en mappe fila selv velger. Det er maskinen din som bestemmer hvor repoene ligger.
  • Et forslag som ikke er godkjent, gir ingenting.
  • --accept-repo-config godkjenner ikke repoer. Det flagget gjelder én økt, og en lenke varer.
  • Godkjenningen gjelder akkurat dette forslaget i denne utsjekkingen. Endrer noen lista, må du godkjenne på nytt.
  • cplt kloner aldri noe uten å spørre deg.

«origin verified» betyr at origin stemte da du godkjente. På Linux kan agenten endre .git/config i en mappe den har hatt skrivetilgang til. Mangler det ekte repoet, kan en slik mappe bli lenket i stedet. Den får ikke mer tilgang enn den hadde før, men du kan tro at riktig repo er med når det ikke er det.

Begrensninger

  • Har du to kloner av samme repo, kan bare én av dem godkjenne repos, fordi godkjenningen lagres per origin. Bruk cplt link i den andre.
  • En fork blir ikke funnet, fordi origin peker på forken.
  • Et repo uten origin, eller med bare upstream, blir ikke funnet.
  • Et monorepo kan bare legges til i sin helhet.
  • Bare repoet du starter fra, kan foreslå. Står det [propose] i et lenket repo, sier cplt fra ved oppstart og bruker det ikke.

Resten av .cplt.toml står i Sett opp cplt i et repo. Git og pull requests i flere repoer står i Git og GitHub i sandkassen.