Pull requests ve code review
Pull requests and code review
Bu derste neler öğreneceksin
- Pull request'in amacını ve anatomisini açıklamak
- Review türlerini (Approve, Request changes, Comment) bilmek
- Draft PR ve normal PR arasındaki farkı anlamak
- Merge stratejilerini ve hangi durumda hangisini seçeceğini açıklamak
- Required reviews ve branch protection'ın bağlantısını kurmak
Pull Request (PR), bir branch’teki değişiklikleri başka bir branch’e (genellikle main) merge etme tekliifdir. PR GitHub’ın işbirliğinin merkezindedir ve GH-900’ün en kritik konularından biridir.
Pull Request anatomisi
PR açıldığında şu bileşenler görünür:
| Bileşen | Açıklama |
|---|---|
| Title | Değişikliğin özeti |
| Description | Neden yapıldı, nasıl test edildi |
| Commits tab | PR’daki commit’lerin listesi |
| Files changed | Diff görünümü |
| Conversations | Review yorumları |
| Checks | CI/CD sonuçları |
| Reviewers | Kim review edecek |
| Labels / Assignees | Kategori ve sorumlular |
| Linked issues | İlgili issue’lar |
PR oluşturmak
git switch -c feature/dark-mode
# değişiklikler...
git commit -am "Add dark mode toggle"
git push -u origin feature/dark-mode
gh pr create --title "Add dark mode" --body "Resolves #88"
GitHub web UI’da push sonrası “Compare & pull request” banner’ı çıkar.
Draft PR
Draft PR, incelemeye hazır olmayan ama takıma görünür olması istenen PR’dır. Review yapılamamaz (submit review butonu disable). Hazır olduğunda “Ready for review” tıklanır.
Kullanım senaryoları:
- WIP (Work in Progress) bildirimi
- CI’nın çalışmasını izlemek
- Erken geri bildirim almak
Review türleri
Reviewer, PR’ı inceledikten sonra üç seçenekten biri ile submit eder:
| Tip | Ne zaman? | Etki |
|---|---|---|
| Approve | Değişiklikler kabul edilebilir | Merge için yeşil ışık |
| Request changes | Düzeltme gerekli | Merge engellenebilir |
| Comment | Tarafsız yorum | Merge engellenmez |
Request changes veren reviewer sonradan Approve ile geçişini güncellemelidir.
Inline comment
Files changed sekmesinde, satır numarasına tıklayarak o satıra yorum eklenir. Birden fazla satır seçilip toplu yorum da eklenebilir. “Start a review” ile yorumlar toplu submit edilir (her yorumda bildirim gitmez).
Merge stratejileri
| Strateji | Açıklama | Geçmiş |
|---|---|---|
| Merge commit | Tüm commit’ler korunur, ek merge commit eklenir | Non-linear |
| Squash and merge | Tüm commit’ler tek commit’e sıkıştırılır | Temiz |
| Rebase and merge | Commit’ler main’in ucuna eklenir, merge commit yok | Linear |
Hangi strateji izin verileceği repo Settings → General’dan kısıtlanabilir.
PR ve branch protection
Branch protection kuralları PR workflow’unu zorlar. Örnek kural: “main’e merge için en az 1 approve gerekli.” Bunu geçersiz kılmak için admin yetkisi lazım.
Protected branch olmadan PR merge için herhangi bir kısıtlama yoktur.
Auto-merge
Tüm required check’ler ve review’lar tamamlandığında PR’ın otomatik merge edilmesi ayarlanabilir. Repo Settings → General → Auto-merge’e izin verilmeli; sonra PR ekranında “Enable auto-merge” seçilir.
PR’ı kapatmak (merge etmeden)
PR merge edilmeden de kapatılabilir: “Close pull request” butonu. Branch silinmeden kalır.
Sınav perspektifinden dikkat noktaları
- Draft PR → review edilemez, approve edilemez
- Request changes yetkisi reviewer’da, merge yetkisi maintainer’da
- Squash merge branch commit geçmişini main’e tek commit olarak ekler
- PR’ı merge etmek için gerekli minimum yetki: “Write” access
- Auto-merge: required status check’ler ve review’lar tamamlanınca tetiklenir
Sırada ne var?
Sonraki derste GitHub Discussions ve mention mekanizmasını ele alacağız.