Daha önceki yazımda açık kaynaklı projelere nasıl katkı sağlanabilir şeklinde teorik olarak bir giriş yapmıştım. O yazı: Açık Kaynaklı Projelere Nasıl Katkı Sağlanır
Bu yazıda teoriden çok pratik olarak Git ile açık kaynaklı projelere nasıl katkı sağlandığı üzerinde konuşacağım. Burada yazılanları anlamanız için tabiki de Git bilmeniz gerekiyor. Ben buradaki anlatımları GitHub üzerinden yapacağım ancak diğer servislerde de aynı şekilde çalışıyor. Siz de deneme yapmak için bu repoyu kullanabilirsiniz. https://github.com/cangelis/open-source-example
Fork
Katkı yapmak istediğimiz projeyi seçtikten sonra projeyi forklamamız gerekiyor.
Fork Nedir?
Katkı yapmak istediğiniz projenin birebir kopyasıdır. Yapacağımız tüm geliştirmeleri bu fork repo üzerinde yapacağız.
Projeyi Forkladıktan sonra birebir kopyası kendi repolarım arasında gözükecek.
Clone
Şimdi fork’umuzu kendi bilgisayarımıza clone’layalım.
git clone git@github.com:cangelis-test/open-source-example.git
Branching
Şimdi gerçek repoda hangi branch’e katkı yapacağız ona bakalım. Bazı projeler, develop
branch’ine katkı yapılmasını ister, kimileri direk master
branchine. O yüzden CONTRIBUTION dökümanını iyice okuyalım. Bizim örnekte direk master
branchine yapacağız. Eğer ki farklı bir branch ise o branche geçip değişiklikleri yapmamız gerekiyor. Şöyle:
git fetch # remote'da bulunan tüm branchleri çekelim.
git checkout develop
Artık develop
branch’i üzerinde çalışıyorsunuz.
Şu anda çalıştığımız branchi görmek için:
git branch
Buraya kadar süper! Şimdi ise kendimiz develop
branch’i üzerinden yeni bir branch yaratacağız. Neden?
Eğer ki, aynı branch’e birden fazla katkı yapmak isterseniz, o branch’i hiç değiştirmeden sürekli 0 haline katkı yapmanız gerekiyor. Onun için yapacağımız her katkı için yeni branch yaratıyoruz. Yaratalım:
git checkout -b readme-eklenti # -b branch yoksa yarat anlamına geliyor
Şimdi değişikliklerimizi yapalım. Ardından commit yapalım ve forkumuza gönderelim:
git commit -am "readme güncellendi"
git push origin readme-eklenti
Sonuç olarak şöyle birşey görmelisiniz:
To git@github.com:cangelis-test/open-source-example.git
* [new branch] readme-eklenti -> readme-eklenti
GitHub üzerinden şu şekilde görebilirsiniz:
Daha sonra GitHub Üzerinde şunu göreceksiniz:
Pull Request
Artık yapacağımız katkı hazır! Şimdi gerçek reponun yöneticilerine bunu sunacağız. Eğer ki tamam ise onaylayıp gerçek repo ile merge
edecekler. Eğer ki uygun değilse kabul edilmeyecek.
Bu işleme Pull Request deniyor. Kısaca PR. Şimdi şu Compare & Pull Request buttonuna bir basalım.
Karşımıza çıkan ekranda en üstte:
Burası, gerçek repodaki hangi branch’e katkı yapacağımızı seçeceğimizi gösteriyor. Eğer ki buradaki örnekten farklı olarak develop
branchine katkı yapacaksanız oradan seçmeniz gerekiyor.
Bir altında açıklama ve başlık kısmı var.
Onun bir altında sizin commitiniz var:
Burası çok önemli. Burada sadece kendi commitleriniz olduğuna emin olun. Burada eğerki başkalarının commitleri de varsa, bir yerlerde yanlış yapmışsınız demektir.
Daha sonra Create Pull Request buttonuna basıp PRı gönderiyoruz.
Bu ekran topluluktaki diğer insanların sizin kodlarınızı inceleyip, yorumlayıp gerekirse yeni güncellemeler istediği bölümdür. Burada yaptığınız tüm commitler gözükür.
PR üzerinde yeni değişiklikler yapmak
Topluluk kodunuzu inceledi ancak yeterli bulmadı ve sizden bazı değişiklikler istedi. Bunun için 0’dan yeni PR yaratmıyoruz eskisini güncelliyoruz. O da çok basit.
Şimdi kendi bilgisayarımıza geri dönüp hangi branch üzerinde çalışıyorsak oraya dönüyoruz:
git checkout readme-eklenti
Değişikliklerimizi yapıyoruz
git commit -am "Yeni istekler yapıldı"
git push origin readme-eklenti
Bu kadar basit! PR otomatik olarak güncellendi! ve yeni commit oraya otomatik eklendi:
Eğer PR onaylanırsa gerçek repo ile merge edilir.
Fork ile gerçek repoyu senkronize etmek
Fork zamanla eskiyebilir. Çünkü gerçek repo hiç durmadan geliştirilir. Bu yüzden eklenti yapmadan önce forkunuzu reponun son hali ile güncelleyin. Önce gerçek repo’yu remote
larımıza ekliyoruz.
git remote add gercek git@github.com:cangelis/open-source-example.git
Daha sonra hangi branch’e katkı yapacaksak:
git checkout master
git pull gercek master
Bu kadar basit. gercek
remote’unda bulunan değişiklikleri aldık. İsterseniz forkunuza bunları gönderebilirsiniz:
git push origin master
Deneme yapmak
Eğer ki burada okuduklarınızı denemek isterseniz benim burada kullandığım repo’ya PR gönderebilirsiniz. Adres: https://github.com/cangelis/open-source-example
Tesekkürler oldukca detaylı bir yazı olmuş
Çok güzel ve faydalı bir yazı olmuş. Yazı için teşekkür ederiz. Bu konuda türkçe kaynak bulmak zor. Yazı gerçekten bir açığı kapatmış.
Türkçe kaynak için teşekkürler
Çok Faydalı bir yazı lütfen daha fazla içerik ekleyin.