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 15:33 | IT novinky

    Microsoft kupuje Activision Blizzard (Warcraft, Diablo, Overwatch, Call of Duty, Candy Crush, …) za 68,7 miliard dolarů.

    Ladislav Hagara | Komentářů: 18
    dnes 13:33 | Zajímavý článek

    Fedora Magazine rozebírá restartování a offline aktualizování Fedora Linuxu. První Fedora s offline aktualizováním byla v lednu 2013 vydaná Fedora 18. Tenkrát ještě s kódovým označením Spherical Cow.

    Ladislav Hagara | Komentářů: 1
    dnes 12:55 | IT novinky

    The Qt Company dnes představila platformu Qt Digital Advertising 1.0 pro monetizaci Qt aplikací.

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

    Byla vydána nová major verze 5.0 kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Jedná se o LTS vydání. Přehled novinek v oznámení a v příspěvku na blogu. Kódové označení Lorentz bylo vybráno na počest Hendrika Lorentze.

    Ladislav Hagara | Komentářů: 0
    včera 09:00 | Nová verze

    Byla vydána nová stabilní verze 1.4.230 (první z řady 1.4.x, viz změna číslování verzí) open source program pro hlasovou komunikaci Mumble (Wikipedie, GitHub). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 08:00 | Nová verze

    Byly vydány nové verze JACK Audio Connection Kitu (Wikipedie): JACK1 0.126.0 a JACK2 1.9.20. Nástroje a příklady byly vyčleněny do nového samostatného repozitáře jack-example-tools verze 1. To usnadní balíčkování JACKu a PipeWire (pipewire-jack) v linuxových distribucích. Vydán byl také New Session Manager 1.5.3.

    Ladislav Hagara | Komentářů: 0
    včera 07:00 | Nová verze

    Byla vydána nová verze 7.5.0 správce digitálních fotografií a videí digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení. Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 2
    včera 06:00 | Nová verze

    Byla vydána verze 9.00 linuxové distribuce SystemRescue, původně SystemRescueCd. Přehled novinek v changelogu. Linux byl povýšen na verzi 5.15.14. Vylepšena byla podpora NTFS.

    Ladislav Hagara | Komentářů: 3
    15.1. 23:44 | IT novinky

    Společnost PINE64 stojící za telefony PinePhone a PinePhone Pro nebo notebooky Pinebook a Pinebook Pro publikovala na svém blogu lednový souhrn novinek (YouTube).

    Ladislav Hagara | Komentářů: 9
    15.1. 23:33 | Komunita

    Uživatelé Linuxu vlastnící audio zařízení od společnosti Universal Audio (Wikipedie) by rádi jejich podporu také v Linuxu. Podepisují petici na Change.org a snaží se Universal Audio přesvědčit v diskusním fóru.

    Ladislav Hagara | Komentářů: 9
    Jestliže jste používali distribuci CentOS Linux, jejíž konec byl oznámen před rokem, kam jste přešli?
     (32%)
     (1%)
     (6%)
     (17%)
     (1%)
     (6%)
     (36%)
    Celkem 161 hlasů
     Komentářů: 14, poslední 14.1. 14:44
    Rozcestník

    version

    6.6.2018 11:36 | Přečteno: 2030× | Výběrový blog | poslední úprava: 6.6.2018 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.2018 12:00 Josef Kufner | skóre: 70
    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.2018 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.2018 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.2018 14:16 Michal Kubeček | skóre: 72 | 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.2018 12:09 Bystroushaak | skóre: 36 | 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()
    )
    
    Salamek avatar 6.6.2018 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.2018 13:24 Bystroushaak | skóre: 36 | 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.
    Salamek avatar 6.6.2018 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.2018 18:56 Josef Kufner | skóre: 70
    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.2018 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.2018 18:13 marbu | skóre: 31 | 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.
    There is no point in being so cool in a cold world. Source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine
    Salamek avatar 6.6.2018 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.2018 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.2018 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.2018 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.2018 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.2018 13:59 Bystroushaak | skóre: 36 | 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.
    Salamek avatar 6.6.2018 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.2018 14:28 ewew | skóre: 39 | 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 ? 

    Root v linuxe : "Root povedal, linux vykona."
    Salamek avatar 6.6.2018 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.2018 17:19 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
    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.