ABAPGit

ABAPGit

ABAPGit, Open-Source bağımsız bir geliştirme olarak ortaya çıkıp SAP’ninde desteğini almasıyla hem süreçleri kolaylaştırdığı hem de ABAP kodlarının private sistemlerin’de dışına çıkmasını(host edilebilir olmasını) sağlayacağı için hem de ürünlerimizin kolaylıkla bakım, modifikasyon, sürüm kontrolü gibi ve gelecek vizyonunda sıklıkla karşılaşacağımız SAP’in de desteğini arkasına alan ABAPGit versiyon kontrol sistemi Nedir? Kullanım senaryoları, avantajları gibi konubaşlıklarını ele aldığımız makalemizde sizlere keyifli okumalar dileriz.

Nedir?

ABAPGit, ABAP (Advanced Business Application Programming) dili için Git versiyon kontrol sistemini kullanmanıza olanak sağlayan açık kaynaklı bir araçtır. Git, yazılım geliştirme sürecinde, kodların farklı versiyonlarını yönetmek ve izlemek için sıklıkla kullanılan bir sistemdir.

ABAPGit, ABAP geliştirme ortamında Git’in sunduğu tüm avantajlardan yararlanmayı sağlar. Bu, geliştiricilere ve ekiplere, kodlarının farklı versiyonlarını organize etmeleri, değişikliklerini izlemeleri ve gerektiğinde eski sürümlere geri dönmeleri için araçlar sunar.

ABAPGit, herhangi bir SAP sistemine yüklenebilir ve SAP GUI üzerinden veya ABAP Development Tools (Eclipse üzerinden) kullanılabilir. Bu sayede, ABAP kodları kolaylıkla versiyon kontrol sistemi olan Git’e aktarılabilir. Bu, SAP projelerinde geliştirme süreçlerinin daha şeffaf ve takip edilebilir hale gelmesini sağlar. Ayrıca, ABAPGit ile kodlarınızı GitHub, Gitlab, BitBucket gibi popüler Git platformlarında paylaşabilir ve bu platformların sunduğu işbirliği olanaklarından yararlanabilirsiniz. Bu, ekiplerin, kodlar üzerinde birlikte çalışmasını ve kodları halka açık veya özel repolar üzerinden paylaşmasını sağlar.

ABAPGit’i rahat kullanabilmek için sizlere tavsiyemiz git’in basic usagelerını kontrol etmeniz ve temel kavramları anlamanız olacaktır. Bağzı temel kavramlar: Stageing, commit, repo(local/remote), pull, push, branch, merge. Aşağıda basit seviyede Git kullanımına dair basit bir demo bulunmakta daha detaylı blok yazısı gelecektir takipte kalın😊.

ABAPGit Kurulum?

ABAPGit kurulumu oldukça basit olup aşağıda belirttiğimiz adımları takip etmeniz sonucunda SAP sisteminizde kullanılabilir olacaktır.

  1. SE38’E gidin ve ‘ZABAPGIT_STANDALONE’ adında yürütülebilir bir abap programı oluşturun.
  2. https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap Bu linki kullanarak ABAPGit kaynak kodunu sağ tık yaparak bilgisayarınıza txt formatında kaydedin.
  3. SE38’de oluşturmuş olduğumuz programa gidip Utilities->More Utilities->upload/download->upload diyerek indirdiğimiz txt formatındaki abap kodumuzu içeri aktarın.
  • ABAPGit kullanıma hazır, remote repositoryler kullanabilmek için ya da git platformlarını(github, gitlab) kullanabilmek için ssl ayarları yapılmalıdır. Detaylı bilgi için https://docs.abapgit.org/user-guide/setup/ssl-setup.html#sap-trust-manager .
    Ayrıca remote repository kullanırken ABAPGit sizlere kullanıcı adı ve parola soracaktır kullanıcı adına github hesap kullanıcı adı girip parola için de github’ın size oluşturduğu tokeni kullanmanız gerekecektir github settings->developers->personel access token tabından gerekli adımları takip edebilirsiniz.

Git Temelleri?

