Pull request açma¶
Bir fork'tan birleştirilmiş bir değişikliğe giden yol ve testlerin uyguladığı ev kuralları; CI'dan önce siz karşılayın diye.
Başlamadan önce¶
- Hata düzeltmesi izin istemez. Varsa issue'ya atıf yapın.
- Özellik önce bir cümle ister. Ne yapmayı planladığınızı ve kabaca nasıl yapacağınızı istekte ya da bir tartışmada söyleyin. Oradaki on dakika baştan yazılan bir pull request'ten kurtarır.
- Pull request başına bir değişiklik. Tek pull request'teki bir düzeltme ve bir refactor iki olarak incelenir, hiçbiri olarak birleştirilir. Değiştirmediğiniz kodu yeniden biçimlendirmeyin; toolchain'i, sabitlenmiş bir action'ı ya da bir bağımlılığı başka konudaki pull request'te yükseltmeyin.
Adımlar¶
1. Fork ve dal¶
Dal adları dalın ne yaptığını söyler: fix/…, feat/…, docs/…, ci/….
2. Kurulum¶
Başlarken: Node 22, sabitlenmiş Rust toolchain'i,
npm install, npm run tauri:dev.
3. Değişikliği testiyle yapın¶
Her düzeltme, onu yakalayacak olan testle gelir ve test koruduğu davranışa göre adlandırılır. Bir test gerçek bir hatayı koruyorsa yorumu hatanın ne olduğunu söyler. Yorumlar neyi değil nedeni açıklar: bir satır tuhaf görünüyor ama doğruysa, onsuz neyin bozulacağını yazın.
4. Kapı betiğini çalıştırın¶
tools/before-push.sh # bu makinenin cevaplayabildikleri
tools/before-push.sh --all # ve Linux ile Windows yarıları, bir konteynerde
Hiçbir dal bu betik çalışmadan push edilmez. CI'ın sorduğu her şeyi sorar
(lint, vitest, cargo test, -D warnings ile clippy, fmt, sözleşme kontrolü,
denetimler) ve her kontrol için yeşil, kırmızı ya da atlandı yazar.
Platforma özgü koda dokunan her şey için --all kullanın: engine.rs,
hosts.rs, pty.rs ve benzerleri yalnızca Mac'ten derlenemez.
5. Push edip taslak açın¶
Taslak, sizin söylemenize gerek kalmadan "henüz değil" der. Yönü görmek istiyorsanız erken açın; kapı betiği yeşil olunca hazır işaretleyin.
6. Şablonu doldurun¶
Pull request şablonu değişikliğin ne yaptığını ve nedenini sorar, bir kontrol listesiyle biter:
-
npm testgeçiyor (vitest + cargo test) -
npm run lintgeçiyor -
npm run contracts:checktemiz - Davranış ile
contracts/uyuşmuyorsa sözleşme de güncellendi - Uygulamanın yönettiği çalışma alanına dokunulmadı
7. İnceleme¶
CI takımı Linux, macOS ve Windows'ta çalıştırır. Geliştirici inceler;
CODEOWNERS sözleşmeleri, araçları, iş akışlarını ve güvenlikle ilgili Rust
modüllerini bilinçli bir bakışa yönlendirir. Bir inceleme yorumuna geçmişi
üzerine yazarak değil, bir commit push ederek cevap verin; inceleyen, son
seferden bu yana olan farkı okur.
8. Birleştirme¶
CI yeşil olup inceleme bitince geliştirici birleştirir. Sonrasında dalınızı silin.
Ev kuralları¶
Bunlar test edilir; yani incelemede değil, kendi makinenizde düşer.
Önce sözleşme. contracts/ipc.json iki yarının paylaştığı her komutu ve
olayı adlandırır. Orada olmayan bir komut ne lib.rs'te kaydedilebilir ne de
CLI'dan sürülebilir. Davranış ile sözleşme uyuşmuyorsa biri hatalıdır; kod
yazmadan önce hangisi olduğuna karar verin ve ikisini aynı pull request'te
değiştirin.
Üretilen dosyalar elle düzenlenmez. generated/ her seferinde
manifestten üretilir. Rust üreticisi Bash olanla bayt bayt karşılaştırılır;
karşılaştırmayı silerek "sadeleştirmeyin".
Bir kartın işaretlemesi ve stilleri birlikte taşınır. <style scoped>
yalnızca kendi bileşenine ulaşır; tests/pane-styles.spec.js bunu denetler.
Belgeler ağaca karşı test edilir. ARCHITECTURE.md'deki bir sayı, PRIVACY.md'deki bir sunucu adı, bir yardım kartındaki konu adı: her birinin dosyayı okuyan ve kod uyuşmayınca düşen bir testi var. Belgeyi ve kodu birlikte değiştirin.
Çalışma alanını koddan asla değiştirmeyin. Uygulamanın yönettiği klasör kullanıcınındır. Uygulama onu okur ve içine yalnızca açık bir kullanıcı eylemiyle yazar.
Bağımlılık bir karardır. cargo deny ve bağımlılık incelemesi her pull
request'te lisansları ve güvenlik uyarılarını denetler. Yeni bir crate ya da
paketi, neden gerektiğiyle birlikte açıklamada adlandırın.