Subversion

De Wiki de la Comunidad Mandriva

Plantilla:Title

Esta página contiene un resumen breve de lo necesario para usar subversion.

Contenido

Subversion, rpm y herramientas afines

Subversion se divide en varios rpms. El componente o programa cliente está en subversion.rpm. Pedirá elegir una biblioteca, para acceder a un repositorio remoto.

Dado que durante la mayoría del tiempo usará el protocotolo webdav, por favor elija subversion-client-dav.

Hay algunas herramienta gráficas (como Rapidsvn y svm), para replicar el repositorio. Puede que le interese también svk, que permite el uso de subversion de manera personalizada (Distributed Version Control with svk y SVK Wiki)

Comandos de Subversion

Subversion se diseñó para parecerse a cvs. De esta manera, el comando para comprobar una versión es

svn checkout http://svn.server.org/path/to/file/

Subversion no maneja etiquetas y ramas como cvs. Si quiere conservar una versión, use simplemente svn cp. Esta es la razón por la que la mayoría de las veces, verá 3 directorios principales:

  • trunk/ contiene las copias de trabajo
  • branches/ contiene ramas experimentales, que serán fusionadas en la principal una vez que sean válidas
  • tags/ contiene la versión etiquetada al estilo de cvs. Si quiere la versión sea etiquetada como 0.1, debería estar aquí.

No es obligatorio usar este esquema. Sin embargo, es el recomendado por la documentación oficial, por lo cual es ampliamente usado.

cvs guarda toda la información en un subdirectorio CVS. subversion usa el subdirectorio .svn. No debe incluirlos, y RpmLint le dará un mensaje de advertencia en su caso

Las operaciones de Subversion son atómicas. Esto significa que el repositorio entero es versionado. Es decir, hay un único número de versión para todos los ficheros, llamado revisión. Se puede ver cuando se lista el repositorio. Puede usar el comando -r para cambiar a una versión más antigua.

svn checkout -r 345 http://svn.server.org/path/to/file/trunk/

Si observa un subdirectorio trunk, verá que en él están todos los ficheros


Se puede ver más documentación en Control de versiones con Subversion y en sitio de subversion.

Subversion y RpmBuildUpdate

RpmBuildUpdate se puede usar para bajarse automáticamente una versión svn. Hay que usar ciertas reglas, explicadas en RpmBuildUpdate.

Subversion para traductores

Una vez que tenga un nombre de usuario y contraseña para acceder svn, ha de seguir los siguientes pasos:

Primero, defina el nombre de usuario (username) para evitar tener que teclearlo cada vez:

export SVN_SSH="ssh -l username"

Puede evitar escribirlo cada vez añadiendo dicha línea al fichero ~/.bashrc

Segundo, compruebe los módulos relevantes. Ha de hacer dicha comprobación sólo una vez para cada módulo (después, puede actualiazar el módulo en su disco)

Actualmente, la mayoría de los módulos han sido migrados de cvs a svn. Esto se puede hacer así:

