Guider

Git og GitHub i sandkassen

Hva agenten kan gjøre med git og gh i cplt, og hva du må gjøre selv.

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

Før første økt

SSH-nøklene dine er stengt i sandkassen, så git må bruke HTTPS med tokenet fra gh. Kjør dette i terminalen, utenfor cplt:

gh auth login
gh auth setup-git
git remote -v          # skal vise https://github.com/...

Viser git remote -v git@github.com:, se Permission denied (publickey).

Push og pull request

Agenten kan committe, lage grener, hente, rebase og pushe egne grener. Be den pushe med grennavnet og oppgi grenen når den lager pull requesten:

git push origin HEAD:min-gren
gh pr create --head min-gren

Uten terminal pusher ikke gh pr create for deg. På macOS fjerner cplt -u fra git push -u, så grenen får ingen upstream.

Det cplt stopper

To vakter står på som standard:

  • Git-vakta stopper push til standardgrenen og force push. main og master er alltid beskyttet. Med sikkerhetsnivået strict stopper den all push.
  • gh-vakta lar agenten jobbe mot repoet den startet i, og stopper gh pr merge.

Du merger selv. Hvilke nivåer som finnes, står i Sandkassen.

Andre repoer

Skal agenten jobbe i et repo til, legg det til. cplt finner utsjekkingen på maskinen og sjekker at origin er det repoet du ba om:

cplt link navikt/annet-repo

Repoet får samme tilgang som prosjektmappa: lese, skrive og kjøre.

Kjør dette utenfor cplt

På macOS er .git/config og .git/hooks skrivebeskyttet, fordi de kan få git til å kjøre kode utenfor sandkassen. Disse må du kjøre selv, i en vanlig terminal:

  • git config og git config --global
  • git remote add og git remote set-url
  • git clone, git init og git submodule add
  • å lage eller endre git-hooks

Feilmeldingene står under Git og GitHub i Feil i sandkassen.

Push fra OpenCode

Gjelder macOS. gh auth login legger tokenet i nøkkelringen. Copilot når den, OpenCode gjør ikke, så git push fra OpenCode får ikke noe token. cplt fjerner også GH_TOKEN fra miljøet til OpenCode. Send det inn:

cplt config set sandbox.pass_env GH_TOKEN
export GH_TOKEN=$(gh auth token)   # i skallet du starter nav-pilot fra

Da ligger tokenet ditt i miljøet til agenten, og den kan bruke det mot GitHub uten å gå via gh-vakta.

Signerte commits

~/.gnupg og ~/.ssh er stengt, så cplt slår av signering i sandkassen. Commitene til agenten blir usignerte. Krever grenbeskyttelsen signerte commits, kan du slippe agenten til GPG-agenten din:

cplt config set sandbox.allow_gpg_signing true --force

Den private nøkkelen er fortsatt stengt, men agenten kan be GPG-agenten signere hva som helst mens økten varer. Signering med SSH-nøkkel (gpg.format=ssh) virker ikke.