110 | | === Nomenclatura y versionado === |
111 | | |
112 | | * Los nombres de los paquetes deben seguir el estilo CamelCase |
113 | | * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni |
114 | | en distinto repositorio, pues todos los paquetes compartirán un mismo |
115 | | almacén de cliente vengan del repositorio que vengan. |
116 | | * El nombre del archivo de una versión concreta de un paquete se obtiene |
117 | | como la concatenación del nombre del paquete seguido de un punto, el número |
118 | | _.autodoc.version.high, otro punto y el número _.autodoc.version.low |
119 | | * El nombre del NameBlock sin embargo es el mismo siempre, por lo que se invocará |
120 | | sin usar los números de versión. |
121 | | * No es posible por tanto cargar dos versiones distintas de un mismo paquete en |
122 | | la misma sesión TOL. |
123 | | * Sí es posible cargar diferentes versiones de un mismo NameBlock en una misma |
124 | | máquina en sesiones de TOL distintas, coincidentes o no en el tiempo. |
| 110 | === Control de versiones === |
| 111 | |
| 112 | El objetivo del control de versiones es que en el repositorio se puedan almacenar todas las |
| 113 | versiones binarias de cada paquete que hayan sido publicadas de forma histórica, pues sólo de |
| 114 | esta forma se puede asegurar que cada usuario pueda utilizar la versión compatible con todo |
| 115 | su sistema, y que pueda a lo largo del tiempo, y accediendo a las novedades que le interesen |
| 116 | fijando su propio ritmo de actualización, sin tener que estar siempre a la última, lo cual |
| 117 | puede ser peligroso en sistemas de mantenimiento de producción en tiempo real, ni tampoco |
| 118 | atándose a una versión congelada que no admite mejora ninguna. |
| 119 | |
| 120 | * El nombre del archivo en el que se almacena una versión concreta de un paquete se obtiene |
| 121 | como la concatenación del nombre del paquete, que debe coincidir con el miembro redundante |
| 122 | {{{_.autodoc.name}}}, seguido de un punto, el número {{{_.autodoc.version.high}}}, otro |
| 123 | punto y el número {{{_.autodoc.version.low}}}. |
| 124 | * El nombre del NameBlock sin embargo es el mismo siempre, a lo largo de toda la evolución |
| 125 | del paquete, por lo que se invocará sin usar los números de versión, salvo en la orden |
| 126 | {{{#Require}}}, si se desea cargar una versión concreta. |
| 127 | * No es posible por tanto cargar dos versiones distintas de un mismo paquete en la misma |
| 128 | sesión TOL. |
| 129 | * Sí que es posible cargar diferentes versiones de un mismo NameBlock en una misma máquina |
| 130 | en sesiones de TOL distintas, coincidentes o no en el tiempo. |
| 131 | * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni en distinto |
| 132 | repositorio, pues todos los paquetes compartirán un mismo almacén de cliente vengan |
| 133 | del repositorio que vengan. El sistema de instalación y mantenimiento de paquetes debe |
| 134 | avisar si existen conflictos entre distintos repositorios. |
| 135 | * De forma opcional el paquete puede incorporar en _.autodoc.versionControl información |
| 136 | adicional sobre el mecanismo de control de versiones utilizado en su desarrollo |
| 137 | (SVN, CVS, ...) que indique cómo recuperar el código fuente exacto con el que fue |
| 138 | construido el paquete. Esta información podría usarse de forma manual y sólo en caso de |
| 139 | tener que rehacer un paquete antiguo que se hubiera perdido o que se quisiera modificar |
| 140 | por un problema grave, y que fuera requerido en algún proceso de vital importancia. |
| 141 | Llegados a este caso habría que plantearse si el paquete modificado debe sobreescribir el |
| 142 | existente en el repositorio o se debe usar sólo de forma local donde se precise. |
| 143 | |
| 144 | ==== Nomenclatura ==== |
| 145 | |
| 146 | Aunque no hay ninguna normativa general al respecto, salvo en el caso del repositorio |
| 147 | público oficial de TOL en el que serán de obligado cumplimiento, se aconseja tomar las |
| 148 | siguientes medidas con respecto a la nomenclatura de los paquetes: |
| 149 | |
| 150 | * Los nombres de los paquetes deberían seguir el estilo CamelCase que permite una mayor |
| 151 | claridad y una mejor organización de los mismos si se reservan partículas con |
| 152 | significado preestablecido. |
| 153 | * Aumentar el primer número de forma secuencial progresiva de uno en uno, empezando |
| 154 | desde el 1, reservando el 0 para versiones de pruebas no publicadas. Sólo se debería |
| 155 | modificar si se da un cambio, o una acumulación de cambios, que suponga alteraciones |
| 156 | importantes en el modo de uso o las capacidades del paquete. |
| 157 | * Aumentar el segundo número cada vez que se modifica el paquete en cualquier cosa que |
| 158 | pueda ser incompatible con lo anterior en cualquier aspecto por pequeño que sea. Si |
| 159 | no se modificara al publicarlo sobreescribirá el anterior y será imposible que los |
| 160 | usuarios utilicen la versión eliminada si por cualquier motivo la nueva no les sirve. |
| 161 | * Cuando se aumenta el primer número se debería reiniciar el segundo. |
| 162 | * Al segundo dígito se le puede intentar dotar de cierta semántica propia del paquete |
| 163 | o de u proyecto o departamento, obligando a que tengan más o menos cifras. Por ejemplo, |
| 164 | podrían ser de la forma XxYy, con X,Y=1..9; x,y=0..9; significando Yy para cierto |
| 165 | tipo de cambios menores o más frecuentes y Xx para otros de mayor calado. |
| 166 | * Si se produce un cambio meramente ornamental, de documentación, o que resuelva un |
| 167 | problema menor que no pueda tener ningún tipo de efecto secundario se puede |
| 168 | sobreescribir el paquete publicado, aunque esto debería hacerse sólo como último |
| 169 | recurso, lo más aconsejable es acumular esos pequeños cambios para la siguiente |
| 170 | versión. |
| 171 | |
| 172 | ==== Dependencias ==== |
| 173 | |
| 174 | * Cada versión de un paquete requiere de una versión mínima de TOL dada por el |
| 175 | miembro _.autodoc.minTolVersion que asegura su funcionamiento, aunque podría ser |
| 176 | que funcionara con versiones anteriores, sin que sea fácil asegurarlo a ciencia |
| 177 | cierta. Es de vital importancia revisar este campo antes de publicar una nueva |
| 178 | versión de un paquete si ha habido cambios en la versión de TOL que pudieran |
| 179 | afectarle y que hubieran ocurrido desde la publicación de la última versión del |
| 180 | paquete. En principio sólo es preciso actualizar {{{_.autodoc.minTolVersion}}} |
| 181 | si se hace uso de alguna nueva capacidad de TOL, lo cual no siempre es trivial |
| 182 | conocer. En caso de duda es mejor actualizar de más que de menos. |
| 183 | * Cuando un paquete requiere de otros se debe incluir las correspondientes |
| 184 | sentencias #Require antes de la declaración del primer miembro. |
| 185 | * Cuando el {{{#Require}}} no menciona la versión concreta del paquete que se |
| 186 | desea cargar entonces se utilizará la versión más moderna existente localmente |
| 187 | que sea compatible con la versión del TOL con el que se esté trabajando. |
| 188 | * Si se solicita una versión concreta, entonces se debe cargar previamente cada |
| 189 | uno de los paquetes requeridos directa o indirectamente. |
| 190 | * Téngase en cuenta que no es posible cargar versiones concretas de paquetes que |
| 191 | tengan requerimientos de diferentes versiones de un mismo paquete. |
| 192 | * La definición del paquete siempre debe usar #Require sin especificar una |
| 193 | versión concreta. |
| 194 | * Obsérvese que los paquetes requeridos se deben especificar por duplicado: |
| 195 | primero en los #Require sin comillas y luego en Set _.autodoc.dependencies |
| 196 | entre comillas pues esta información la necesita el gestor de repositorios. |
| 197 | * No está permitido el requerimiento cíclico directo ni indirecto entre |
| 198 | paquetes, es decir, si A requiere a B directa o indirectamente B no puede |
| 199 | requerir a A ni directa ni indirectamente. El sistema gestor de repositorios |
| 200 | caería en un ciclo infinito y no hay forma de detectarlo luego es |
| 201 | responsabilidad de los desarrolladores del repositorio el evitarlo. |
184 | | === Dependencias === |
185 | | |
186 | | * Cuando un paquete requiere de otros se debe incluir las correspondientes |
187 | | sentencias #Require antes de la declaración del primer miembro. |
188 | | * Si no se especifican números de versión el #Require cargará la versión más |
189 | | actual compatible con la versión de TOL que se esté ejecutando. En el |
190 | | caso de la última versión de TOL, corresponderá al archivo con el nombre del |
191 | | paquete nada más. En este caso, los paquetes que requiera directa o |
192 | | indirectamente serán también las últimas versiones compatibles con TOL. |
193 | | * Si se solicita una versión concreta, entonces se debe cargar previamente cada |
194 | | uno de los paquetes requeridos directa o indirectamente. El propio |
195 | | {{{#Require}}} se encargará de buscar las versiones adecuadas en el |
196 | | repositorio local, de instalarlas si no las encuentra, y de dar un mensaje |
197 | | de error si no lo consigue para que se haga manualmente. |
198 | | * Téngase en cuenta que no es posible cargar versiones concretas de paquetes que |
199 | | tengan requerimientos de diferentes versiones de un mismo paquete. |
200 | | * La definición del paquete siempre debe usar #Require sin especificar una |
201 | | versión concreta. |
202 | | * Obsérvese que los paquetes requeridos se deben especificar por duplicado: |
203 | | primero en los #Require sin comillas y luego en Set _.autodoc.dependencies |
204 | | entre comillas pues esta información la necesita el gestor de repositorios. |
205 | | * No está permitido el requerimiento cíclico directo ni indirecto entre |
206 | | paquetes, es decir, si A requiere a B directa o indirectamente B no puede |
207 | | requerir a A ni directa ni indirectamente. El sistema gestor de repositorios |
208 | | caería en un ciclo infinito y no hay forma de detectarlo luego es |
209 | | responsabilidad de los desarrolladores del repositorio el evitarlo. |
| 261 | |