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:

  • A : fichero añadido
  • D : fichero suprimido
  • U : fichero puesto al día sin problema
  • G : fichero modificado en su directorio de trabajo y puesto al día sin conflicto
  • C : fichero modificado en su directorio de trabajo pero cuya actualización entro en conflicto con las modificaciones locales

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:

  • svn export : incluso utilidad que CO/checkout, pero el resultado obtenido no es un directorio de trabajo Subversión (= él allí no tiene bajo-expedientes .svn) ; eso permite hacer una simple extracción de una estructura del depósito
  • svn cat : toma en parámetro una lista de ficheros (incluso directamente en el depósito ) y su contenido sobre la salida estándar.
  • svn revert : restaura el estado de un fichero (las modificaciones locales se pierden en favor del estado del fichero en el depósito Subversión )
  • svn resolved : marca un fichero en conflicto (estado C) como soluciónase.
  • svn blame : permite saber, para una lista de ficheros dadas, quién es el autor de cada línea.
  • svn merge : toma tres argumentos, hace un diff entre los dos primeros y la aplique al tercero. A utilizar para la gestión avanzada de las ramas.
  • svn info : cartel de la información sobre el directorio de trabajo corriente
  • svn help : aporte de la ayuda sobre un comando

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:

  • una zona para escribir el mensaje de cometido
  • una zona que lista los ficheros que van a ser Cometidos

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}"
Imprimir/exportar