Versionēšanas sistēmas izveide ar Git un Python
Projekta failu versiju izveides automatizācija ir ļoti svarīga, lai uzturētu organizētu un efektīvu izstrādes darbplūsmu. Izmantojot Git un Python, varat izveidot sistēmu, kas katru reizi atjaunina versiju.py failu. Tas nodrošina, ka jūsu projekta versija vienmēr ir precīza un atspoguļo jaunākās izmaiņas, kas veiktas jūsu kodu bāzē.
Šajā rokasgrāmatā mēs izpētīsim metodi, kā automātiski atjaunināt failu version.py, katru reizi nospiežot uz jūsu Git repozitoriju. Mēs apspriedīsim skripta ieviešanu, kas tver informāciju par saistību izpildi, palielina versijas numuru un nemanāmi integrējas ar jūsu Git darbplūsmu.
Versionēšanas automatizācija Python, izmantojot Git Hooks
Python skripts priekšpush Hook
#!/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])
Git Hook iestatīšana versijas palielināšanai
Git Hook Script programmā Shell
#!/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
Git darbplūsmas uzlabošana, izmantojot automatizēto versiju izveidi
Versionēšanas automatizācija Git darbplūsmā ne tikai nodrošina konsekvenci, bet arī uzlabo programmatūras projektu izsekojamību. Integrējot versiju pārvaldību tieši Git hooks, izstrādātāji var uzturēt netraucētu un efektīvu procesu. Viena pieeja ir izmantot Git pirmspush āķi, lai automātiski atjauninātu versijas failu ar katru apņemšanos. Šī metode ietver saistību ziņojumu un jaucējvērtību tveršanu, kas ir būtiska izmaiņu izsekošanai un koda bāzes vēsturiskā ieraksta uzturēšanai.
Vēl viens būtisks aspekts ir spēja precīzi atgriezt izmaiņas. Izmantojot atjauninātu versijas failu, izstrādātāji var precīzi noteikt precīzu projekta stāvokli jebkurā konkrētā versijā. Tas ir īpaši noderīgi nepārtrauktas integrācijas un izvietošanas (CI/CD) vidēs, kur galvenais ir automatizācija. Versijas faila uzticamas atjaunināšanas nodrošināšana ar katru apstiprinājumu palīdz uzturēt stabilu izvietošanas konveijeru, samazinot manuālās kļūdas un racionalizējot laidienus.
Bieži uzdotie jautājumi par versiju automatizēšanu, izmantojot Git un Python
- Kā es varu automatizēt versiju izveidi savā Git repozitorijā?
- Varat automatizēt versiju veidošanu, izmantojot Git āķus, piemēram, pirmspush āķi, un skriptus, lai atjauninātu versijas failu katrā saistībā.
- Kas ir priekšspiediena āķis?
- Pirmsspiediena āķis ir Git āķis, kas palaiž skriptus, pirms izmaiņas tiek pārsūtītas uz attālo repozitoriju. To var izmantot, lai automatizētu uzdevumus, piemēram, versijas faila atjaunināšanu.
- Kā Git hook skriptā piekļūt izpildes ziņojumam?
- Jūs varat piekļūt apstiprināšanas ziņojumam, izlasot failu, kas tiek nodots kā arguments skriptam, parasti izmantojot sys.argv Python vai $1 čaulas skriptā.
- Kura komanda izgūst jaunāko Git commit hash?
- Komanda git rev-parse HEAD izgūst jaunāko commit hash Git repozitorijā.
- Kā es varu palielināt versijas numuru skriptā?
- Izmantojiet regulārās izteiksmes, lai izvilktu pašreizējo versiju, palielinātu ielāpa numuru un pārrakstītu versijas failu ar jauno versijas numuru.
- Vai es varu izmantot šo metodi ar nepārtrauktas integrācijas rīkiem?
- Jā, automatizētu versiju veidošanu ar Git āķiem var integrēt CI/CD konveijeros, lai nodrošinātu versiju konsekvenci visās versijās un izvietošanā.
- Kādas ir automatizētās versijas priekšrocības?
- Automatizētā versiju noteikšana samazina manuālās kļūdas, nodrošina konsekventu versiju izsekošanu un racionalizē izstrādes un izvietošanas procesu.
- Kā nodrošināt, lai versijas fails tiktu iekļauts nākamajā apstiprinājumā?
- Izmantot git add lai iestudētu versijas failu pēc tam, kad to ir atjauninājis skripts.
- Kas notiek, ja versijas fails neeksistē?
- Ja versijas fails neeksistē, skripts to var izveidot ar sākotnējo versijas numuru, piemēram, 0.0.1.
- Vai ir iespējams izmantot citas programmēšanas valodas Git āķiem?
- Jā, jūs varat rakstīt Git hook skriptus dažādās programmēšanas valodās, piemēram, Python, Bash vai Perl, atkarībā no jūsu vēlmēm un projekta prasībām.
Pēdējās domas par automatizēto versiju izveidi
Faila version.py atjaunināšanas automatizācija ar katru Git push ir praktisks risinājums precīzas versiju kontroles uzturēšanai jūsu projektos. Nodrošinātie skripti izmanto Git hooks un Python, lai automatizētu šo procesu, nodrošinot, ka katrai apņemšanās tiek izsekota ar atjauninātu versijas numuru, saistību ziņojumu un jaucējkodu. Šīs metodes ieviešana var ievērojami uzlabot jūsu darbplūsmu, padarot to efektīvāku un samazinot cilvēku kļūdu iespējamību. Ievērojot sniegtās vadlīnijas un piemērus, varat viegli integrēt automatizēto versiju veidošanu savā izstrādes praksē.