Git, bir versiyon kontrol sistemi olup proje sürüm kontolleri, modifikasyon takibi, sürümler arası geçiş, hiyerarşik bir düzende denetlenebilir yapısı ve merkeziyetsiz bir yapıda olması sebebiyle yazılım geliştiricileri tarafında yaygın bir şekilde kullanılmaktadır.

Git sayesinde ve Github vb. türevlerini de kullanarak kaynak kodlarımızın uzak bir sunucuda push’layarak host edilebilmesini sağlayabilir ve poreje dahilinde pull requestlerle farklı branchler oluşturularak geliştirmeler bozulma korkusu olmaksızın yapılabilir ve main branch’in güvenliği/bütünlüğü/erişilebilirliği sağlanabilir. En sonunda main branch’ine bu geliştirmeler merge edilerek son sürüm kullanımı güvenli bir şekilde sağlanmış olur. Fork’layarak eski projenin imajı alınarak yeni projelere kapı açabiliriz. Ya da son sürümümüzü müşteriye iletebilmek için pull requestler kullanabiliriz.

Sadece developerlar değil sürüm kontrolü, değişiklik takibi vb. durumlara ihtiyacı olan herkes kullanabilir.

Aşağıda örneklerle anlatmış olduğum git kullanım örneği versiyon kontrol sistemlerini anlamanıza yardımcı olacaktır. Git’in kurulumu ve dökümantasyonu için https://git-scm.com/downloads adresinden faydalanabilirsiniz.

Biz örneklerimizi kullanırken komut satırını kullanacağız sizler dilerseniz git kullanımına olanak tanıyan gui programlarını kullanabilirsiniz.

Git’i anlayabilmek adına 3 temel kavrama ışık tutacağız

  • Worktree: çalışma dizinimizi, klasörümüzü ifade eden kavram. İlgili çalışmalarımızın ham haliyle git’in tanımadığı dosyalarımızın tümünü ifade etmek içiin kullanırlır.
  • Stage/İndex/Cache: bu üçlü aslında git sisteminde aynı kavramlara tekabül etmekte ve birbiri yerine kullanılmaktadır. Temel itibariyle çalışma dizinimizde bulunan dosyaları, kaynak kodlarını git’in takip edeceği ilgili çalışmaların bulunduğu konum diyebiliriz. Stage’de bulunan bir dosya commit etmeye hazır, git’in takip edebileceği bir dosyadır.
  • Commit: ilgili çalışmalarımızın son bulması halinde git’e eklediğimiz dosyaları kalıcı olarak git veri tabanına işlemeye commit denir.

Aşağıda vereceğimiz örnek local repo olup kendi yerel bilgisayarınızda da adım adım uygulayabilirsiniz.

  • Öncelikle masaüstümde “Lits-git” adında dizin oluşturuyoruz, ardından komut istemcisi yardımı ile ilgili dizine geçiş yapıyorum.
  • Ardından git veri tabanının oluşması ve git kullanımına ilgili dizinde başlayabilmek adına “git init” komutunu kullanıyorum.
  • “git status” komutu yardımıyla repomuzun durumu hakkında bilgi alabilir, hangi brenchde olduğumuzu ve dosyalar ve değişiklikler hakkında bilgi edinebiliriz.
  • Ardından Lits klasörümüzün içerisine bir adet txt dosyası ekledim. Tekrardan status kontrolü gerçekleştireceğiz.

Untracked files’in altında eklediğim txt dosyamız kırmızıyla görünmektedir, git dosyayı gördü fakat bu dosya hakkında bir fikri bulunmamaktadır çünkü git’e takip etmesini henüz söylemedik.

  • “git add * ” diyerek ilgili untracked file area’da bulunan tüm dosyaları git’e tanıtmış olacağız tekrar statü kontrolü gerçekleştirdiğimizde ilgili sonuç:

Artık text dosyamızı git takibe almış durumda ve commit ederek ilgili değişiklikleri local repoya yansıtabilir(commit edilebilir) ve yeni bir commit id’si almayı sağlayabiliriz aslında commit id’ye biz SAP/ABAP developer’lar olarak yabancı değiliz requestlerimiz gibi düşünebiliriz. İlgili commit id’leri kullanarak değişiklik yapıldığında eski haline dönmede kullanabiliriz.

  • “git commit –m ‘commit mesajı’ ” komutunu kullanarak değişikliklerin repoya yansımasını sağlayabiliriz.

