Blame programming-guidelines/es/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="es">
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>Versionado y publicación de bibliotecas y aplicaciones</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Daniel Mustieles</mal:name>
Packit 1470ea
      <mal:email>daniel.mustieles@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2016</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Javier Mazorra</mal:name>
Packit 1470ea
      <mal:email>mazi.debian@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2016</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Versionado</title>
Packit 1470ea
Packit 1470ea
  <synopsis>
Packit 1470ea
    <title>Resumen</title>
Packit 1470ea
Packit 1470ea
    

Packit 1470ea
      Module versioning differs for libraries and applications: libraries need a
Packit 1470ea
      libtool version specified in addition to their package version.
Packit 1470ea
      Applications just have a package version.
Packit 1470ea
    

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

Packit 1470ea
        Libraries and applications have a package version of the form
Packit 1470ea
        major.minor.micro. (<link xref="#package-versioning"/>)
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Libraries additionally have a libtool version of the form
Packit 1470ea
        current:revision:age. (<link xref="#libtool-versioning"/>)
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Version numbers should be updated for each release (using release and
Packit 1470ea
        post-release increments). (<link xref="#release-process"/>)
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Package versions should be incremented for feature changes or additions.
Packit 1470ea
        (<link xref="#package-versioning"/>)
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Libtool versions should be updated for API changes or additions.
Packit 1470ea
        (<link xref="#libtool-versioning"/>)
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Even/odd minor package versions can be used respectively for
Packit 1470ea
        stable/unstable releases. (<link xref="#stable-unstable-versions"/>)
Packit 1470ea
      

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </synopsis>
Packit 1470ea
Packit 1470ea
  <section id="package-versioning">
Packit 1470ea
    <title>Versionado de paquetes</title>
Packit 1470ea
Packit 1470ea
    

Packit 1470ea
      Both libraries and applications have a package version of the form
Packit 1470ea
      major.minor.micro.
Packit 1470ea
    

Packit 1470ea
Packit 1470ea
    

Packit 1470ea
      The package version number is that passed to
Packit 1470ea
      AC_INIT(), and the one which is typically known as the
Packit 1470ea
      project’s version number. For example, the Debian package for a library
Packit 1470ea
      will use the library’s package version (though may also include the major
Packit 1470ea
      version number in the package name to allow for
Packit 1470ea
      <link xref="parallel-installability">parallel installability</link>).
Packit 1470ea
      Package versions are updated by the following rules:
Packit 1470ea
    

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

Packit 1470ea
        If breaking <link xref="api-stability">API compatibility</link> in a
Packit 1470ea
        library, or making a large change to an application which affects
Packit 1470ea
        everything (such as a UI redesign), increment major and set minor and
Packit 1470ea
        micro to 0.
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

Packit 1470ea
        Otherwise, if changing or adding a feature, or adding any API,
Packit 1470ea
        increment minor and set micro to 0.
Packit 1470ea
      

</item>
Packit 1470ea
      <item>

En caso contrario (si se hace una publicación que contenga sólo correcciones de errores y actualizaciones de traducciones), se incrementa la microversión.

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

Tenga en cuenta que el número de versión menor debería actualizarse si se añade alguna API.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="libtool-versioning">
Packit 1470ea
    <title>Versionado de Libtool</title>
Packit 1470ea
Packit 1470ea
    

Las bibliotecas tienen dos números de versión: una versión libtool que rastrea la compatibilidad ABI posterior (<link href="api-stability"/>). y una versión de paquete que rastrea los cambios de las características. Estos normalmente se incrementan sincronizadamente, pero deberían mantenerse separados porque la compatibilidad ABI posterior no está necesariamente relacionada con los cambios de las características o las correcciones de errores. Además, los dos números de versión tienen distintos significados, y no puede generarse automáticamente el uno desde el otro.

Packit 1470ea
Packit 1470ea
    

Un buen resumen del versionado libtool, y las diferencias con el versionado del paquete, se da en el <link href="https://autotools.io/libtool/version.html">cazador de mitos de Autotools</link>; otro está en el <link href="http://www.gnu.org/s/libtool/manual/html_node/Updating-version-info.html">manual de libtool</link>.

Packit 1470ea
Packit 1470ea
    

