Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
es:doc:subversion [03/01/2010 04:40] alcarretes:doc:subversion [20/11/2014 14:01] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +====== 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  [[http://svnbook.red-bean.com/en/1.5/svn-book.pdf|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  [[http://faq.tuxfamily.org/User/Fr#Utilisation_de_SSH_sous_GNU.2FLinux|FAQ TuxFamily]] para automatizar la identificación mediante una clave SSL. 
 +
 +<code bash>
 +# 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
 +</code>
 +
 +===== Je me suis gouré, hicieron un check out anonimo =====
 +Vuelva a su expediente de trabajo Subversión y utilice los siguientes comandos: 
 +<code bash>
 +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
 +</code>
 +
 +===== Poner al día su directorio de trabajo  =====
 +<code>svn up</code>
 +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:  <code bash>svn status</code> 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: 
 +<code>svn diff sources/qetproject.h</code>
 +<code diff>
 +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
 +</code>
 +
 +Es también posible imaginar las diferencias sobre los ficheros texto de manera de fácil utilización con [[http://www.caffeinated.me.uk/kompare/|Kompare]] y [[doc:showdiff|este pequeño script]].
 +
 +Última alternativa: <code bash>svn diff | colordiff | less -R</code>
 +
 +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:
 +<code bash>svn ci -m "Correction d'un bug qui empechait la fermeture d'un projet ne comportant aucun schema."</code>
 +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).
 +<file>
 +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
 +</file>
 +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.
 +<code bash>
 +#!/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}"
 +</code>
Imprimir/exportar