Kılavuz: Git ve Python ile Sürüm Oluşturmayı Otomatikleştirin

Kılavuz: Git ve Python ile Sürüm Oluşturmayı Otomatikleştirin
Kılavuz: Git ve Python ile Sürüm Oluşturmayı Otomatikleştirin

Git ve Python ile Sürüm Oluşturma Sistemi Oluşturma

Proje dosyalarınızın sürümlendirmesinin otomatikleştirilmesi, düzenli ve verimli bir geliştirme iş akışını sürdürmek için çok önemlidir. Git ve Python'u kullanarak her kayıtta version.py dosyasını güncelleyen bir sistem oluşturabilirsiniz. Bu, proje sürümünüzün her zaman doğru olmasını ve kod tabanınızda yapılan en son değişiklikleri yansıtmasını sağlar.

Bu kılavuzda, Git deponuza her gönderildiğinde version.py dosyasını otomatik olarak güncellemenin bir yöntemini inceleyeceğiz. Taahhüt ayrıntılarını yakalayan, sürüm numarasını artıran ve Git iş akışınızla sorunsuz bir şekilde bütünleşen bir betiğin uygulanmasını tartışacağız.

Git Hooks Kullanarak Python'da Sürüm Oluşturmayı Otomatikleştirme

Ön İtme Kancası için Python Komut Dosyası

#!/usr/bin/env /usr/bin/python
import os
import subprocess
import re
import sys

commit_msg_file = sys.argv[1]
with open(commit_msg_file, 'r') as file:
    commit_msg = file.read().strip()

version_file = os.path.abspath('version.py')
hashed_code = subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip().decode('utf-8')

if os.path.exists(version_file):
    print(f'Reading previous {version_file}')
    with open(version_file, 'r') as f:
        content = f.read()
        major, minor, patch = map(int, re.search(r'version = "(\d+)\.(\d+)\.(\d+)"', content).groups())
    patch += 1
else:
    print(f'Creating new {version_file}')
    major, minor, patch = 0, 0, 1

print(f'Writing contents of {version_file} with "{commit_msg}"')
with open(version_file, 'w') as f:
    f.write(f'''# This file is created by the pre-push script
class Version:
    comment = "{commit_msg}"
    hash = "{hashed_code}"
    version = "{major}.{minor}.{patch}"

if __name__ == "__main__":
    print(Version.version)
''')

subprocess.call(['git', 'add', version_file])

Sürüm Artışı için Git Hook'u Ayarlama

Shell'de Git Hook Komut Dosyası

#!/bin/sh

VERSION_PY="version.py"

# Get the commit message file from the arguments
COMMIT_MSG_FILE=$1

# Extract the commit message
COMMIT_MSG=$(cat $COMMIT_MSG_FILE)

# Get the latest commit hash
GIT_HASH=$(git rev-parse HEAD)

if [ -f "$VERSION_PY" ]; then
  VERSION=$(grep -oP '(?<=version = ")(\d+\.\d+\.\d+)' $VERSION_PY)
  IFS='.' read -r -a VERSION_PARTS <<< "$VERSION"
  VERSION_PARTS[2]=$((VERSION_PARTS[2] + 1))
  NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.${VERSION_PARTS[2]}"
else
  NEW_VERSION="0.0.1"
fi

echo "# This file is created by the pre-push script" > $VERSION_PY
echo "class Version:" >> $VERSION_PY
echo "    comment = \"$COMMIT_MSG\"" >> $VERSION_PY
echo "    hash = \"$GIT_HASH\"" >> $VERSION_PY
echo "    version = \"$NEW_VERSION\"" >> $VERSION_PY

git add $VERSION_PY

Otomatik Sürüm Oluşturma ile Git İş Akışını İyileştirme

Git iş akışında sürüm oluşturmanın otomatikleştirilmesi yalnızca tutarlılığı sağlamakla kalmaz, aynı zamanda yazılım projelerinde izlenebilirliği de artırır. Geliştiriciler, sürüm yönetimini doğrudan Git kancalarına entegre ederek sorunsuz ve verimli bir süreç sürdürebilir. Bir yaklaşım, Git'in ön-itme kancasını kullanarak her bir taahhütte bir sürüm dosyasını otomatik olarak güncellemektir. Bu yöntem, değişiklikleri izlemek ve kod tabanının geçmiş kaydını tutmak için gerekli olan taahhüt mesajlarının ve karma değerlerinin yakalanmasını içerir.

