Versioning & Tagging (Versiyonlama ve Etiketleme)

versioning-tagging-versiyonlama-ve-etiketleme (büyük resim için tıklayın)

Versioning & Tagging (Versiyonlama ve Etiketleme)

Yazılım geliştirme süreçlerinde versiyonlama ve etiketleme, kod değişikliklerinin ve yazılım sürümlerinin düzenli bir şekilde takip edilmesi ve yönetilmesi için kullanılan yöntemlerdir. Bu yöntemler, projelerin zaman içindeki değişimlerini anlamayı, eski sürümlere dönmeyi ve farklı sürümleri kolayca yönetmeyi sağlar.

Versiyonlama Nedir?

Versiyonlama, yazılımın her yeni sürümüne bir versiyon numarası atayarak, yazılımın değişimlerini düzenli bir şekilde takip etme sürecidir. Versiyon numaraları genellikle Semantik Versiyonlama (Semantic Versioning - SemVer) kurallarına göre düzenlenir.

Semantik Versiyonlama Formatı: MAJOR.MINOR.PATCH

  • MAJOR: Ana sürüm numarası; geriye dönük uyumluluk bozulduğunda artırılır.
  • MINOR: Yeni özellikler eklendiğinde ve geriye dönük uyumluluk bozulmadığında artırılır.
  • PATCH: Küçük hata düzeltmeleri veya iyileştirmeler yapıldığında artırılır.

Örnekler:

  • v1.0.0: İlk ana sürüm.
  • v1.1.0: Yeni bir özellik eklendi.
  • v1.1.1: Küçük bir hata düzeltildi.

Etiketleme Nedir?

Etiketleme (tagging), bir versiyonu veya kod durumunu temsil eden bir etiketi belirli bir noktaya ekleme işlemidir. Etiketler, genellikle sürüm numaraları ile ilişkilendirilir ve sürüm yönetim sistemlerinde (örneğin, Git) kodun belirli bir durumunu işaretlemek için kullanılır.

Özellikler:

  • Etiketler sabittir; bir defa oluşturulduktan sonra genellikle değiştirilmez.
  • Yayınlanan bir sürümün tam olarak hangi kod durumunda olduğunu belirtmek için kullanılır.

Örnek:

  • Git’te bir sürüm etiketi oluşturma: git tag -a v1.0.0 -m "First stable release"

Versiyonlama ve Etiketleme Arasındaki Farklar

ÖzellikVersiyonlamaEtiketleme
AmaçYazılımın gelişim sürecini düzenli bir şekilde takip etmek.Kodun belirli bir durumunu işaretlemek.
KapsamYazılımın genel ilerlemesini temsil eder.Belirli bir sürüm veya kod durumunu ifade eder.
Uygulama AlanıDaha genel (proje planlama, sürüm yönetimi).Daha spesifik (kod yönetimi, sürüm işaretleme).

Örnek Senaryolar

1. Semantik Versiyonlama Kullanımı

Bir yazılım projesinde:

  • v1.0.0: İlk ana sürüm yayınlandı.
  • v1.1.0: Yeni bir özellik eklendi (örneğin, kullanıcı profil düzenleme).
  • v1.1.1: Küçük bir hata düzeltildi (örneğin, bir düğme çalışmıyordu).

2. Git Etiketleme

  • v1.0.0: İlk sürümün tamamlandığı commit'e etiket eklendi.
    • git tag -a v1.0.0 -m "Initial release"
  • v1.1.0: Yeni özellikler eklendiği commit'e etiket eklendi.
    • git tag -a v1.1.0 -m "Added user profile editing"
  • Etiketler daha sonra şu şekilde paylaşılabilir:
    • git push origin --tags

Versiyonlama ve Etiketleme Kullanımının Avantajları

Versiyonlama:

  1. Netlik Sağlar:
    • Yazılımın hangi sürümde ne içerdiğini net bir şekilde belirtir.
  2. Uyumluluk Yönetimi:
    • Yeni sürümlerin eski sürümlerle uyumluluk durumunu anlamayı kolaylaştırır.
  3. Planlama ve İzleme:
    • Geliştiriciler ve ekipler, hangi özelliklerin hangi sürümde olduğunu takip edebilir.

