Hoppa till innehåll

Anslut en kodvärd

Control Center arbetar med tre kodvärdar — så kallar appen dem genomgående: GitHub, GitLab och Bitbucket Cloud. Ingen av dem är standard. Anslut en och allt fungerar; anslut flera och en och samma arbetsyta kan hålla repos från alla tre samtidigt.

Kodvärden är en egenskap hos varje repo och läses från dess origin-remote när du registrerar det. Du väljer aldrig någon själv, och det finns ingen inställning per arbetsyta som kan bli fel.

  1. Öppna Inställningar → Arbetsyta → Profil och identitet (/settings/workspace/profile).
  2. Hitta kortet Kodvärd. Varje kodvärd som stöds listas, ansluten eller inte.
  3. Tryck Logga in med … om raden erbjuder det, eller Lägg till token och klistra in en.

Logga in visas för en kodvärd som din server har en registrerad app för — i dag gäller det GitHub, via ett enhetsflöde (se Skapa GitHub-appen). Allt annat är en inklistrad token, vilket är den ärliga lösningen i stället för en knapp som inte går att slutföra.

Hur som helst är inloggningsuppgiften din och ligger på servern, knuten till ditt användar-id: ingen token lagras på maskinen du skrev in den på, varje enhet du loggar in från använder samma, och ingen annan medlem kan läsa den. Den börjar gälla vid nästa begäran — det finns inget att starta om, och kopplar du från slutar den skickas omedelbart.

Varje rad berättar varifrån dess inloggningsuppgift kommer, för det är skillnaden mellan ”min token fungerar inte” och ”en annan token svarar”:

Undertext Betydelse
Inloggad som octocat Din egen inloggningsuppgift används
Inloggad som octocat · via den här serverns app Serverns appidentitet svarar — du är inte inloggad
Inloggad som octocat · från miljön En miljövariabel på servern svarar, inte din inloggningsuppgift
Inte ansluten Du har ingen inloggningsuppgift för den här kodvärden
Kodvärd Token Var du skapar den
GitHub Classic: repo och read:org. Fine-grained: Contents + Pull requests (read/write), Checks + Actions (read) github.com → Settings → Developer settings → Tokens
GitLab En personlig åtkomsttoken med api gitlab.com → User settings → Access tokens
Bitbucket En Atlassian-API-token plus din kontos e-postadress id.atlassian.com → Security → API tokens

Bitbucket autentiserar med din kontos e-postadress som användarnamn och token som lösenord. Ange BITBUCKET_EMAIL i serverns miljö så att den vet vilken e-postadress som ska paras ihop med token.

Vid en headless- eller CI-installation läser servern dessa:

  • GitHub — GITHUB_TOKEN, sedan GH_TOKEN
  • GitLab — GITLAB_TOKEN, sedan CI_JOB_TOKEN
  • Bitbucket — BITBUCKET_API_TOKEN, sedan BITBUCKET_TOKEN (med BITBUCKET_EMAIL)

Det här är serverns inloggningsuppgift, inte din, och skillnaden är avgörande: en begäran som görs för din räkning använder din inloggningsuppgift och inget annat, så miljön kliver aldrig tyst in i ditt ställe. Arbete utan en människa bakom sig — webhooks, PR-pollning, ärendesynk — löser först serverns appidentitet, sedan serverägarens inloggningsuppgift och sist miljön. Ordningen är fast, så att ”jag loggade in och inget ändrades” aldrig är ett resultat som stöds.

Samma människa är octocat på GitHub och något helt annat på GitLab. Control Center löser din identitet per kodvärd och använder rätt identitet för varje repo, och det är vad som gör ”behöver min granskning”, ”skapad av mig” och ”du godkände det här” korrekt i en blandad arbetsyta.

Om en kodvärds identitet inte har lösts upp bidrar dess repos inte med något till inkorgen i stället för att matcha allt. Inkorgen säger det i stället för att påstå att du är ikapp.

Inkorgen och PR-kön frågar ut varje kodvärd som finns i arbetsytan och slår samman resultaten till en enda ström — en pull request från GitHub och en från Bitbucket ligger sida vid sida, sorterade efter tid i stället för grupperade efter leverantör.

Fel isoleras. En kodvärd som ligger nere, har nått sin hastighetsgräns eller inte är ansluten bidrar inte med något och lämnar de andra orörda; den tömmer aldrig hela inkorgen. Dess egna repos fortsätter visa sitt senast kända tillstånd tills den är tillbaka.

Varje kodvärd stöder kärnloopen: lista och öppna pull requests, läsa diffs, kommentera inline och på översta nivån, granska, slå ihop och stänga. Utöver det skiljer de sig verkligen åt, och Control Center döljer det en kodvärd inte kan i stället för att visa en kontroll som misslyckas tyst.

Förmåga GitHub GitLab Bitbucket
Batchade (väntande) granskningar ✓ ✓ —
Begär ändringar ✓ ✓ ✓
”Visad”-status per fil, synkroniserad ✓ — —
Emoji-reaktioner ✓ ✓ —
Team-/gruppgranskare ✓ ✓ —
Föreslagna granskare ✓ — ✓
CI-resultat på en PR ✓ ✓ ✓
Steg och loggar för ett CI-jobb ✓ ✓ —
Staplade pull requests ✓ — —
Mallar för PR-beskrivning ✓ ✓ —
Pollning av aviseringar ✓ — —
Utökade användarprofiler ✓ ✓ —
PR-head-ref på serversidan ✓ ✓ —

Där en förmåga saknas degraderar funktionen ärligt:

  • ”Visad”-status fungerar fortfarande, men bara på den enhet du ställde in den på.
  • Batchade granskningar på Bitbucket publiceras kommentar för kommentar, så granskare ser dem komma in en och en i stället för alla på en gång.
  • Ingen PR-head-ref på Bitbucket innebär att en utcheckning av en pull request hämtar dess källgren via namn, vilket misslyckas så snart grenen har tagits bort.

GitLab kallar en pull request för en merge request. Control Center säger ”pull request” i hela sin egen modell och använder varje kodvärds eget ord när den talar om just den kodvärden.

PR-listan är tom och säger att en kodvärd inte är ansluten

Avsnitt med rubriken “PR-listan är tom och säger att en kodvärd inte är ansluten”

Du har ingen inloggningsuppgift för den kodvärden. Logga in eller klistra in en token under Inställningar → Arbetsyta → Profil och identitet → Kodvärd. Andra kodvärdars repos påverkas inte.

Jag anslöt en kodvärd men dess repos visar fortfarande inget

Avsnitt med rubriken “Jag anslöt en kodvärd men dess repos visar fortfarande inget”

Kontrollera radens undertext. Om det står ”via den här serverns app” eller ”från miljön” svarar en annan inloggningsuppgift än den du förväntade dig — din egen inloggningsuppgift vinner för allt du begär, så står det något annat sparades inte din.

Registreringen kräver alla tre: sökvägen ligger i ett git-arbetsträd, den har en origin-remote, och den remoten pekar på github.com, gitlab.com eller bitbucket.org. Se Lägg till repos i en arbetsyta.

Det är brytaren för hastighetsgränsen. När en kodvärd signalerar sin primära gräns låter klienten ytterligare begäranden misslyckas lokalt, utan nätverksanrop, tills fönstret har passerat — så en storm av återförsök kan inte fördjupa gränsen. Tillfälliga fel görs om med exponentiell backoff.