Bir diğer önemli husus, değişiklikleri doğru bir şekilde geri alma yeteneğidir. Güncel bir sürüm dosyasıyla geliştiriciler, herhangi bir sürümdeki projenin tam durumunu tam olarak belirleyebilirler. Bu özellikle otomasyonun önemli olduğu sürekli entegrasyon ve dağıtım (CI/CD) ortamlarında kullanışlıdır. Sürüm dosyasının her işlemde güvenilir bir şekilde güncellendiğinden emin olmak, sağlam bir dağıtım hattının korunmasına, manuel hataların azaltılmasına ve sürümlerin kolaylaştırılmasına yardımcı olur.

Git ve Python ile Sürüm Oluşturmayı Otomatikleştirme Hakkında Sık Sorulan Sorular

  1. Git depomda sürüm oluşturmayı nasıl otomatikleştirebilirim?
  2. Her yürütmede bir sürüm dosyasını güncellemek için ön-itme kancası gibi Git kancalarını ve komut dosyalarını kullanarak sürüm oluşturmayı otomatikleştirebilirsiniz.
  3. Ön itme kancası nedir?
  4. Ön-itme kancası, değişiklikler uzak bir depoya gönderilmeden önce komut dosyalarını çalıştıran bir Git kancasıdır. Bir sürüm dosyasını güncellemek gibi görevleri otomatikleştirmek için kullanılabilir.
  5. Git hook betiğindeki taahhüt mesajına nasıl erişebilirim?
  6. Komut dosyasına argüman olarak iletilen dosyayı okuyarak, genellikle şunu kullanarak, taahhüt mesajına erişebilirsiniz: sys.argv Python'da veya $1 bir kabuk betiğinde.
  7. Hangi komut en son Git taahhüt karmasını alır?
  8. Komuta git rev-parse HEAD Git deposundaki en son taahhüt karmasını alır.
  9. Bir komut dosyasındaki sürüm numarasını nasıl artırırım?
  10. Geçerli sürümü çıkarmak, yama numarasını artırmak ve sürüm dosyasını yeni sürüm numarasıyla yeniden yazmak için normal ifadeleri kullanın.
  11. Bu yöntemi sürekli entegrasyon araçlarıyla kullanabilir miyim?
  12. Evet, sürüm oluşturmanın Git kancalarıyla otomatikleştirilmesi, derlemeler ve dağıtımlar arasında sürüm tutarlılığı sağlamak için CI/CD işlem hatlarına entegre edilebilir.
  13. Otomatik versiyonlamanın faydaları nelerdir?
  14. Otomatik sürüm oluşturma, manuel hataları azaltır, tutarlı sürüm takibi sağlar ve geliştirme ve dağıtım sürecini kolaylaştırır.
  15. Sürüm dosyasının bir sonraki işleme dahil edilmesini nasıl sağlayabilirim?
  16. Kullanmak git add sürüm dosyasını komut dosyası tarafından güncellendikten sonra hazırlamak için.
  17. Sürüm dosyası mevcut değilse ne olur?
  18. Sürüm dosyası mevcut değilse, komut dosyası bunu 0.0.1 gibi bir başlangıç ​​sürüm numarasıyla oluşturabilir.
  19. Git kancaları için başka programlama dilleri kullanmak mümkün mü?
  20. Evet, tercihinize ve proje gereksinimlerinize bağlı olarak Git hook komut dosyalarını Python, Bash veya Perl gibi çeşitli programlama dillerinde yazabilirsiniz.

Otomatik Sürüm Oluşturma Hakkında Son Düşünceler

Her Git gönderiminde version.py dosyasının güncelleştirilmesinin otomatikleştirilmesi, projelerinizde doğru sürüm kontrolünü sağlamak için pratik bir çözümdür. Sağlanan komut dosyaları, bu süreci otomatikleştirmek için Git kancalarından ve Python'dan yararlanarak her işlemin güncellenmiş bir sürüm numarası, taahhüt mesajı ve karma ile izlenmesini sağlar. Bu yöntemin uygulanması iş akışınızı büyük ölçüde geliştirebilir, daha verimli hale getirebilir ve insan hatası olasılığını azaltabilir. Sağlanan yönergeleri ve örnekleri takip ederek otomatik sürüm oluşturmayı kendi geliştirme uygulamalarınıza kolayca entegre edebilirsiniz.