Statü kontrolü yaptığımızda repomuz şu an en güncel halinde ve worktreede herhangi bir eklenecek ya da değiştirilmiş bir dosya bulunmamaktadır.

  • Şimdi de txt dosyamızın içerisine eklemeler yaptığımızda statü kontolünde neler olacağını kontrol edelim.

Modified edilmiş bir dosya uyarısı vermekte bizlere ilgili değişiklikleri repoya yansıtabilmek için ve yeni bir commit id alabilmek için öncelikle “git add *” diyerek değişiklikleri stage area’ya taşır sonra da “git commit –m ’mesaj’” komutuyla da commit id almasını sağlayabiliriz.

Git add yapıldıktan sonra dikkat edeceğiniz gibi txt file’mizi yeşil olarak göstermekte yani ilgili değişiklikleri artık git tanıyor diyebiliriz ve ardından commit ederek repoya yansımasını sağladık.

  • “git log –oneline” ile git log’larımızı yani commit history’lerini görebilir ve ilgili commitler arası geçiş yaparken kullanacağımız commit id’lerini elde edebiliriz.
  • “git checkout [commit id]” yardımı ile ilgili commit id’ler arasında değişiklikler yaparak dosyalarımızda güvenilir bir şekilde eski sürümleri arasında geçiş yapabiliriz.

Head yani repomuzun bulunduğu commit id’yi belirten kavram olup txt filemiz artık ilk commit ettiğimiz ana geri dönmüş olup içerisindeki değişiklikler eski haline dönmüş durumdadır.

Buraya kadar git’in en temel yapısını kullanımına dair fikir edinmiş olduk remote bir repo kullanırken de bu komutlara ek olarak “git push” değişiklerin remote repoya yansıtma, “git pull” uzak repodaki çalışmalardaki değişikleri localdeki repoya yansıtma, “git clone” uzak bir repodaki çalışmaları bulunduğunuz konuma indirme gibi bazı basit komutlar da dahil olmaktadır.

Buraya kadar anlatmamın esası, yapısı itibariyle bir git istemcisi olan ABAPGit tool’unu kullanırken neyi ne için kullandığımızın özünü anlamak ve kullandığımız tool’ların operatörü ve ezbercisi olma durumundan sıyrılarak en doğru şekilde kullanabilmektir.

ABAPGit Kullanımı ve Basic Demo?

Aşağıda yapmış olduğumuz örneklerde dikkat edeceğiniz üzere yukarıda anlatmış olduğum git komutlarından farkı olmayıp kullandığımız ABAPGit deki butonların isimlendirmeleri de kullandığımız git komut satırı kodlarıyle aynı olmaktadır. Yukarıda yaptığımız örneklerden tek farkı burada yapmış olduğumuz örnekte remote bir repo kullanılmaktadır.

SAP => GitHub

  • SAP’de öncelikle bir package oluşturmalıyız
  • Se38’den basit bir abap kodunu ABAPGit yardımı ile github’a selamla adındaki programını taşıyacağız. Selamla programımız yukarıda oluşturmuş olduğumuz paketin içerisindedir.
  • ABAPGit’e geçmeden önce Github’da kodlarımızı/classlarımızı host edebileceğimiz bir repository oluşturmamız gerekmektedir.
  • ABAPGit’de yeni bir online repo başlatmalıyız.
  • Oluşturmuş olduğumuz remote reponun linkini ABAPGit’e belirtmeliyiz.

Repomuz ABAPGit içerisinde görünecektir.

  • Localde oluşturduğumuz repodaki değişikliklerimizi remote repoya gönderebilmek için takip etmeniz gereken adımlar: Git(versiyon kontrol sistemi)’in local çalışmamızı takip edebilmesi için stage area’ya eklememiz gerekmektedir.

Stage area’ya taşıdığımız çalışmaları repoya commit ederek değişikliklerin yansımasını sağlayacağız.

İlgili commiti gerçekleştiren kişinin açıklamaları ve e-posta adresi girilir.

