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
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
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
svn up
Los ficheros puestos al día se indican entonces precedidos por una letra que representa el estado de la actualización:
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:
C
) como soluciónase. 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 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}"