GitHub, aşağıdakilerden oluşan bir proje üzerinde ekip çalışması için çok işlevli bir platformdur.
- Tüm dosyaları barındıran bulut depolama;
- Geliştiriciler için sosyal ağ;
- Bir veya başka bir katılımcı tarafından kodda yapılan tüm revizyonları yakalayan sürüm kontrol sistemi.
Basit bir deyişle Github, ortak bir projeye ev sahipliği yapabileceğiniz, tüm değişiklikleri ortaklaşa yönetebileceğiniz ve arıza durumunda hızla çalışan bir sürüme dönebileceğiniz bir platformdur. İncelememizde GitHub’ın olanaklarından bahsediyoruz.
GitHub Özellikleri
Birkaç kişi aynı anda kod üzerinde çalıştığında kafa karışıklığı meydana gelebilmektedir. Github, yeni bir oturumdan önce otomatik olarak projenin bir kopyasını oluşturmaktadır. Ayrıca her ekip üyesinin, genel gelişimi bozma riski olmadan yerel sorunları bağımsız olarak çözmesine olanak tanımaktadır. Düzenlemeler eklendikten sonra editör, kod tabanına yeni çözümlere katkıda bulunmak için diğer yazarlardan onay isteyebilmektedir. Böylece değişimler kademeli olarak gerçekleşmektedir. Bu nedenle hikayeleriyle neyin, kimin tarafından ve hangi aşamada tanıtıldığını takip etmek her zaman mümkündür. Github şunlar içinde uygundur;
- Sorunu açıklayan bir metin yorumuna bir örnek eklemek mümkündür.
- Sözdizimi vurgulama, kod üzerinde daha hızlı çalışmanıza yardımcı olmaktadır. Hizmet, seçtiğiniz programlama dilini tahmin edebilmektedir. Bunun için dizeyi üç arka tek tırnak ile başlatmanız gerekmektedir.
- Belirli bir yoruma bağlantı oluşturmak için adının yanındaki tarihe tıklamanız yeterlidir.
- Ayrıca, belirli bir kod parçasına bağlantı oluşturabilirsiniz. Bu, işbirliği sürecini kolaylaştırmaktadır.
- Onay kutusu, projedeki mevcut sorunların durumunu izlemeye yardımcı olmaktadır. Bunlar ortadan kalktıkça, düzeltilen alanın önüne bir işaret koyabilirsiniz.
- Etkin planlama ve iş dağılımı için tüm notların ve hataların toplanacağı bir proje panosu oluşturabilirsiniz. Bazı hataları diğer yazarlardan yorumlar alarak çözmek daha kolaydır.
- GitHub içeriğindeki tüm işlemler atomiktir, yani işlem tamamen yapılır veya hiç yapılmaz. Bu sayede tüm depolama alanını kararsız hale getiren asılı işlemleri önlemektedir.
Depo
Depo, tüm proje dosyalarını içeren bir dizindir. Resimler, video, ses ve diğer verileri içermektedir. Paylaşılan bir sunucuda veya geliştiricinin cihazındaki yerel depolamada bulunabilmektedir.
Dağıtılmış sürüm kontrol sistemi Github durumunda, paylaşılan bir depo oluşturulmaktadır. Ayrıca her ekip üyesi tam dosya dizinini kendisi için tutar. Giriş düzenleme sürümleri senkronize edilmelidir. Bu nedenle tüm kullanıcıların paylaşılan kod tabanının ve yapılan tüm değişikliklerin bir kopyasına sahip olduğu anlamına gelmektedir. Sunuculardan biri kullanılamaz hale gelirse, çalışmaya devam etmek için başka bir proje katılımcısının deposunu kopyalamak yeterlidir.
Sürüm Kontrolü
Kod güncellemeleri, ürün yaşam döngüsünün tüm aşamalarında gerçekleşmektedir. Yeni bir proje oluştururken ana işlevsellik yalnızca döşendiğinden, bunlardan çok daha fazlası vardır. Ancak, geliştirme başladıktan sonra kalırlar: sürümler güncellenir, hatalar giderilir, yeni özellikler eklenir, vb. Sürüm kontrol sistemi Github kod tabanında yapılan değişikliklerin izlenmesine yardımcı olmaktadır. Bu sayede düzenlemeleri kimin yaptığını takip etmektedir. Ayrıca silinen kodu veya önceden düzenlenmiş bir sürümünü kurtarmanıza olanak tanımaktadır. Depodaki tüm değişiklikler, taahhütler ve dallar olarak saklanmaktadır.
Sorunu bağımsız olarak çözmek için, yani ortak veritabanında kod değişiklikleri yapılmaması için, havuzun bir kopyası oluşturulur. Her kopya, belirli bir görev içindeki kod bölümlerinde yapılan tüm değişikliklerin geçmişini kaydetmektedir. Şubeler, önce bir çekme talebi gönderilerek birbirleriyle ve merkezi depo ile birleştirilebilmektedir. Kullanıcı, ortak çalışanlara ana depoda değişiklik yapıldığına dair bir bilgi mesajı göndermektedir. Diğer geliştiriciler ise, ayarlamaları kabul edebilir veya reddedebilir. Talebi açtıktan sonra yapılan çalışmaları iş arkadaşlarınızla tartışabilirsiniz.
Her kopya, birkaç bağımsız eylemden veya kod düzeltmesinden oluşmaktadır. Bu eylem, projenin kaydetme noktasıdır. Bu nedenle taahhüt olarak adlandırılmaktadır. Taahhütlere, başka bir programcıya değişikliğin ne olduğunu ve ne yaptığını açıklamaya yardımcı olmak için benzersiz tanımlayıcılar ve yorumlar atanmaktadır.
Güvenlik
Github kullanmak, kaynak kodun değişiklik geçmişinin gerçekliğini garanti etmektedir. Deponun sahibi, değişiklikleri kimin ve ne zaman yaptığını her zaman bilecektir. Bu durum, yetkisiz erişimi hızlı bir şekilde tespit etmenizi sağlamaktadır. Açık kaynakta güvenlik açıkları görünebilmektedir. Bu nedenle gelişiminizi onlar için kontrol etmeniz önemlidir. İşte kodunuzdaki güvenlik açıklarını bulmanıza yardımcı olacak birkaç araç şunlardır;
- GuardRails, Github pazarından indirilebilen bir güvenlik uygulamasıdır. Kodu gerçek zamanlı olarak analiz etmektedir. Böylece güvenlik açıkları tespit edilirse kullanıcı bunları hızla düzeltebilmektedir. Hizmet, istek havuzuna yorumlar bırakır ve gösterge tablosunda bilgileri görüntüler. Uygulama Python, Ruby, JavaScript, Solidity, Go, Java ve PHP‘yi destekler.
- WhiteSource Bolt, geliştiricilerin depoları taramasına ve açık kaynaktaki güvenlik açıklarını bulmasına olanak tanıyan bir hizmettir. Uygulama kodu tarar ve bir güvenlik riski algıladığında bir hata üretmektedir. Java, Python, PHP, C#, C++ ve daha fazlasını destekler.
- LGTM – açık kaynaktaki potansiyel güvenlik açıklarını bulmaya ve bunların oluşmasını önlemeye yardımcı olur. C, C++’ı destekler. COBOL, Python, Javascript ve Java.
Sonuç olarak;
GitHub, kodla çalışmak için birçok araç sunmakta ve kullanımı kolaylaştırmaktadır. Farklı ülkelerden uzmanlarla ekip kurabilmekte ve bir proje üzerinde birlikte çalışabilmektesiniz. Ayrıca aynı görevi çözerken hataları düzeltmede ve geliştirme sürecini hızlandırmada birbirinize yardımcı olabilirsiniz.