abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 01:32 | Nová verze
Letos bylo v komunitě Mageia hodně změn. Po volbě nových vedoucích přišla velká aktualizace a krátce na to udržovací verze 6.1. 7.12., dle plánu, vyšla Mageia s číslem 7 v její první beta verzi. Chyby můžete hlásit v bugzille. Chyby v českých překladech pak na fóru české komunity.
Joelp | Komentářů: 0
dnes 00:11 | Zajímavý projekt
Kvůli rychlejšímu vývojovému cyklu byla přemístěna Cinelerra-gg. Cinelerra-gg je fork Cinelerry-hv. Některé rozdíly forků popisuje sám hlavní vývojář William Morrow (aka GoodGuy). Není zde popsán i fork Lumiera, zřejmě kvůli zatím nepoužitelnému stavu. … více »
D81 | Komentářů: 0
včera 19:11 | Nová verze

Do aplikace pro instant messaging Telegram (Wikipedie) lze nově nahrát češtinu. Více v příspěvku na blogu Telegramu.

Ladislav Hagara | Komentářů: 3
včera 10:55 | Nová verze

Jean-Baptiste Kempf, prezident neziskové organizace VideoLAN stojící za svobodným multiplatformním multimediálním přehrávačem a frameworkem VLC, oznámil v příspěvku na svém blogu vydání první oficiální verze 0.1.0 v říjnu představeného dekodéru svobodného videoformátu AV1 (AOMedia Video 1) s názvem dav1d (Dav1d is an AV1 Decoder). Jedná se o alternativu k referenčnímu dekodéru libaom. Kódový název dav1da verze 0.1.0 je Gazelle.

Ladislav Hagara | Komentářů: 2
včera 10:22 | Nová verze

Po více než dvou letech od vydání verze 11.0 byla vydána nová major verze 12.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 4
11.12. 19:55 | Nová verze

Byla vydána verze 3.11 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Řešena je řada bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
11.12. 15:22 | Nová verze

Byl vydán Mozilla Firefox 64.0. Přehled novinek v poznámkách k vydání a na stránce věnované vývojářům. Nejnovější verze tohoto webového prohlížeče přináší například ovládání více panelů, nebo správce úloh, který lze otevřít v nabídce Firefoxu > Více > Správce úloh, nebo napsáním about:performance do adresního řádku.

Ladislav Hagara | Komentářů: 8
11.12. 13:00 | Zajímavý článek Ladislav Hagara | Komentářů: 0
10.12. 22:33 | Nová verze

Po 3 měsících vývoje od vydání verze 14 byla vydána nová stabilní verze 15 open source systému Nextcloud, forku ownCloudu, umožňujícího provoz vlastního cloudového úložiště. Přehled novinek i s náhledy v příspěvku na blogu. Pro vyzkoušení Nextcloudu je k dispozici demo.

Ladislav Hagara | Komentářů: 6
10.12. 18:00 | IT novinky

Počítačová hra Doom slaví 25 let. Společností id Software ji vydala 10. prosince 1993. Zahrát si ji lze například na Internet Archive.

Ladislav Hagara | Komentářů: 17
Chystáte se přejít na Wayland na „desktopu“?
 (25%)
 (6%)
 (12%)
 (30%)
 (27%)
Celkem 111 hlasů
 Komentářů: 14, poslední 10.12. 12:19
Rozcestník

version

6.6. 11:36 | Přečteno: 1881× | Výběrový blog | poslední úprava: 6.6. 20:48

Již nějaký ten pátek ve svých projektech používám pomocný script version.py který byl modifikován speciálně pro daný projekt a zajišťoval tyto věci:

  1. Hromadnou úpravu version stringu ve specifikovaných souborech
  2. Commit version souborů do GITu
  3. Vytvoření GIT TAGu s danou verzí
  4. Push změn a TAGu na server

V posledním projektu se ale s tímto scriptem vyskytly nějaké ty problémy a bylo třeba jej trochu poupravit, a v tu chvíli nastala ta nemilá situace kdy v x projektech byl zastaralý na míru pro projekt upravený version.py...

No co teď s tím že ? Řešení je jasné:

Přetavení version.py do univerzálního toolu na hromadnou změnu version stringu v projektu který může použít každý komu se hodí.

A tak vznikl version (Ehm, GitHub)(GitLab)