Ardından remote repo için size kullanıcı adı ve parola soracaktır ilgili bilgilerle giriş yapmalıyız.

Ardından değişikliklerin yansıdığını github reponuzda göreceksiniz.


Githubda oluşturmuş olduğum repoyu kontrol ettiğimde yapmış olduğum değişiklikler yansımış durumda.

GitHub => SAP

Github’da host ettiğimiz projeyi bir SAP sistemine ABAPGit ile aktarılması, biz bu demoda https://github.com/FreHu/abap-turtle-graphics reposunu kullanacağız:

  • İlk olarak ABAPGit’de yeni bir repo başlatacağız.
  • Sistemimize çekmek istediğimiz reponun link’i ve sistemde var olan ya da oluşturulacak package ismi girilir. Girmiş olduğumuz Package var ise doğrudan Create Online Repository dememiz yeterli olacaktır yoksa önce Create Package diyerek paketi oluşturmalıyız.
  • Ardından ABAPGit bize repo içerisindeki objeleri listeleyecektir. Burada adından da anlaşılacağı gibi pull diyerek uzak repodaki kaynak kod ve objeleri sistemize çekme isteğinde bulunacağız.
  • Açılan pop-up ile çekme isteğinde bulunduğumuz objeler ve taşınacak/update edilecek package’i seçmemizi isteyecek.
  • Package adını se80’de kontrol ettiğimizde remote repodaki tüm objeleri sistemimizde görebiliriz.

Bağzı Kullanım Alanları?

  • İnternetinizin olmadığı bir durumda abap geliştirmeli yapmanız gerekmekte, bu durumda docker’da ABAP imajı ile çalıştırmış olduğunuz sistemde ABAPGit yardımıyla offline repository kullanarak geliştirmelerinizi zip halinde dışarı aktarıp alabilirsiniz. Ardından ilgili geliştirmeleri internet bağlantınızı sağladığınız vakit yine ABAPGit yardımı ile zip’den faydalanarak gerekli yerlerde içeri aktarabilirsiniz.
  • Farklı sistemler veya kullanıcılar arasında kod paylaşımı, oluşturacağınız bir git serveri yardımıyla hem takımlarınız arasında hem de farklı sistemler arasında kod paylaşımında bulunabilirsiniz.
  • Uygulamanızın geçmiş sürümleri arasında herhangi bir ana kolaylıkla geçiş sağlayabilirsiniz.  
  • Yeni branch’ler oluşturarak projenin bir kopyasını alıp üzerinde özgürce değişiklikler yapabilmenizi sağlaması. Bu sayede ana kaynak kodun dışında geliştirmelerinizi rahatça yapabilir ve herhangi bir hata ile karşılaşılmaması durumunda main branch’e değişiklikleri yansıtabilirsiniz.

ABAPGit Avantajları ve Değerlendirme?

