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 brancher, hente, rebase og pushe egne brancher. Push som vanlig:
git push -u origin min-branch gh pr create --head min-branch
Uten terminal pusher ikke gh pr create for deg, så push først.
På Linux virker -u med en gang. På macOS er .git/config skrivebeskyttet i sandkassen, så cplt pusher uten -u og setter upstream for branchen når økta er ferdig. Til da oppgir du branchen når du pusher: git push origin HEAD:min-branch.
Har agenten klonet et repo inne i prosjektmappa, legg det til med cplt link før økta starter. Ellers setter ikke cplt upstream der.
Når virker det ikke? Kan ikke cplt sette upstream, skriver den kommandoen du kjører selv utenfor cplt: git branch -u origin/min-branch min-branch. Den står i meldingen når økta slutter, eller når du pusher i en stille økt. Det skjer når
- du kjørte
cplt exec, som er stille som standard, eller startet med--quiet - du startet med
--no-auditeller--no-scratch-dir - en prosess fra økta fortsatt kjørte da den sluttet
- du pushet med andre flagg eller en refspec som
HEAD:min-branch, ikke baregit push -u <remote> <branch>ellergit push -u <remote> HEAD - branchen eller remoten ikke finnes lenger
- git-vakta ville stoppet pushen, for eksempel til default branch (se Det cplt stopper)
Med sikkerhetsnivået permissive eller full-trust er git-vakta av, og cplt rører ikke pushen. Da pusher git, melder feil på .git/config og sier likevel at upstream er satt. Det stemmer ikke. Kjør git branch -u selv utenfor cplt.
git branch -u og --set-upstream-to inne i økta blir heller ikke lagret på macOS.
Det cplt stopper
To vakter står på som standard:
- Git-vakta stopper push til default branch og force push.
mainogmasterer alltid beskyttet. Med sikkerhetsnivåetstrictstopper 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. Det samme gjelder .git/remotes og .git/branches, som kan peke git mot en annen remote. Disse må du kjøre selv, i en vanlig terminal:
git configoggit config --globalgit remote addoggit remote set-urlgit branch -u, når cplt ikke satte upstream selv (se Push og pull request)git clone,git initoggit 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 branchbeskyttelsen 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.
Start GPG-agenten før økten. Sandkassen stenger skriving til ~/.gnupg, så gpg får trolig ikke startet agenten selv. Kjør dette utenfor cplt:
gpgconf --launch gpg-agent
GPG-signering stilles inn i cplt, ikke i nav-pilot. nav-pilot sender ikke flagg som --allow-gpg-signing videre til cplt. Sett dem i cplt-konfigurasjonen som vist over. Git over SSH er stengt som standard, så bruk HTTPS.