Skip to main content

Asennettavan pakettiversion haku git-leimojen mukaan

Project description

git-versiointi

Työkalupaketti pakettiversion ja -historian sekä vaadittavien riippuvuuksien automaattiseen määrittämiseen.

Asennus

Asennusta järjestelmään ei tarvita työasemalla eikä palvelimella.

Työkalut otetaan sen sijaan käyttöön kunkin halutun pip-asennettavan git-projektin osalta muokkaamalla vastaavaa setup.py-tiedostoa seuraavasti:

...
setup(
  ...
  setup_requires=['git-versiointi'], # <-- LISÄTÄÄN
  ...
  # version=...                        <-- POISTETAAN
  ...
)

Lisäksi voidaan tarvittaessa antaa parametrin git_versiointi arvoksi setup.py-tiedoston sijainti; oletuksena tämä on sys.argv[0].

Kun pakettia asennetaan joko työasemalla (python setup.py develop) tai palvelimella (pip install ...), tekee järjestelmä setup.py-tiedoston suorittamisen yhteydessä automaattisesti seuraavaa:

  • asentaa git-versiointi-paketin, ellei sitä löydy jo valmiiksi järjestelmästä
  • suorittaa normaalin asennuksen muodostaen versionumeron yms. tiedot automaattisesti (ks. kuvaus jäljempänä)
  • poistaa asennuksen ajaksi asennetun git-versiointi-paketin

Versionumeron tutkiminen

Git-versiointia käyttävän paketin versionumero voidaan poimia komentoriviltä seuraavasti:

python <paketti>/setup.py --version [--ref XXX]

Python-kutsulle voidaan antaa parametri --ref XXX, missä XXX on git-muutoksen tiiviste, haaran tai leiman nimi tms. Tällöin palautetaan versionumero kyseisen muutoksen kohdalla. Mikäli paketin (ali-) versiointikäytäntö on muuttunut annetun revision ja nykyisen tilanteen (HEAD) välillä, saattaa ilmoitettu versionumero poiketa historiallisesta, kyseisellä hetkellä silloisen käytännön mukaisesti lasketusta.

Toimintaperiaate

Skripti asettaa asennettavan python-jakelun tietoihin seuraavat tiedot:

  • version: versionumero
  • historia: JSON-data, joka sisältää projektin git-versiohistorian

Versionumeron muodostus

Versio- ja aliversionumero muodostetaan paketin sisältämän git-tietovaraston sisältämien tietojen mukaan. Tietovarastosta etsitään versionumerolta näyttäviä leimoja: tyyppiä ^v[0-9].

Mikäli tiettyyn git-muutokseen osoittaa suoraan jokin leima, puhutaan (kokonaisesta) versiosta; muutoin kyseessä on aliversio. Mikäli leima on tyyppiä [a-z][0-9]*$, puhutaan kehitysversiosta; muutoin kyseessä on julkaisuversio.

Kokonaisen version numero poimitaan versionumerojärjestyksessä (PEP 440) suurimman, suoraan kyseiseen muutokseen osoittavan git-leiman mukaisesti. Ensisijaisesti haetaan julkaisu- ja toissijaisesti kehitysversiota. Näin löydetty suora versioleima annetaan parametrinä leima.

Aliversion numero lasketaan lähimmän, versionumerojärjestyksessä suurimman julkaisu- tai kehitysversion sekä tämän päälle lasketun git-muutoshistorian pituuden mukaan. Nämä tiedot annetaan parametreinä leima ja etaisyys.

Oletuksena versio- ja aliversionumero lasketaan näiden tietojen mukaan seuraavasti:

  • kokonaiseen versioon liittyvän leima sellaisenaan
  • jos lähin, viimeisin leima kuvaa kehitysversiota (esim. v1.2.3a1, v1.2.3.dev3), muodostetaan aliversio lisäämällä etäisyys leiman loppunumeroon, esim. etäisyys 3 -> v1.2.3a4, v1.2.3.dev6
  • muussa tapauksessa aliversion etäisyys lisätään alanumerona leiman kuvaaman versionumero perään, esim. v1.2 + etäisyys 3 (kolme muutosta) --> versionumero v1.2.3

Versionumeroidan määritys voidaan räätälöidä seuraavilla tavoilla paketin setup.cfg-tiedostossa [versiointi]-osion sisällä:

  • versio, aliversio: merkkijono, johon laajennetaan parametrit leima ja etaisyys

Huom. nämä räätälöinnit eivät vaikuta edellä kuvattuun kehitysversioiden numerointiin.

Kaikki oletusarvoiset tai räätälöidyn logiikan mukaan muodostetut versionumerot normalisoidaan lopuksi PEP 440:n mukaisesti.

Historiatiedot

Paketin tietoihin lisättävä historia kirjoitetaan asennetun paketin metatietoihin (EGG-INFO) tiedostoon historia.json.

Paketin omissa asennustiedoissa määritetty tietue entry_points[egg_info.writers] asettaa kirjoituskomennon tiedostolle historia.json

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git-versiointi-1.5rc5.tar.gz (12.5 kB view details)

Uploaded Source

Built Distributions

git_versiointi-1.5rc5-py3.7.egg (25.7 kB view details)

Uploaded Source

git_versiointi-1.5rc5-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file git-versiointi-1.5rc5.tar.gz.

File metadata

  • Download URL: git-versiointi-1.5rc5.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.5

File hashes

Hashes for git-versiointi-1.5rc5.tar.gz
Algorithm Hash digest
SHA256 4e829dd16c34989a7b1a2f68cc2382b3abaa28400e5780be0a734ec8004baa74
MD5 da00904d376319d366512d16516335db
BLAKE2b-256 6e917da4a0cbfe466b4dd4ffd6f9cf5ef38cbedaaee980cb501f89c0e97a3b1f

See more details on using hashes here.

File details

Details for the file git_versiointi-1.5rc5-py3.7.egg.

File metadata

  • Download URL: git_versiointi-1.5rc5-py3.7.egg
  • Upload date:
  • Size: 25.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.5

File hashes

Hashes for git_versiointi-1.5rc5-py3.7.egg
Algorithm Hash digest
SHA256 6f00aee6d89d6f3d957b8bf6163b5ce51489b4314028b5a4033fb226635e2504
MD5 29e1ec88ac616fb6f4055b1697228e29
BLAKE2b-256 7acddb2f5f380d2162447b4014af4bb54ea79fce9bf4dbfcfb34d644f9d39efd

See more details on using hashes here.

File details

Details for the file git_versiointi-1.5rc5-py3-none-any.whl.

File metadata

  • Download URL: git_versiointi-1.5rc5-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.5

File hashes

Hashes for git_versiointi-1.5rc5-py3-none-any.whl
Algorithm Hash digest
SHA256 3f56a8e2664028b22b79d06b96aa4478720fd43c0eca315b22560337c4161203
MD5 c60e983d575d6d0107f327edd73ff0e1
BLAKE2b-256 0dbed5bea7589e018c36c373f05dc9221f712f7b622fb58a32fcc7f91dbc3d24

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page