ABAPGit kullanımının avantajlarını değerlendirdiğimiz maddeler daha da arttırılabileceği gibi biz en önemli gördüğümüz noktalara değindik, gelecek vizyonlarında ABAPGit kullanımının daha da yaygınlaşacağını öngörmek ve developerlar olarak bu değişime ne kadar erken adapte olabilirsek faydamıza olacağını ön görmekteyiz, işte bazı tespit etmiş olduğumuz avantajlar:

  1. Dağıtılmış Versiyon Kontrolü: ABAP Git, dağıtılmış bir versiyon kontrol sistemidir. Bu, projelerinizi yerel olarak depolayabileceğiniz ve herhangi bir merkezi sunucuya bağlı kalmadan işbirliği yapabileceğiniz anlamına gelir. Her geliştirici, değişiklikleri takip etmek, geçmiş versiyonlara geri dönmek ve kodun doğru bir şekilde bütünleşmesini sağlamak için kendi çalışma kopyasını oluşturabilir.
  2. Kolay İşbirliği: ABAP Git, çoklu kullanıcılar arasında kolay bir şekilde işbirliği yapmayı sağlar. Geliştiriciler, aynı projeyi paylaşabilir, değişiklikleri takip edebilir ve birbirleriyle senkronize olabilir. Bu, farklı takımlar veya coğrafi konumlardaki geliştiriciler arasında çalışmayı kolaylaştırır.
  3. Kolay Geri Alma ve Karşılaştırma: ABAP Git, kod değişikliklerini geri alma ve karşılaştırma işlemlerini kolaylaştırır. Hata yapma durumunda, bir önceki stabil versiyona geri dönebilir ve kaynak kodunuzun geçmişindeki herhangi bir değişikliği görüntüleyebilirsiniz. Ayrıca, farklı geliştirme dallarını birleştirme ve çakışmaları çözme yeteneği de mevcuttur.
  4. Paralel Geliştirme: ABAP Git, paralel geliştirmeyi destekler. Farklı geliştiriciler, aynı zamanda aynı projede çalışabilir ve değişiklikleri kolayca birleştirebilir. Bu, geliştirme sürecini hızlandırır ve takımlar arasındaki işbirliğini artırır.
  5. Değişikliklerin İzlenmesi: ABAP Git, kod değişikliklerinin ayrıntılı bir şekilde izlenmesini sağlar. Hangi değişikliklerin, hangi kullanıcılar tarafından, ne zaman yapıldığını görebilirsiniz. Bu, sorunları tespit etmek, hataları gidermek ve iş akışını takip etmek için büyük bir fayda sağlar.
  6. Şube (Branch) Desteği: ABAP Git, şubelerin oluşturulmasını ve yönetilmesini kolaylaştırır. Farklı özellikler veya hata düzeltmeleri üzerinde çalışırken, her bir şube ayrı bir geliştirme alanı sağlar. Bu, kodun parçalarını ayrı ayrı test etmek ve yeni özellikler üzerinde çalışırken ana kod tabanını etkilemeden geliştirmek için idealdir.
  7. Entegrasyon Kolaylığı: ABAP Git, diğer popüler Git hizmetleriyle kolayca entegre olabilir. Bu, projelerinizi farklı platformlar arasında taşımak veya dış kaynaklı bir depoya bağlanmak için esneklik sağlar. Ayrıca, mevcut Git araçlarını ve iş akışlarını kullanabilir ve daha fazla esneklik elde edebilirsiniz.
  8. Kolay Yedekleme ve Kurtarma: ABAP Git, kodunuzu yedeklemek ve gerektiğinde kurtarmak için güçlü bir mekanizma sağlar. Depolama altyapısı sayesinde, kodunuzun güvenli bir şekilde yedeklenmesi ve kaybolma riskinin azaltılması mümkün olur.
  9. Denetim ve İzin Yönetimi: ABAP Git, geliştirme sürecini daha kontrol altında tutmak için denetim ve izin yönetimini destekler. Farklı kullanıcıların hangi değişiklikleri yapabileceğini, hangi projelere erişebileceğini ve hangi işlemleri gerçekleştirebileceğini belirleyebilirsiniz. Bu, kodun güvenliğini sağlamak ve yetkilendirme politikalarını uygulamak için önemlidir.
  10. Dökümantasyon ve Bilgi Paylaşımı: ABAP Git, projelerinize ilişkin dökümantasyon ve bilgilerin paylaşımını kolaylaştırır. Değişiklik geçmişi, yorumlar ve açıklamalar aracılığıyla kodunuzla ilgili önemli bilgileri kaydedebilirsiniz. Bu da, projelerinize dair bilgi birikimini artırır ve yeni geliştiricilerin projenize kolayca adapte olmasını sağlar.
  11. Gelişmiş Kod İnceleme: ABAP Git, kod incelemelerini ve hata bulmayı kolaylaştırır. Geliştiriciler, değişikliklerin kod tabanına etkisini daha iyi anlamak ve hataları tespit etmek için değişiklikleri detaylı bir şekilde inceleyebilir. Bu, kod kalitesini artırmak ve hataları önceden tespit etmek için büyük bir avantaj sağlar.

ABAP Git’in bu avantajları, geliştirme sürecini daha etkili, hızlı ve işbirlikçi hale getirirken kod yönetimini ve güvenliğini de iyileştirir. Bu nedenle, ABAP geliştiricileri için önemli bir araç haline gelmiştir.

Kaynakça:


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir