Blame programming-guidelines/cs/versioning.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="versioning" xml:lang="cs">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
    <link type="guide" xref="index#maintainer-guidelines"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Philip Withnall</name>
Packit 1470ea
      <email its:translate="no">philip.withnall@collabora.co.uk</email>
Packit 1470ea
      <years>2015</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
Packit 1470ea
Packit 1470ea
    <desc>Číslování verzí a vydávání knihoven a aplikací</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Číslování verzí</title>
Packit 1470ea
Packit 1470ea
  <synopsis>
Packit 1470ea
    <title>Shrnutí</title>
Packit 1470ea
Packit 1470ea
    

Číslování verzí se liší pro knihovny a pro aplikace: knihovny potřebují mít mimo čísla verze pro balíček určené i číslo verze pro libtool. Aplikace mají jen číslo verze pro balíček.

Packit 1470ea
Packit 1470ea
    <list>
Packit 1470ea
      <item>

Knihovny a aplikace mají čísla verzí balíčků ve formě hlavní.vedlejší.setinkové. (<link xref="#package-versioning"/>)

</item>
Packit 1470ea
      <item>

Knihovny navíc mají číslo verze pro libtool ve formě aktuální:revize:věk. (<link xref="#libtool-versioning"/>)

</item>
Packit 1470ea
      <item>

Číslo verze by mělo být aktualizováno u každého vydání (použijte zvýšení čísla při vydání a po vydání). (<link xref="#release-process"/>)

</item>
Packit 1470ea
      <item>

Číslo verze balíčku by mělo být zvýšeno při změně nebo přidání funkcionality. (<link xref="#package-versioning"/>)

</item>
Packit 1470ea
      <item>

Číslo verze libtool by mělo být aktualizováno při změnách nebo přidání API. (<link xref="#libtool-versioning"/>)

</item>
Packit 1470ea
      <item>

Lichá/sudá vedlejší čísla verze balíčku mohou být použita k rozlišení stabilních/nestabilních vydání. (<link xref="#stable-unstable-versions"/>)

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </synopsis>
Packit 1470ea
Packit 1470ea
  <section id="package-versioning">
Packit 1470ea
    <title>Číslování verzí balíčků</title>
Packit 1470ea
Packit 1470ea
    

Knihovny i aplikace mají čísla verzí balíčků ve formě hlavní.vedlejší.setinkové (major.minor.micro).

Packit 1470ea
Packit 1470ea
    

Číslo verze balíčku je to, které se předává do AC_INIT() a bývá známé jako číslo verze projektu. Například balíček ve formátu DEB (používaný distribucí Debian) pro knihovnu bude používat číslo verze balíčku s knihovnou (ačkoliv může v názvu balíčku obsahovat i hlavní číslo verze, aby se umožnila <link xref="parallel-installability">souběžná instalace</link>). Verze balíčku jsou aktualizovány podle následujících pravidel:

Packit 1470ea
    <steps>
Packit 1470ea
      <item>

Při porušení <link xref="api-stability">kompatibility API</link> v knihovně nebo při provedení rozsáhlých změn v aplikaci, které ovlivní vše (třeba změna návrhu uživatelského rozhraní), zvyšte hlavní číslo verze a vedlejší a setinkové nastavte na 0.

</item>
Packit 1470ea
      <item>

V ostatních případech, když měníte nebo přidáváte funkce nebo přidáváte nějaké API, zvyšte vedlejší číslo verze a setinkové nastavte na 0.

</item>
Packit 1470ea
      <item>

V ostatních případech (když vydání obsahuje jen opravy chyb a aktualizace překladů), zvyšte setinkové číslo verze.

</item>
Packit 1470ea
    </steps>
Packit 1470ea
Packit 1470ea
    

Nezapomeňte, že vedlejší číslo verze by mělo být aktualizováno, když je přidáno nějaké API.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="libtool-versioning">
Packit 1470ea
    <title>Čísla verzí pro Libtool</title>