Co že tedy version umí ?

  1. Modifikuje všechny soubory v projektu obsahující version string jedním jednoduchým příkazem
  2. Přidává modifikované version soubory do GIT commitu a pushuje je na server
  3. Umí vytvořit version GIT TAG
  4. Kontroluje zda li mají všechny version soubory v projektu zapsanou stejnou verzi
  5. Kontroluje zda li nejsou žádné modifikované soubory spravované VCS GIT v projektu před změnou verze
  6. Kontroluje zda li je nová verze vyšší než stará verze
  7. Kontroluje validitu nově zadaného version string
  8. Dokáže dělat kroky v patch/minor/major version jednoduše příkazem "+" etc.

Jak se to používá ?

Použití je jednoduché prostě v rootu vašeho projektu spustíte jeden z těchto příkazů:

Zjištění aktuální verze

$ version
NEBO
$ version status

Nastavení nové verze

$ version 1.0.1
NEBO
$ version mark 1.0.1

Posun o specifikovaný počet kroků v major/minor/patch číslu verze

Pro posun se používá příkaz "+" ve formátu (+{1-3})({\d+}) kde první skupina detekuje počet "+" a dle toho určuje zda li se jedná o patch(+)/minor(++)/major(+++) změnu, druhá skupina určuje číslo posunu dané verze (default: 1)

Příklad

Takže příkazy pak vypadají takto

$ version + #pro posun o 1 v patch verzi
OR
$ version +10 #pro posun o 10 v patch verzi
OR
$ version ++1 #pro posun o 1 v minor verzi

Pro více možností viz:

version --help
Main entry-point into the 'version' application.

This is a version

License: GPL-3.0
Website: https://github.com/Salamek/version

Command details:
    mark                Mark project specified by --project_dir by <version>.
    status              Show current --project_dir version.


Usage:
    version mark <version> [-p DIR] [-c FILE] [--dry] [--all_yes]
    version status [-p DIR] [-c FILE]
    version 
    version <version> [-p DIR] [-c FILE] [--dry] [--all_yes]
    version (-h | --help)
    version (-v | --version)

Options:
    --dry                       Run as usually but don't change anything.
    -p DIR --project_dir=DIR    Project directory, if not set current is used.
    -y --all_yes                Answer YES to all prompts.
    -d --project_dir=DIR        Project directory, if not set current is used.
    -c FILE --config_file=FILE  Path to config file, if not set --project_dir/version.conf is used
    --version                   Show version.

Instalace

Debian a deriváty

Přidejte repozitář těmito příkazy

$ wget -O - https://apt.salamek.cz/apt/conf/salamek.gpg.key|sudo apt-key add -
$ echo "deb     https://apt.salamek.cz/apt all main" | sudo tee /etc/apt/sources.list.d/salamek.cz.list

Pak můžete nainstalovat python3-version pomocí

$ apt update && apt install python3-version

Archlinux

Přidejte repozitář na konec souboru /etc/pacman.conf

[salamek]
Server = https://arch.salamek.cz/any
SigLevel = Optional

a pak nainstalujte příkazem

$ pacman -Sy version

Konfigurace

Tohle všechno se samozřejmě neobejde bez nějaké té konfigurace která je uložena v $PROJECT_ROOT/.version.yml (Pouze REGEXPS a VERSION_FILES jsou povinné):

# GIT Configuration
GIT:
    AUTO_COMMIT: true # Autocommitnout modifikované version soubory (default: true)
    AUTO_TAG: true # Vytvořit GIT TAG s novou verzí (default: true)
    AUTO_PUSH: true # Automaticky pushnout na server false=disabled, true=enabled, 'remote_name'=enabled and push to remote_name (default: true)
    COMMIT_MESSAGE: 'New version {version}' # Text použít v commit message {version} je kotva pro version string (default: 'New version {version}')

# Pole regexpů použitých pro nalezení version stringů v VERSION_FILES
# Klíč je název regexpu a hodnota je samotný regexp
# Přidejte své vlastní a smažte neužitečné
REGEXPS:
    'python': __version__\s*=\s*\'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\' # Regexp for version format commonly used in python
    'setup.py': version\s*=\s*\'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\' # Regexp for version format commonly used in python setup.py
    'PKGBUILD': pkgver\s*=\s*(?P<version>.*) # Regexp used in PKGBUILD

