Bir kod barındırıcısı bağlama
Control Center, uygulama genelinde forge olarak adlandırılan üç kod barındırıcısıyla çalışır: GitHub, GitLab ve Bitbucket Cloud. Hiçbiri varsayılan değildir. Birini bağlayın, her şey çalışır; birkaçını bağlayın, tek bir çalışma alanı hepsinden aynı anda depo barındırabilir.
Forge, her deponun bir özelliğidir ve depoyu kaydettiğinizde origin remote’undan okunur. Onu asla siz seçmezsiniz ve yanlış yapılabilecek çalışma alanı başına bir ayar yoktur.
Bir forge bağlama
Bölüm başlığı “Bir forge bağlama”- Ayarlar → Çalışma alanı → Profil ve kimlik’i açın (
/settings/workspace/profile). - Kod barındırma kartını bulun. Desteklenen her forge, bağlı olsun olmasın listelenir.
- Satır sunuyorsa … ile oturum aç’a, sunmuyorsa Token ekle’ye basıp bir token yapıştırın.
Oturum aç, sunucunuzun bir uygulama kaydettirdiği forge için görünür — bugün bu, cihaz akışıyla çalışan GitHub’dır (bkz. GitHub App oluşturma). Geri kalan her şey yapıştırılan bir token’dır; tamamlanamayacak bir düğme yerine dürüst olanak budur.
Her iki durumda da kimlik bilgisi size aittir ve sunucuda yaşar; kullanıcı kimliğinize göre anahtarlanır: token, yazdığınız makinede saklanmaz, oturum açtığınız her cihaz aynı token’ı kullanır ve başka hiçbir üye onu okuyamaz. Bir sonraki istekte yürürlüğe girer — yeniden başlatılacak bir şey yoktur ve bağlantıyı kesmek, gönderilmesini anında durdurur.
Her satır, kimlik bilgisinin nereden geldiğini söyler; çünkü “token’ım çalışmıyor” ile “başka bir token yanıt veriyor” arasındaki fark budur:
| Alt başlık | Anlamı |
|---|---|
Signed in as octocat |
Kendi kimlik bilginiz kullanılıyor |
Signed in as octocat · via this server's app |
Sunucunun uygulama kimliği yanıt veriyor — siz oturum açmadınız |
Signed in as octocat · from the environment |
Yanıt veren, kimlik bilginiz değil, bir sunucu ortam değişkeni |
Not connected |
Bu forge için hiç kimlik bilginiz yok |
Her forge hangi token’ı ister
Bölüm başlığı “Her forge hangi token’ı ister”| Forge | Token | Nerede oluşturulur |
|---|---|---|
| GitHub | Klasik: repo ve read:org. İnce taneli: Contents + Pull requests (read/write), Checks + Actions (read) |
github.com → Settings → Developer settings → Tokens |
| GitLab | api kapsamlı bir kişisel erişim token’ı |
gitlab.com → User settings → Access tokens |
| Bitbucket | Bir Atlassian API token’ı ve hesap e-postanız | id.atlassian.com → Security → API tokens |
Bitbucket, kullanıcı adı olarak hesap e-postanızla ve parola olarak da token’la kimlik doğrular. Hangi e-postayı token’la eşleştireceğini bilmesi için sunucu ortamında BITBUCKET_EMAIL ayarlayın.
Ya da ortamı kullanın
Bölüm başlığı “Ya da ortamı kullanın”Headless ya da CI kurulumlarında sunucu şunları okur:
- GitHub —
GITHUB_TOKEN, ardındanGH_TOKEN - GitLab —
GITLAB_TOKEN, ardındanCI_JOB_TOKEN - Bitbucket —
BITBUCKET_API_TOKEN, ardındanBITBUCKET_TOKEN(BITBUCKET_EMAILile birlikte)
Bunlar sizin değil, sunucunun kimlik bilgisidir ve bu ayrım kritik önem taşır: sizin adınıza yapılan bir istek, sizin kimlik bilginizi ve başka hiçbir şeyi kullanır; dolayısıyla ortam sizin yerinize sessizce geçmez. Arkasında insan olmayan işler — webhook’lar, PR yoklaması, bilet eşitleme — önce sunucunun uygulama kimliğini, sonra sunucu sahibinin kimlik bilgisini, en sonunda da ortamı çözer. Bu sıra sabittir; böylece “oturum açtım ve hiçbir şey değişmedi” asla desteklenen bir sonuç olmaz.
Her forge’da farklı bir kişisiniz
Bölüm başlığı “Her forge’da farklı bir kişisiniz”Aynı kişi GitHub’da octocat, GitLab’da ise bambaşka biridir. Control Center kimliğinizi forge başına çözer ve her depo için doğru olanı kullanır; karma bir çalışma alanında “İncelemen gerekiyor”, “Benim oluşturduklarım” ve “Onaylandı” ifadelerinin doğru olmasını sağlayan da budur.
Bir forge’ın kimliği çözülemediyse, depoları her şeyle eşleşmek yerine gelen kutusuna hiçbir şey katmaz. Gelen kutusu da her şeyi yakaladığınızı iddia etmek yerine bunu söyler.
Tek gelen kutusu, her forge
Bölüm başlığı “Tek gelen kutusu, her forge”Gelen kutusu ve PR kuyruğu, çalışma alanında temsil edilen her forge’a yayılır ve sonuçları tek bir akışta birleştirir — bir GitHub pull request’i ile bir Bitbucket pull request’i, satıcıya göre gruplanmak yerine zamana göre sıralanarak yan yana durur.
Hatalar yalıtılmıştır. Çalışmayan, hız sınırına takılan ya da bağlı olmayan bir forge hiçbir şey katmaz ve diğerlerine dokunmaz; gelen kutusunun tamamını asla boşaltmaz. Kendi depoları, forge kendine gelene kadar bilinen son durumunu göstermeye devam eder.
Her forge neler yapabilir
Bölüm başlığı “Her forge neler yapabilir”Her forge çekirdek döngüyü destekler: pull request’leri listelemek ve açmak, diff’leri okumak, satır içi ve üst düzey yorum yapmak, incelemek, birleştirmek ve kapatmak. Bunun ötesinde gerçekten farklılaşırlar ve Control Center, sessizce başarısız olan bir denetim göstermek yerine bir forge’ın yapamadığını gizler.
| Yetenek | GitHub | GitLab | Bitbucket |
|---|---|---|---|
| Toplu (bekleyen) incelemeler | ✓ | ✓ | — |
| Değişiklik isteme | ✓ | ✓ | ✓ |
| Dosya başına “görüldü” durumunun eşitlenmesi | ✓ | — | — |
| Emoji tepkileri | ✓ | ✓ | — |
| Ekip / grup inceleyicileri | ✓ | ✓ | — |
| Önerilen inceleyiciler | ✓ | — | ✓ |
| PR’daki CI sonuçları | ✓ | ✓ | ✓ |
| Bir CI işinin adımlarına/loglarına inebilme | ✓ | ✓ | — |
| Yığılmış pull request’ler | ✓ | — | — |
| PR açıklama şablonları | ✓ | ✓ | — |
| Bildirim yoklaması | ✓ | — | — |
| Zengin kullanıcı profilleri | ✓ | ✓ | — |
| Sunucu tarafında PR head ref | ✓ | ✓ | — |
Bir yetenek eksikse özellik dürüstçe geriler:
- Görüldü durumu yine çalışır, ama yalnızca onu ayarladığınız cihazda.
- Bitbucket’ta toplu incelemeler yorum yorum gönderilir; böylece inceleyiciler onları hepsi bir anda değil, tek tek gelirken görür.
- Bitbucket’ta PR head ref olmaması, bir pull request’i checkout etmenin kaynak dalını adıyla çekmesi anlamına gelir; bu da o dal silindiğinde başarısız olur.
Sözlük
Bölüm başlığı “Sözlük”GitLab, bir pull request’e merge request der. Control Center kendi modeli boyunca “pull request” der ve o forge hakkında konuşurken her forge’ın kendi terimini kullanır.
Sorun giderme
Bölüm başlığı “Sorun giderme”PR listesi boş ve bir forge’ın bağlı olmadığını söylüyor
Bölüm başlığı “PR listesi boş ve bir forge’ın bağlı olmadığını söylüyor”O forge için hiç kimlik bilginiz yok. Ayarlar → Çalışma alanı → Profil ve kimlik → Kod barındırma altında oturum açın ya da bir token yapıştırın. Diğer forge’ların depoları etkilenmez.
Bir forge bağladım ama depoları hâlâ hiçbir şey göstermiyor
Bölüm başlığı “Bir forge bağladım ama depoları hâlâ hiçbir şey göstermiyor”Satırın alt başlığına bakın. “bu sunucunun uygulaması üzerinden” ya da “ortamdan” yazıyorsa, beklediğinizden farklı bir kimlik bilgisi yanıt veriyordur — istediğiniz her şeyde kendi kimlik bilginiz kazanır; dolayısıyla aksini söylüyorsa sizinki kaydedilmemiştir.
Bir depo kaydolmuyor
Bölüm başlığı “Bir depo kaydolmuyor”Kayıt için üçünün de olması gerekir: yol bir git çalışma ağacının içinde olmalı, bir origin remote’u bulunmalı ve bu remote github.com, gitlab.com ya da bitbucket.org adresini göstermeli. Bkz. Bir çalışma alanına depo ekleme.
Yoğun kullanımdan sonra her şey bir süre çalışmayı durduruyor
Bölüm başlığı “Yoğun kullanımdan sonra her şey bir süre çalışmayı durduruyor”Bu, hız sınırı devre kesicisidir. Bir forge birincil sınırına ulaştığını bildirdiğinde, istemci pencere geçene kadar ağ çağrısı yapmadan daha fazla isteği yerel olarak başarısız kılar — böylece bir yeniden deneme fırtınası sınırı derinleştiremez. Geçici hatalar üstel geri çekilmeyle yeniden denenir.