Estas son mis notas de uso del
subversion de verdad se los recomiendo mucho sobre todo más que el CVS (por complicado) o el VSS (por chafa) :
Checkoutsvn co repositorio/trunkUna versionsvn checkout --revision 1729
Info del directorio svn infoStatus svn status svn status --verbose svn status --show-updates --verbose
Updatesvn updatesvn update --revision 1729Commitsvn commit -m "un comentario"Branchsvn copy repositorio/trunk repositorio/branches/entrega16_12_2005 -m "Creando una copia de la entrega"Log hasta donde se creo el branchsvn log --verbose --stop-on-copy MergeUsando la versión dada por el comando anterior luego cd a la copia local del trunk (recien update)
svn merge -r 341:HEAD repositorio/branches/entrega16_12_2005Cosas a verificar antes de dar commit a trunk:
diff, compile, testsvn commit -m "Merged rV1:V2 al trunk"Regresando version :-(svn merge -r 303:302 repositorio/trunkU un archivosvn statusM un archivosvn diff…(Para verificar que los cambios se hayan ido)…svn commit -m "Undoing change committed in r303."Sending un archivoTransmitting file data .Committed revision 350.Shortcut para crear un branch
(No recomendado para novatos!!!)cd proyectosvn info | grep URLURL: repositorio/trunksvn switch repositorio/branches/entrega16_12_2005Updated to revision 341.svn info | grep URLURL: repositorio/branches/entrega16_12_2005¿O que tal un branch de solo una parte?
Si solo quieres modificar un directorio específico del proyecto y seguir recibiendo actualizaciones del trunk puedes aplicar el svn switch a ese directorio!!
Removiendo un branchsvn delete repositorio/branches/entrega16_12_2005 -m "Removing obsolete branch of calc project."Committed revision 375.Reviviendo un branch
(O por que nunca me decido...)
svn copy -r 374 repositorio/branches/entrega16_12_2005 repositorio/branches/entrega16_12_2005ConflictosSupongamos que tenemos un conflicto, así se verá el archivo:
$ svn update C unarchivoSubversion crea varios archivos:$ ls update unarchivo.*unarchivo unarchivo.mine unarchivo.r2 unarchivo.r1$ cat unarchivo...codigo sin conflicto...<<<<<<< .mine código en conflicto escrito por mí=======código en conflicto escrito por alguien más>>>>>>> .r2...mas código sin conflicto
...
Solución 1: A mano ...Arreglas lo que tengas que arreglar en el archivo y luego le das
svn resolved unarchivo$ svn commit -m "Resuelto el conflicto"Solución 2: Copiando ...Si la versión buena es la r2 entonces
$ cp unarchivo.r2 unarchivo$ svn resolved unarchivo$ svn commit -m "Resuelto quitando los cambios de alguien más"Solución 3: Tirando tus cambios...svn revert unArchivo
svn commit -m "Resuelto nos quedamos con los cambios de alguien más"
DiferenciasLocal y HEADsvn diff archivoLocal y una versiónsvn diff --revision 3 archivo
Versión y versiónsvn diff --revision 2:3 archivoVer un archivo completo
(Sin bajarlo)
svn cat --revision 2 archivosvn cat --revision 2 archivo > archivo.v2Listassvn list --verboseTags
Como en subversion todo es un directorio los tags se crean igual que un branch, solamente el concepto es diferente, el tag es una versión congelada, el branch es para cambios con los que se va a hacer merge...
$ svn copy repositorio/trunk repositorio/tags/entrega04_01_2006 -m "Liberando una version"Bueno con esto es más que suficiente, han de poder sobrevivir con esto :-)