Etiketleme:

  1. Geçmişe Dönüş Kolaylığı:
    • Eski bir sürümün kod durumuna kolayca erişmeyi sağlar.
  2. Güvenilirlik:
    • Her sürümün tam olarak hangi kod tabanına dayandığını garanti eder.
  3. Yayın Sürecini Destekler:
    • Üretim ortamına gönderilen kodun hangi commit'e dayandığını anlamak için kullanılır.

En İyi Uygulamalar

Tutarlı Sürümleme:

  • Her sürüm için semantik versiyonlama standartlarına uygun numaralandırma kullanın.
  • Örneğin: v2.0.1 → Yeni bir özellik ve hata düzeltmesi.

Etiketlerin Açıklayıcı Olması:

  • Etiketlere açıklayıcı bir mesaj ekleyin:

Otomasyon Kullanımı:

  • CI/CD süreçlerinde versiyonlama ve etiketleme işlemlerini otomatize edin.
  • Örneğin: Yeni bir sürümde otomatik olarak bir etiket eklemek.

Dokümantasyon Ekleyin:

  • Her sürüm için release notes (yayın notları) hazırlayın:

v1.0.0

- Initial release with basic features

v1.1.0

- Added user profile editing

v1.1.1

- Fixed a minor bug in the login form

Sonuç

Versiyonlama, yazılımın gelişimini düzenli bir şekilde takip etmek için kritik bir yöntemdir. Etiketleme ise, bu versiyonların koddaki tam karşılığını işaretlemek için kullanılır. Her iki kavram da yazılım geliştirme süreçlerinde düzeni, işbirliğini ve sürüm yönetimini kolaylaştırır.

*Gönderi ve görsel chatgpt ile oluşturulmuştur.

omurs

Ö S, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Beğeni


Yıllara Göre Gönderiler








LombokLoglamaB2C (Business-to-Consumer)B2B (Business-to-Business)İçerik Yönetim Sistemi - CMS (Content Management System)Pagination (Sayfalama)Sanal Özel Ağ - VPN (Virtual Private Network)Cronjob (Zamanlanmış Görevler)Printer-YazıcıJava'daki İlkel Veri Tipleri ve Alabilecekleri DeğerlerBit & Byte ve Hafıza Boyutlarındaki Ölçüm BirimleriSanallaştırma (Virtualization)DNS KayıtlarıE-Fatura ve E-ArşivYazılım Lisans TürleriAudit (Denetim) Açık Kaynak (Open Source)Monitoring (İzleme)Sitemap & Robots.txtKilometretaşı (Milestone)BSMV (Banka ve Sigorta Muameleleri Vergisi)KKDF (Kaynak Kullanımı Destekleme Fonu)Siber Pazartesi (Cyber Monday)Black Friday (Kara Cuma)Hotlink.htaccessCryptoLockerMalwareTrojanWormDependency (Yazılım Geliştirme Sürecinde Paket Bağımlılığı)Configuration (Yazılım Geliştirme Sürecinde Yapılandırma)Yahoo ve Yahoo'nun Başarısızlık NedenleriArchiving (Yazılım Geliştirme Sürecinde Arşivleme)Görsel Dosya Türleri (Image Types)ReleaseVersioning & Tagging (Versiyonlama ve Etiketleme)BuildJob (Yazılım Geliştirme Sürecinde Görevler)SonarQubeCDATA (Character Data)Alan Adı Uzantıları (Domain Name Extensions)Regresyon Kara Kutu (Black-Box) TestBeyaz Kutu (White-box) TestGri Kutu (Grey-box) TestYazılım Geliştirme Sürecindeki Temel Test TürleriKod gözden geçirme (Code Review)Birim Testi (Unit Testing)Yazılım Sürecinde EntegrasyonJAR & WAREager & Lazy Fetch TypeMaskelemeKPI (Key Performance Indicator)KII (Key Impact Indicator)Projenin JAR Dosyasını Oluştur - JAR PathSunucu için Linux dağıtım SeçimiKonyteynerler (container technologies)Runtime & Compile Time (Çalışma ve Derleme Zamanı)@Anotasyonlar (@Annotations)