Table des matières

Utilización del depósito Subversión como desarrollador / contribuidor identificado

Esta página quiere ser un resumen rápido de las manipulaciones relativas al depósito Subversión que un contribuidor al proyecto QElectroTech puede verse obligado a efectuar. La biblia sobre Subversión permanece no obstante el SVN Book

Hacer un check out

Check out identificación

Un check out permite crear una copia local (se habla de “working directory”) de un expediente presente en el SVN (típicamente para QET: el tronco o la rama 0.3). Utilice los comandos siguientes sustituyendo identifiant por su clave de acceso . La conexión pasa por SSH, generalmente la contraseña se pide 3 veces a cada operación (svn checkout, commit, up, …). Ver el FAQ TuxFamily para automatizar la identificación mediante una clave SSL.

# Check Out du trunk
svn co "svn+ssh://identifiant@svn.tuxfamily.org/svnroot/qet/qet/trunk" qelectrotech_trunk
# Check Out de la branche 0.3
svn co "svn+ssh://identifiant@svn.tuxfamily.org/svnroot/qet/qet/branches/0.3" qelectrotech_0.3

Je me suis gouré, hicieron un check out anonimo

Vuelva a su expediente de trabajo Subversión y utilice los siguientes comandos:

svn_user=votre_identifiant_ici
find . -type f -name entries -exec sed -i "s,svn://svn.tuxfamily.org,svn+ssh://${svn_user}@svn.tuxfamily.org,g" {} \;
svn up

Poner al día su directorio de trabajo

svn up

Los ficheros puestos al día se indican entonces precedidos por una letra que representa el estado de la actualización:

Administrar sus modificaciones

Es posible listar los ficheros modificados con el comando:

svn status

La visualización es la misma de un svn up. Los ficheros pueden añadirse al versionnement mediante svn add luego dirigidos mediante svn mv, svn cp y svn rm. Las modificaciones pueden imaginarse mediante svn diff; ejemplo:

svn diff sources/qetproject.h
Index: sources/qetproject.h
===================================================================
--- sources/qetproject.h        (révision 449)
+++ sources/qetproject.h        (copie de travail)
@@ -21,7 +21,9 @@
 #include <QtXml>
 class Diagram;
 class ElementsCollection;
+class ElementsCategory;
 class XmlElementsCollection;
+class MoveElementsHandler;
 /**
        Esta clase representa un proyecto QET. Típicamente registra en un fichero,  il s'agit d'un document XML integrant des schemas ainsi qu'une

Es también posible imaginar las diferencias sobre los ficheros texto de manera de fácil utilización con Kompare y este pequeño script.

Última alternativa:

svn diff | colordiff | less -R

Otros comandos útiles:

Enviar sus modificaciones

Una vez las modificaciones terminadas y dignas de figurar en el depósito Subversión, es necesario el cometido. Antes del cometido, se recomienda hacer un último svn up , para así garantizar que modificaciones no se han hecho por otro contribuidor mientras tanto. El cometido debe acompañarse de un mensaje de cometido; ejemplo:

svn ci -m "Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema."

Se recomienda no obstante de efectuar un simple svn ci, quién utilizará el editor mencionado en la variable de medio ambiente $EDITOR para publicar un fichero que incluye:

Eso permite comprobar una última vez el contenido de cometido. Si el fichero no se modifica (:q! dans vim), svn dará la posibilidad de abandonar el cometido. Si no, el cometido se efectúa después del registro del fichero y cierre del editor (:x dans vim).

Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema.

--Cette ligne, et les suivantes ci-dessous, seront ignorées--
M    sources/diagramview.cpp
M    sources/qetproject.h
M    sources/qetproject.cpp

Nota: por distintas razones, gracias por evitar los caracteres acentuados o especiales en los mensajes de cometido.

Modificar un mensaje de cometido

Modificar un mensaje de cometido implica ser el administrador del depósito Subversión ⇒ pedir a Xavier.

#!/bin/bash
 
REV="$1"
REPOS_URL="file:///home/xav/qet"
REPOS_PATH="qet"
TMP_FILE="commit_message"
 
# recupere le message actuel
svn log -r "${REV}" "${REPOS_URL}" | tail -n +3 | grep -v -- '----' > "${TMP_FILE}"
vim "${TMP_FILE}"
 
echo -n "Modifier (y/n) ? "
read answer
[ "${answer}" == "n" ] && exit 0
svnadmin setlog "${REPOS_PATH}" -r "${REV}" "${TMP_FILE}"
 
echo "Message de la revision ${REV} apres modification :"
svn log -r "${REV}" "${REPOS_URL}"