Issues ve label sistemi
Issues and label system
Bu derste neler öğreneceksin
- GitHub Issues'un amacını ve bileşenlerini açıklamak
- Label, milestone ve assignee kavramlarını anlamak
- Issue şablonlarını nasıl oluşturacağını bilmek
- Issue'ları commit ve PR'larla nasıl bağlayabileceğini öğrenmek
GitHub Issues, bir projede yapılacak işleri, hataları ve önerileri takip etmek için kullanılan yerleşik görev yönetim sistemidir. GH-900 sınavının ağır domain’lerinden biri olan collaboration’ın temel taşıdır.
Issue nedir?
Issue, bir proje içinde tartışılabilecek ve takip edilebilecek herhangi bir konuyu temsil eder:
- Bug (hata raporu)
- Feature request (özellik isteği)
- Soru veya tartışma
- Görev veya yapılacak iş
Her issue’nun bileşenleri:
| Bileşen | Açıklama |
|---|---|
| Title | Kısa açıklama |
| Body | Markdown destekli detay |
| Assignees | Sorumlu kişi(ler) |
| Labels | Kategorilendirme etiketleri |
| Milestone | İlgili sürüm veya sprint |
| Projects | Bağlantılı project board |
| Linked PRs | İlgili pull request’ler |
| Comments | Tartışma thread’i |
Labels
Label’lar issue ve PR’ları kategorize eder. GitHub varsayılan olarak şu label’larla gelir:
| Label | Renk | Anlam |
|---|---|---|
bug | Kırmızı | Hata raporu |
enhancement | Mavi | Yeni özellik |
good first issue | Yeşil | Yeni katkıcılar için |
help wanted | Sarı | Ekstra yardım gerekiyor |
documentation | — | Dokümantasyon değişikliği |
duplicate | — | Daha önce açılmış |
invalid | — | Geçersiz issue |
wontfix | Beyaz | Çözülmeyecek |
question | Pembe | Soru |
Özel label’lar oluşturulabilir: Issues → Labels → New label.
Milestones
Milestone, ilgili issue ve PR’ları bir hedef etrafında gruplar. Genellikle bir sürüm veya sprint’e karşılık gelir. Milestone’un ilerleme çubuğu, açık/kapalı issue sayısına göre otomatik hesaplanır.
Oluşturmak için: Issues → Milestones → New milestone, başlık, açıklama ve due date ekle.
Issue şablonları
.github/ISSUE_TEMPLATE/ dizininde şablon dosyaları oluşturarak issue açma ekranında form sunulabilir:
<!-- .github/ISSUE_TEMPLATE/bug_report.md -->
---
name: Bug Report
about: Bir hata bildirin
labels: bug
---
## Hata açıklaması
<!-- Hatayı kısaca açıklayın -->
## Yeniden üretme adımları
1. '...' sayfasına git
2. '...' butonuna tıkla
3. Hata görünür
## Beklenen davranış
<!-- Ne olmasını bekliyordunuz? -->
## Ekran görüntüsü
<!-- Uygulanabilirse ekran görüntüsü ekleyin -->
YAML front matter ile label, assignee otomatik atanabilir.
Issue’ları PR ve commit’lerle bağlamak
Issue’yu otomatik kapatmak için PR açıklamasına veya commit mesajına anahtar kelime + issue numarası ekle:
Closes #42
Fixes #42
Resolves #42
PR merge edildiğinde issue otomatik kapanır.
Farklı repo’daki issue için:
Closes owner/repo#42
Issue’larda mention ve cross-reference
@username— kullanıcı mention#42— aynı repo’daki issue veya PR’a link- Commit SHA yazınca otomatik link oluşur
Issue’ları CLI ile yönetmek
# Issue oluştur
gh issue create --title "Login sayfası yavaş" --label bug --assignee ydemir
# Issue listele
gh issue list --label bug --state open
# Issue kapat
gh issue close 42 --comment "v1.2.0 ile düzeltildi"
Sınav perspektifinden dikkat noktaları
- Issue şablonları
.github/ISSUE_TEMPLATE/altında tanımlanır Closes #42sadece default branch’e merge edilince çalışır- Milestone kapatıldığında bağlı open issue’lar kapanmaz
good first issueetiketi GitHub Explore’da öne çıkar — açık kaynak katkı için- Issue numarası repo içinde unique’tir ve PR’larla aynı numaralandırma havuzunu paylaşır
Sırada ne var?
Sonraki derste pull request’ler ve code review sürecini derinlemesine ele alacağız.