# Pole version souborů které mají být nalezeny a upraven, glob formát cest je podporován
# Klíč je glob cesta a hodnota je jméno regexpu který se má použít k nalezení version string v nalezených souborech
# Přidejte své vlastní a smažte neužitečné
VERSION_FILES:
    'version/__init__.py': 'python'
    'setup.py': 'setup.py'
    'archlinux/PKGBUILD': 'PKGBUILD'
Tak snad se to někomu z vás bude hodit :-)        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Josef Kufner avatar 6.6. 12:00 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: version
Obvykle verzi v programech řeším tak, že při buildu si někam uložím výstup z git describe. Prostě vygeneruju jeden malý soubor, který obsahuje definici konstanty, nebo je součástí konfigurace projektu.

U mnoha projektů je vidět ručně udržovaný ChangeLog a commity, které takovou konstantu někde upravují ručně, ale nikdy to není o moc víc jak jednořádková změna. Proč to tedy tak komplikovat?
Hello world ! Segmentation fault (core dumped)
Salamek avatar 6.6. 12:05 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Když mam vice jazyku / build scriptu / configuraku v projektu, tak to proste jednoduše nejde, zkoušel jsem používat single point version storage, ale vzdy to dopadlo nějakou prasofunkcionalitou v urcitch skriptech...
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Salamek avatar 6.6. 12:12 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Vlastne odpoved je primo v prilozenem konfiguraku, kde se meni verze v PKGBUILD pro archlinux, verze v setup.py (kde byla dříve naprasená funkce co lovila verzi z version/__init__.py) a pak finalne uprava v version/__init__.py kde se drive nachazela taky pochybnost...
A hlavne nezapomen na to ze nektere projekty maji verzi napriklad v hlavickach kazdeho souboru, dokumentaci a tak podobne...
Takhle jsem mohl vsechny version prasarny vyjmout z projektu a nechat tam ciste stringy... navic to za me resi git add+commit+push+pushtag a hlavne mi to nedovoli vydat verzi kdyz mam v repu neulozene zmeny.
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
6.6. 14:16 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: version
Tohle se dá často automatizovat pomocí atributu export-subst (viz gitattributes(5)).
Bystroushaak avatar 6.6. 12:09 Bystroushaak | skóre: 33 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: version
Osobně používám v python projektech parsování changelogu:
#! /usr/bin/env python3
from setuptools import setup
from setuptools import find_packages


changelog = open('CHANGELOG.rst').read()
long_description = open('README.rst').read() + "\n\n" + changelog


def get_version(data):
    def all_same(s):
        return all(x == s[0] for x in s)

    def has_digit(s):
        return any(x.isdigit() for x in s)

    data = data.splitlines()
    return list(
        line for line, underline in zip(data, data[1:])
        if (len(line) == len(underline) and
            all_same(underline) and
            has_digit(line) and
            "." in line),
    )[0]


setup(
    name='...',
    version=get_version(changelog),
    description="...",
    long_description=long_description,
    url='...',

    author='...',
    author_email='...',
    license='MIT',

    packages=find_packages('src'),
    package_dir={'': 'src'},

    zip_safe=False,
    include_package_data=True,
    install_requires=open("requirements.txt").read().splitlines()
)
#mindspace @ freenode
Salamek avatar 6.6. 12:17 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
No tohle ale pravě resi jen setup.py a CHANGELOG.rst co pak ale s PKGBUILD, hlavickami etc. BTW pouzival jsem neco podobneho, ale nakonec me to nasralo :-D Jinak opreni o changelog neni spatny napad, mozna tam pridam spravu/automaticke generovani changelogu a odpadne srani i s changelogem :-)
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Bystroushaak avatar 6.6. 13:24 Bystroushaak | skóre: 33 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: version
Já jsem jeden čas skládal changelog z git logu, ale pak mi došlo, že je to v podstatě nesmysl a že uživatele zajímají spíš ty podstatnější věci (změny api, nová fukncionalita atd), než každá blbost co jsem commitoval.
#mindspace @ freenode
Salamek avatar 6.6. 16:27 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
No me napadlo ze by se commity braly jen takove co by vyhovovaly danemu regexpu ktery si nastavi v .version.yml.
Napr. Commit musi zacinat velkym pismenem, koncit teckou, obsahovat alespon 4 slova a za teckout koncit (Closes|Fixes)\s+#\d+. Protoze dulezite commity by mely mit sve Issue... to alespon cloveka donuti nepsat sracky do commit messages... jinak si bude muset CHANGELOG doplnovat rucne :-D
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Josef Kufner avatar 6.6. 18:56 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: version
Spíš by dávalo smysl dát do komentáře commitu nějakou značku s textem a ty pak sesbírat do ChangeLogu. Ale takový komentář se klidně dá připsat do ChangeLogu rovnou a je to bez komplikací.
Hello world ! Segmentation fault (core dumped)
Salamek avatar 6.6. 19:20 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
A nebo se taky da rovnou na changelog vykaslat :-) No ta tvoje znacka je vyresena v tom mem predchozim navrhu, proste misto spravne formatovaneho commitu budes v regexpu hledat onu znacku... No zkusim neco vymyslet a otestovat jak mi s tim pujde workflow. :-D
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
6.6. 18:13 marbu | skóre: 29 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: version
co pak ale s PKGBUILD
Vygenerovat, případně přegenerovat, ten PKGBUILD na základě setuptools metadat z setup.py? Navíc nevím jakou výhodu má mít PKGBUILD soubor přímo v repu s kódem, když aby to k něčemu bylo, stejně ten PKGBUILD musím udržovat v AURu.
I think warning here is a bug. The biggest cloud service provider. There is no point in being so cool in a cold world.
Salamek avatar 6.6. 19:32 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Vygenerovat, případně přegenerovat, ten PKGBUILD na základě setuptools metadat z setup.py