Para actualizar la versión libtool, siga el algoritmo dado en los comentarios debajo. Este es un fragmento de código <file>configure.ac</file> típico para configurar el versionado libtool:

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
# Before making a release, the LT_VERSION string should be modified. The
Packit 1470ea
# string is of the form c:r:a. Follow these instructions sequentially:
Packit 1470ea
#   1. If the library source code has changed at all since the last update, then
Packit 1470ea
#      increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
Packit 1470ea
#   2. If any interfaces have been added, removed, or changed since the last
Packit 1470ea
#      update, increment current, and set revision to 0.
Packit 1470ea
#   3. If any interfaces have been added since the last public release, then
Packit 1470ea
#      increment age.
Packit 1470ea
#   4. If any interfaces have been removed or changed since the last public
Packit 1470ea
#      release, then set age to 0.
Packit 1470ea
AC_SUBST([LT_VERSION],[0:0:0])
Packit 1470ea
Packit 1470ea
    

El siguiente fragmento de código se puede usar en un <file>Makefile.am</file> para pasar esa información de versión a 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>Versiones de paquetes estables e inestables</title>
Packit 1470ea
Packit 1470ea
    

La mayoría de los módulos de GNOME siguen una convención para publicaciones estables e inestables. La versión menor es par para liberaciones estables y es impar para las inestables. Por ejemplo, las versiones 3.20.* son estables, pero las versiones 3.19.* son inestables. Las versiones 3.19.* se pueden ver como entregas alfa y beta de la versión 3.20.

Packit 1470ea
Packit 1470ea
    

Una nueva microversión estable (por ejemplo 3.20.0 → 3.20.1) no añade nuevas características, sólo actualizaciones de traducciones y corrección de errores. Por otro lado, las micropublicaciones inestables (por ejemplo 3.19.1 → 3.19.2) pueden añadir API, o cambiar o eliminar la API que se añadió en la micropublicación anterior en esa serie menor.

Packit 1470ea
Packit 1470ea
    

La versión libtool debería actualizarse sólo para versiones de paquete estables.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="release-process">
Packit 1470ea
    <title>Proceso de publicación</title>
Packit 1470ea
Packit 1470ea
    

El proceso estándar para hacer una publicación de un módulo incrementa la versión libtool (si el módulo es una biblioteca) en el momento de la entrega, por lo que incrementa el número de versión del paquete inmediatamente después (a esto se le llama un incremento posterior a la publicación).

Packit 1470ea
Packit 1470ea
    

La actualización de las versiones libtool durante el tiempo de publicación significa que sólo se incrementan una vez para todos los cambios ABI de una entrega. Usar el incremento posterior a la publicación para las versiones del paquete significa que el número de versión del paquete no está desactualizado (aún igual al de la entrega anterior) durante el ciclo de desarrollo.

Packit 1470ea
Packit 1470ea
    

El proceso de la publicación (basado en el <link href="https://wiki.gnome.org/MaintainersCorner/Releasing">proceso de publicación de GNOME</link>):

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

Asegúrese de que el código está actualizado: <cmd>git pull</cmd>

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

Asegúrese de que no tiene cambios locales: <cmd>git status</cmd>

</item>
Packit 1470ea
      <item>

Si la publicación es para una versión estable del paquete, incremente el número de versión libtool en <file>configure.ac</file> (si éste existe)

</item>
Packit 1470ea
      <item>

Añada una entrada al archivo <file>NEWS</file>

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

Ejecute <cmd>./autogen.sh && make && make install && make distcheck</cmd> y asegúrese de que termina correctamente

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

Corrija los errores que surjan, confirme esos cambios, y reincide en el paso 3

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

Si <cmd>make distcheck</cmd> finaliza con «El [archivo] está listo para su distribución», ejecute <cmd>git commit -a -m «Versión de la publicación x.y.z»</cmd>

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

Ejecute <cmd>git push</cmd>

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

Si eso no funciona debido a que otros commits se han subido mientras tanto, ejecute <cmd>git pull</cmd> para mezclar su commit en la rama seguida de un segundo <cmd>git push</cmd>. Esta es una excepción a la directriz de GNOME de tener un histórico de Git lineal (<link xref="version-control#use-of-git"/>). Si usted prefiere tener un histórico lineal, es necesario reiniciar en el paso 1.

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

Etiquete la publicación: <cmd>git tag -s x.y.z</cmd> (donde ‘x.y.z’ es el número de versión del paquete)

</item>
Packit 1470ea
      <item>

Ejecute <cmd>git push origin x.y.z</cmd> (donde ‘x.y.z’ es el número de versión del paquete)

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

Ahora la publicación está completa, y se puede hacer el incremento de versión posterior a la misma:

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

Incremente el número de la versión del paquete en <file>configure.ac</file>

</item>
Packit 1470ea
      <item>

Ejecute <cmd>git commit -a -m "Post-release version increment"</cmd>

</item>
Packit 1470ea
      <item>

Ejecute <cmd>git push</cmd>

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

El archivo de paquete generado por <cmd>make distcheck</cmd> puede subirse ahora a download.gnome.org o distribuirse de otras maneras.

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