mkdir ~/svn-mandriva
cd ~/svn-mandriva
export URL=svn+ssh://svn.mandriva.com/svn/soft/
export DRAKX_URL=$URL/drakx/trunk/perl-install/
svn co $DRAKX_URL/install/share/po DrakX
svn co $DRAKX_URL/share/po libDrakX
svn co $DRAKX_URL/standalone/po libDrakX-standalone
svn co $URL/bootsplash/trunk/po bootsplash
svn co $URL/control-center/trunk/po control-center
svn co $URL/doc_isos/po doc_isos
svn co $URL/drak3d/trunk/po drak3d
svn co $URL/drakbackup/trunk/po drakbackup
svn co $URL/drakbt/trunk/po drakbt
svn co $URL/drakfax/trunk/po drakfax
svn co $URL/drakguard/trunk/po drakguard
svn co $URL/draklive-install/trunk/po draklive-install
svn co $URL/draklive-resize/trunk/po draklive-resize
svn co $URL/drakmenustyle/trunk/po drakmenustyle
svn co $URL/drakmsync/trunk/po drakmsync
svn co $URL/drakoo/trunk/po drakoo
svn co $URL/draksnapshot/trunk/po draksnapshot
svn co $URL/drakstats/trunk/po drakstats
svn co $URL/draktermserv/trunk/po draktermserv
svn co $URL/drakvirt/trunk/po drakvirt
svn co $URL/drakwizard/trunk/po drakwizard
svn co $URL/drakx-kbd-mouse-x11/trunk/po drakx-kbd-mouse-x11
svn co $URL/drakx-net/trunk/po network-tools
svn co $URL/ftw/trunk/po drakfirstboot
svn co $URL/ftw-web/trunk/po ftw-web
svn co $URL/GtkMdkWidgets/trunk/po gtkmdkwidgets
svn co $URL/hcl/trunk/po hcl
svn co $URL/indexhtml/trunk/about/po/ indexhtml
svn co $URL/initscripts/trunk/mandriva/po initscripts
svn co $URL/kde4-splash-mdv/trunk/po/ kde4-splash-mdv
svn co $URL/mandriva-galaxy-data/trunk/po mandriva-galaxy-data
svn co $URL/mandriva-galaxy-kde4/trunk/po mandriva-galaxy-kde4
svn co $URL/mandriva-kde-translation/trunk/po mandriva-kde-translation
svn co $URL/mdkhtmlbrowser/trunk/po mdkhtmlbrowser
svn co $URL/mdkonline/trunk/po mdkonline
svn co $URL/menu-messages/trunk/contrib menu-contrib
svn co $URL/menu-messages/trunk/main menu-main
svn co $URL/menu-messages/trunk/non-free menu-non-free
svn co $URL/msec/trunk/po msec
svn co $URL/nepomuk/ nepomuk
svn co $URL/park-rpmdrake/trunk/po park-rpmdrake
svn co $URL/printerdrake/trunk/po printerdrake
svn co $URL/rfbdrake/trunk/po rfbdrake
svn co $URL/rpmdrake/trunk/po rpmdrake
svn co $URL/rpm-summary/trunk/rpm-summary-contrib rpm-summary-contrib
svn co $URL/rpm-summary/trunk/rpm-summary-devel rpm-summary-devel
svn co $URL/rpm-summary/trunk/rpm-summary-main rpm-summary-main
svn co $URL/system-config-printer/po system-config-printer
svn co $URL/rpm/urpmi/trunk/po urpmi
svn co $URL/theme/mandriva-gfxboot-theme/trunk/po mandriva-gfxboot-theme
svn co $URL/transfugdrake/trunk/po transfugdrake
svn co $URL/userdrake2/trunk/po userdrake2

Los comandos anteriores también crearán un directorio en su home llamado svn-mandriva, donde los módulos chequeados existirán. Puede usar otro directorio si así lo quiere.

Después de cada comando svn co, tendrá que introducir su contraseña svn, quizás varias veces.

Para trabajar en un módulo específico, ha de editar el fichero de su equipo de traducción.

El espacio estimado en disco es de unos 550MB

Comandos de subversion comunes para traductores

Los siguientes comandos son los que comúnmente va a utilizar en el directorio donde esté el fichero .po:

  • Para actualizar un directorio de la versión más reciente de Mandriva a su copia local: svn update
  • Para comprobar qué cambios se van a hacer (esto hay que hacerse, por favor, evite cambiar ficheros que no pertenezcan a su equipo): svn status
  • Se recomienda ejecutar "svn diff" antes de llevar a cabo algún cambio, por si acaso hay algún error en los ficheros:

svn diff

  • Para llevar a cabo cambios (asegúrese de que el mensaje tiene su propio lenguaje en el listado):

svn commit --message "update translation for xxxx language"

  • Si un fichero ".po" todavía no existe para su lenguaje:

. . . a. Copie los ".po" de su lenguaje a su directorio svn local
. . . b. Añádalo a su svn local usando svn add xx.po (donde "xx" son las dos letras de su lenguaje)
. . . c. Realice los cambios necesarios, como anteriormente se ha dicho.

  • Si quiere cambiar su contraseña de subversion, haga una sesión ssh a la máquina kenobi:

ssh kenobi.mandriva.com
yppasswd

  • Para obtener información sobre su copia local svn: svn info

Más comandos de subversión para traductores

  • Resumen rápido para los que no quieren leer:

Por favor
- ejecute svn diff

...antes de realizar cambios, para comprobar los cambios que va a realizar.

- si obtiene mensajes del tipo

-
#~ msgid "Xfce Home folder"
#~ msgstr "Xfce Κατάλογος Χρήστη"
-
#~ msgid "Xfce Network Servers"
#~ msgstr "Xfce Εξυπηρετητές Δικτύου"