Packit 1470ea
Packit 1470ea
    

Knihovny mají dvě čísla verze: verzi libtool, která sleduje zpětnou kompatibilitu ABI (viz <link xref="api-stability"/>) a číslo verze balíčku, které sleduje změny vlastností. Normálně jsou zvyšovány současně, ale měly by se udržovat oddělené, protože zpětná kompatibilita ABI nemusí nutně souviset se změnami vlastností nebo opravami chyb. Navíc tato dvě číslování mají rozdílnou sémantiku a není tak možné vygenerovat jedno na základě druhého.

Packit 1470ea
Packit 1470ea
    

Dobrý přehled o číslování verzí libtool a o rozdílech oproti číslování verzí balíčků najdete v článku <link href="https://autotools.io/libtool/version.html">Autotools Mythbuster</link>, a případně také v <link href="http://www.gnu.org/s/libtool/manual/html_node/Updating-version-info.html">příručce k libtool</link>.

Packit 1470ea
Packit 1470ea
    

Při aktualizaci verze libtool postupujte podle algoritmu uvedeném v komentářích níže. Jedná se o typický úryvek z <file>configure.ac</file> pro nastavení verze libtool:

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
# Před vydáním by se měl upravit řetězec LT_VERSION, který je ve formě a:r:v
Packit 1470ea
# (aktuální:revize:věk). Postupujte podle následujících bodů:
Packit 1470ea
#   1. Když od poslední aktualizace došlo ke změně zdrojového kódu knihovny
Packit 1470ea
#      jako celku, zvyšte revizi („a:r:v“ se změní na „a:r+1:v“).
Packit 1470ea
#   2. Když bylo od poslední aktualizace přidáno, odebráno nebo změněno
Packit 1470ea
#      rozhraní, zvyšte aktuální a revizi nastavte na 0.
Packit 1470ea
#   3. Když bylo od posledního veřejného vydání přidáno rozhraní, zvyšte věk.
Packit 1470ea
#   4. Když bylo od posledního veřejného vydání odebráno nebo změněno 
Packit 1470ea
#      rozhraní, nastavte věk na 0.
Packit 1470ea
AC_SUBST([LT_VERSION],[0:0:0])
Packit 1470ea
Packit 1470ea
    

Následující úryvek můžete použít v souboru <file>Makefile.am</file> k předání informace o verzi do libtool:

Packit 1470ea
    my_library_la_LDFLAGS = -version-info $(LT_VERSION)
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="stable-unstable-versions">
Packit 1470ea
    <title>Stabilní a nestabilní verze balíčku</title>
Packit 1470ea
Packit 1470ea
    

Většina modulů GNOME dodržuje zvyklost stabilních a nestabilních vydání. Vedlejší číslo verze je sudé pro stabilní vydání a liché pro nestabilní vydání. Například verze 3.20.* jsou stabilní, ale 3.19.* nestabilní. Na verze 3.19.* můžete pohlížet jako na alfa a beta vydání pro verzi 3.20.

Packit 1470ea
Packit 1470ea
    

Nové setinkové stabilní verze (např. 3.20.0 → 3.20.1) nepřidávají nové funkce, ale jen aktualizace překladů a opravy chyb. Naproti tomu, nestabilní setinkové verze (např. 3.19.1 → 3.19.2) mohou přidat API nebo změnit nebo odstranit API, které bylo přidáno v předchozí setinkové verzi stejné vedlejší série.

Packit 1470ea
Packit 1470ea
    

Číslo verze pro libtool by mělo být aktualizováno jen pro stabilní verzi balíčku.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="release-process">
Packit 1470ea
    <title>Proces vydání</title>
Packit 1470ea
Packit 1470ea
    

Standardní proces tvorby vydání modulu zvyšuje v průběhu vydání číslo verze pro libtool (pokud je modul knihovnou) a bezprostředně po té zvýší číslo verze balíčku (tzv. post-release zvýšení).

