Vodnik: Avtomatizirajte ustvarjanje različic z Gitom in Pythonom

Vodnik: Avtomatizirajte ustvarjanje različic z Gitom in Pythonom
Vodnik: Avtomatizirajte ustvarjanje različic z Gitom in Pythonom

Ustvarjanje sistema za določanje različic z Gitom in Pythonom

Avtomatizacija različic vaših projektnih datotek je ključnega pomena za vzdrževanje organiziranega in učinkovitega delovnega toka razvoja. Z uporabo Gita in Pythona lahko ustvarite sistem, ki posodobi datoteko version.py z vsako potrditvijo. To zagotavlja, da je vaša različica projekta vedno točna in odraža najnovejše spremembe vaše kodne baze.

V tem priročniku bomo raziskali metodo za samodejno posodabljanje datoteke version.py ob vsakem pritisku v vaš repozitorij Git. Razpravljali bomo o implementaciji skripta, ki zajame podrobnosti potrditve, poveča številko različice in se brezhibno integrira z vašim potekom dela Git.

Avtomatizacija ustvarjanja različic v Pythonu z uporabo kavljev Git

Skript Python za kavelj pred pritiskom

#!/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])

Nastavitev Git Hook za povečanje različice

Git Hook skript v lupini

#!/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

Izboljšanje poteka dela Git s samodejnim vodenjem različic

Avtomatizacija različic znotraj delovnega toka Git ne zagotavlja samo doslednosti, ampak tudi izboljša sledljivost v programskih projektih. Z integracijo upravljanja različic neposredno v kljuke Git lahko razvijalci vzdržujejo brezhiben in učinkovit proces. Eden od pristopov je uporaba Gitove kljuke pred potiskom za samodejno posodobitev datoteke različice z vsako potrditvijo. Ta metoda vključuje zajemanje sporočil o objavi in ​​zgoščenih vrednosti, ki so bistvenega pomena za sledenje spremembam in vzdrževanje zgodovinskega zapisa kodne baze.

Drug pomemben vidik je zmožnost natančne razveljavitve sprememb. Z posodobljeno datoteko različice lahko razvijalci natančno določijo točno stanje projekta v kateri koli različici. To je še posebej uporabno v okoljih stalne integracije in uvajanja (CI/CD), kjer je avtomatizacija ključna. Zagotavljanje, da je datoteka različice zanesljivo posodobljena z vsako potrditvijo, pomaga vzdrževati robusten cevovod za uvajanje, zmanjšuje ročne napake in racionalizira izdaje.

Pogosta vprašanja o avtomatiziranju urejanja različic z Gitom in Pythonom

  1. Kako lahko avtomatiziram urejanje različic v svojem repozitoriju Git?
  2. Različice lahko avtomatizirate z uporabo kavljev Git, kot je kavelj pred potiskom, in skriptov za posodobitev datoteke različice ob vsaki objavi.
  3. Kaj je kljuka pred potiskom?
  4. Pre-push hook je Git hook, ki izvaja skripte, preden so spremembe potisnjene v oddaljeno skladišče. Uporablja se lahko za avtomatizacijo opravil, kot je posodabljanje datoteke različice.
  5. Kako dostopam do sporočila o objavi v skriptu za kljuko Git?
  6. Do sporočila o potrditvi lahko dostopate tako, da preberete datoteko, posredovano kot argument skriptu, običajno z uporabo sys.argv v Pythonu oz $1 v lupinskem skriptu.
  7. Kateri ukaz pridobi najnovejšo zgoščeno vrednost Git commit?
  8. Ukaz git rev-parse HEAD pridobi najnovejšo zgoščeno vrednost objave v repozitoriju Git.
  9. Kako povečam številko različice v skriptu?
  10. Uporabite regularne izraze za ekstrahiranje trenutne različice, povečanje številke popravka in ponovno pisanje datoteke različice z novo številko različice.
  11. Ali lahko to metodo uporabim z orodji za stalno integracijo?
  12. Da, avtomatizacijo različic s kljukicami Git je mogoče integrirati v cevovode CI/CD, da se zagotovi doslednost različic med gradnji in uvedbami.
  13. Kakšne so prednosti avtomatiziranega ustvarjanja različic?
  14. Avtomatizirano urejanje različic zmanjša število ročnih napak, zagotavlja dosledno sledenje različicam in poenostavi razvoj in postopek uvajanja.
  15. Kako zagotovim, da je datoteka različice vključena v naslednjo objavo?
  16. Uporaba git add za pripravo datoteke različice, potem ko jo posodobi skript.
  17. Kaj se zgodi, če datoteka različice ne obstaja?
  18. Če datoteka različice ne obstaja, jo lahko skript ustvari z začetno številko različice, na primer 0.0.1.
  19. Ali je mogoče uporabiti druge programske jezike za kljuke Git?
  20. Da, kaveljske skripte Git lahko pišete v različnih programskih jezikih, kot so Python, Bash ali Perl, odvisno od vaših želja in projektnih zahtev.

Končne misli o avtomatiziranem urejanju različic

Avtomatiziranje posodabljanja datoteke version.py z vsakim pritiskom na Git je praktična rešitev za ohranjanje natančnega nadzora različic v vaših projektih. Priloženi skripti izkoriščajo kljuke Git in Python za avtomatizacijo tega procesa, s čimer zagotavljajo, da se vsaki objavi sledi s posodobljeno številko različice, sporočilom o objavi in ​​zgoščeno vrednostjo. Izvedba te metode lahko močno izboljša vaš potek dela, ga naredi učinkovitejšega in zmanjša možnosti človeške napake. Če sledite navedenim smernicam in primerom, lahko preprosto vključite avtomatizirano ustvarjanje različic v svoje razvojne prakse.