- use

make merge POFILES=xx.po

donde...
xx las dos letras que identifican su idioma

...por si hace falta revertir algo.

  • El problema:

Algunos traductores (bueno, algunos del país entre Francia y Polonia) siguen reajustando (rewrapping) los ficheros .po con la configuración de su propia herramienta en vez del wrapping estándar de gettext (instead of the common gettext standard wrapping).

  • Lo que se entiende por rewrapping:

- cambiar el wrapping de la cadena original en inglés (es decir, cambiar el msgid), lo cual es obviamente malo, porque los traductores sólo han de cambiar la cadena _traducida_
- cambiar el wrapping de traducciones que no han cambiado

  • ¿Por qué esto es malo?

- Implica que las comparaciones de los cambios a realizar son más difíciles de leer porque hay muchos cambios que no son tales (menor relación señal a ruido = SNR)
- Implica que el histórico es mucho menos útil (SNR menor); es decir, es más complicado averiguar cuándo y por qué se introdujo un error.
- Implica desperdicio de espacio de disco SVN

  • Soluciones

Se puede entender que haya gente que piense que es bueno que cada cual escriba en el formato que prefiera, y que luego sean otros los que arreglen las mezclas, pero no creo que haya nadie que realmente quiera esto. Así, hay dos puntos:

- o bien las configuraciones por defecto de ciertas herramientas están mal desde el punto de vista del wrapping (lo cual es bastante probable porque me he quejado bastante de eso a lo largo de los años)

- la gente ha de ejecutar "svn diff" antes de realizar cambios

"svn diff" es sencillo. Al contrario que CVS, SVN no necesita realizar ninguna acción por internet para mostrar lo que cambiaste, ni necesita ninguna contraseña (que de todas formas tampoco hacen falta con las claves SSH).

"svn diff" es sencillo y útil, porque puedes comprobar que no subirás ningún error.

"Vale, pero mi editor es tonto e hice algunos cambios inintencionados ¿qué hago?"
Simple: He alterado la mayoría de los foobar/po/Makefile así que puede ejecutar el siguiente comando para revertir cualquier rewrapping (por ejemplo, para francés) make merge POFILES=fr.po

El comando es "make merge POFILES=<LL>.po" donde <LL> es el código ISO 639 de su lenguaje (aka el nombre básico de tu traducción: "ru.po" => "ru", "de.po" => "de", ...)
Por cierto, esto hará que la unión sea sencilla y fácil. Es decir, cuando Ud. suba sus cambios, SVN se quejará de que no está actualizado y que Ud. se arriesga a generar conflictos, así que puede hacer una copia de seguridad de su fichero, actualizar, y entonces asegurarse de que no hay conflictos. Por ejemplo, portugués brasileño:

     cp pt_BR.po pt_BR.po.backup
     svn up
     # si hay un conflicto, ejecuta "svn revert pt_BR.po; svn resolved pt_BR.po"
     cp pt_BR.po.backup pt_BR.po
     make merge POFILES=pt_BR.po
     

¡¡Tachán!!

Por favor, ejecute "svn diff" antes de subir cambios para comprobar lo que va a cambiar. Use "make merge POFILES=<your_language>.po" si es necesario para revertir cualquier wrapping indeseado.
Más información en
manually_correcting_rewrapped_.po_files

Accesos anónimos para aquellos sin cuenta SVN

Si no tiene una cuenta SVN, reemplace "export URL=svn+ssh://svn.mandriva.com/svn/soft/" por "export URL=http://svn.mandriva.com/svn/soft/" en las instrucciones anteriores. Esto le permitirá usar accesos anónimos, es decir, no podrá realizar cambios in situ, pero puede enviar sus correcciones y traducciones a [1] to i18n-patches@mandrivalinux.org) Eg:

mkdir ~/svn-mandriva
cd ~/svn-mandriva
export URL=http://svn.mandriva.com/svn/soft/
export DRAKX_URL=$URL/drakx/trunk/perl-install/
svn co $URL/theme/mandriva-gfxboot-theme/trunk/po bootloader
svn co $DRAKX_URL/install/share/po DrakX
(...)

Estadísticas no oficiales

http://mdk.jack.kiev.ua/stats/gui/trunk/team/

Referencias útiles

Referencias

<referencias/>

Herramientas personales
Otros idiomas