Packit 1470ea
Packit 1470ea
    

Aktualizace verze libtool v době vydání znamená, že je zvýšena jen jednou naráz pro všechny změny ABI ve vydání. Použití zvýšení po vydání pro číslo verze balíčku znamená, že číslo verze balíčku nebude zastaralé (pořád stejné jako u předchozího vydání) během vývojového cyklu.

Packit 1470ea
Packit 1470ea
    

Proces vydání (vycházející z <link href="https://wiki.gnome.org/MaintainersCorner/Releasing">procesu vydávání GNOME</link>):

Packit 1470ea
    <steps>
Packit 1470ea
      <item>

Zkontrolujte, že je kód aktuální: <cmd>git pull</cmd>

</item>
Packit 1470ea
Packit 1470ea
      <item>

Zkontrolujte, že nemáte provedené žádné místní změny: <cmd>git status</cmd>

</item>
Packit 1470ea
      <item>

V případě, že se jedná o vydání pro stabilní verzi balíčku, zvyšte číslo verze pro libtool v <file>configure.ac</file> (pokud existuje)

</item>
Packit 1470ea
      <item>

Přidejte záznam do souboru <file>NEWS</file>

</item>
Packit 1470ea
      <item>
Packit 1470ea
        

Spusťe <cmd>./autogen.sh && make && make install && make distcheck</cmd> a ověřte, že vše proběhlo v pořádku

Packit 1470ea
        <list>
Packit 1470ea
          <item>

Opravte případné problémy, které nastaly, zařaďte je a vraťte se ke kroku 3

</item>
Packit 1470ea
        </list>
Packit 1470ea
      </item>
Packit 1470ea
      <item>

Pokud <cmd>make distcheck</cmd> skončí s „[archive] is ready for distribution“, spusťte <cmd>git commit -a -m "Release version x.y.z"</cmd> (kde „x.y.z“ je číslo verze balíčku)

</item>
Packit 1470ea
      <item>
Packit 1470ea
        

Spusťte <cmd>git push</cmd>

Packit 1470ea
        <list>
Packit 1470ea
          <item>

Pokud to selže, protože během správy byly nahrány další zařazení, spusťte <cmd>git pull</cmd>, aby se sloučily vaše zařazení s větví následovanou po druhém <cmd>git push</cmd>. Jedná se o výjimku oproti pokynům GNOME, které říkají, že máte mít v Git lineární historii (<link xref="version-control#use-of-git"/>). Pokud dáváte lineární historii přednost, musíte se vrátit ke kroku 1.

</item>
Packit 1470ea
        </list>
Packit 1470ea
      </item>
Packit 1470ea
      <item>

Přidělte vydání štítek: <cmd>git tag -s x.y.z</cmd> (kde „x.y.z“ je číslo verze balíčku)

</item>
Packit 1470ea
      <item>

Spusťte <cmd>git push origin x.y.z</cmd> (kde „x.y.z“ je číslo verze balíčku)

</item>
Packit 1470ea
    </steps>
Packit 1470ea
Packit 1470ea
    

Vydání je nyní hotové a můžete provést (post-release) zvýšení čísla verze pro následující vydání:

Packit 1470ea
    <steps>
Packit 1470ea
      <item>

Zvyšte číslo verze balíčku v <file>configure.ac</file>

</item>
Packit 1470ea
      <item>

Spusťte <cmd>git commit -a -m "Post-release version increment"</cmd>

</item>
Packit 1470ea
      <item>

Spusťte <cmd>git push</cmd>

</item>
Packit 1470ea
    </steps>
Packit 1470ea
Packit 1470ea
    

Balíček vygenerovaný pomocí <cmd>make distcheck</cmd> může být nyní nahrán na download.gnome.org nebo šířen nějakým jiným způsobem.

Packit 1470ea
  </section>
Packit 1470ea
</page>