A na to existuje nejaky tool ?

Navíc nevím jakou výhodu má mít PKGBUILD soubor přímo v repu s kódem, když aby to k něčemu bylo, stejně ten PKGBUILD musím udržovat v AURu.

Protoze mam CI (na vlastnim HW) ktere mi buildi balicky pri release do meho arch repa a je to tak pro me pohodlnejsi nez to lovit nekde na AUR ?

Jasne mohl bych v CI udelat release, stahnout archiv, spocitat sha256sum, vygenerovat ten PKGBUILD a nahrat jej na AUR, a pak ten balicek sestavit a uploadnout do repa. Ale to je ted pro me zbytecna prace. Ted jsem se jeste dival na AUR a zda se, ze se tam da vlozit jen jeden public key (netestoval jsem) a to situaci celkem komplikuje kdyz CI nemuze mit separe keypair.

Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Salamek avatar 6.6. 19:41 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Ah tak kecam: Tip: You can add multiple public keys to your profile by separating them with a newline in the input field. Takze v tom neni problem
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Salamek avatar 6.6. 19:35 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Ale samozrejme mas pravdu ze by se hodilo mit PKGBUILD na AUR, ale neni to pro me ted priorita protoze ja uz mam sestaveny balicek v repo :-) A dokud nekdo nevytvori issue ze mu vadi ze neni v AUR...
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
Salamek avatar 6.6. 12:20 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
No a hlavne je pro me super jednoduchost kdy proste dam
$ version +
a mam hotovo :-D
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
6.6. 13:57 horada | skóre: 3
Rozbalit Rozbalit vše Re: version

Gitlab link => 404 The page could not be found or you don't have permission to view it.

Bystroushaak avatar 6.6. 13:59 Bystroushaak | skóre: 33 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: version
On gitlab se docela hroutí pod náporem. Dával jsem před chvíli importovat nějaké moje repa z Githubu, jen abych si to zkusil a několikrát to hodilo 500.
#mindspace @ freenode
Salamek avatar 6.6. 14:09 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Sorac, ten projekt se naimportoval jako private, a ja si toho nevsiml... ted uz by to melo byt ok
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
6.6. 14:28 ewew | skóre: 37 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: version

Pekne. ale nie je to komplikované ? Nepoznám tento jazyk ale nešlo by to urobiť tak, že jednotlive súbory budú mať link na súbor s verziou ? 

Salamek avatar 6.6. 16:17 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: version
Ten version file neni jen soubor obsahujici string 1.2.3 ale soubor s libovolnym obsahem, tzn kod, dokumentace, hlaviky souboru etc. proto se to parsuje pomoci regexp.. napr:
__version__ = '1.2.3'
nebo
foo=bar
pkgver=1.2.3
bar=foo
nebo
/**
 * Text
 * This is app version 1.2.3
 * Text...
 */
No a vsude tady treba potrebujes zmenit version na 1.2.4...
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
FrostyX avatar 9.6. 17:19 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: version
Hezký tool. Alternativně se dá použít tito nebo rpkg.
FrostyX.cz | 1984 was not supposed to be an instruction manual.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.