Subversion

Creación de repositorio SVN

(http://svnbook.red-bean.com/nightly/en/svn.intro.quickstart.html)

  1. Pararse en el directorio a donde quiero crear el repositorio. (e.g ~/comp/tesis)
  2. svnadmin create <nombrerepos> (e.g. <nombrerepos>=svn)
  3. svn import preproyecto file:/././home/francolq/comp/tesis/svn/preproyecto -m”Primer import: preproyecto tesis y carta al decano.”
  4. svn list –verbose file:/././home/francolq/comp/tesis/svn
  5. mv preproyecto preproyecto.old
  6. svn co file:/././home/francolq/comp/tesis/svn/preproyecto preproyecto
  7. Si lo anterior anduvo bien, rm -rf preproyecto.old

Importar con excepciones

Aca el drama es que los directorios que importo tienen muchas cosas que no quiero meter. La clave es usar la opción -N (–non-recursive).

  1. Primero backup del repositorio: cp -r svn/ svn.bak
  2. svn import eiffelTests file:/././home/francolq/comp/tesis/svn/eiffelTests -m”Agrego directorio para poner las pruebas con eiffel.” –non-recursive
  3. svn import build file:/././home/francolq/comp/tesis/svn/eiffelTests/build -m”Agrego mi primera aplicacion con GUI.” –non-recursive
  4. Borro los archivos de build que importé (o los muevo por las dudas).
  5. svn co file:/././home/francolq/comp/tesis/svn/eiffelTests/build build

A build/vision2_application.e 
A build/ace.Unix.ace
A build/main_window_imp.e
A build/system_interface.xml
A build/vision2_project.epr
A build/build_project.bpr
A build/ace.Windows.ace
A build/main_window.e
Revisión obtenida: 3

Agrego Wiki al repositorio: Ver knotes de francolq@rodolfa.

(Chequeos entre pasos 3 y 4:

  • svn list –verbose file:/././home/francolq/comp/tesis/svn
  • svn list –verbose file:/././home/francolq/comp/tesis/svn/eiffelTests
  • svn list –verbose file:/././home/francolq/comp/tesis/svn/eiffelTests/build)

Resolucion de Conflictos

(http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html#svn.tour.cycle.resolve)

Cuando aparece la letra C luego de hacer un update o un merge. Editar el archivo, solucionar el conflicto y ejecutar

  svn resolved <archivo>

Reorganizo repositorio

svn mkdir -m"Hago directorio para poner los prototipos."  file:///home/francolq/comp/tesis/svn/prototipos
svn move -m"Muevo los prototipos a su directorio." file:///home/francolq/comp/tesis/svn/javaTests/Prototipo4 file:///home/francolq/comp/tesis/svn/prototipos

Branching

http://svnbook.red-bean.com/nightly/en/svn.branchmerge.using.html

http://zen.sh.nu/book/en/svn.branchmerge.using.html

(revision: 31) # svn copy file:/home/francolq/comp/tesis/svn/dokuwiki file:/home/francolq/comp/tesis/svn/tesiswiki -m”Creo branch tesiswiki para deajar dokuwiki para uso general. Tesiswiki va ser la wiki para este proyecto.” (Revisión: 32) # svn co file:/home/francolq/comp/tesis/svn/tesiswiki cd tesiswiki (hacer todos los find y chmod de arriba) * Caso 1: cambio algo en dokuwiki y quiero que aparezca en tesiswiki: # cd tesiswiki # svn update # svn info (sea R1 la ultima revision indicada por estos dos comandos) # svn log (sea R2 la revision del merge mas reciente por dokuwiki) # svn diff -r R2:R1 file:/home/francolq/comp/tesis/svn/dokuwiki

# svn merge --dry-run -r R2:R1 file:///home/francolq/comp/tesis/svn/dokuwiki
# svn merge -r R2:R1 file:///home/francolq/comp/tesis/svn/dokuwiki
(Resolver conflictos y lo que haga falta)
# svn commit -m"MERGE dokuwiki rR1" (OJO poner el valor de R1)
  • Caso 2: cambio algo en tesiswiki y lo quiero poner en dokuwiki:

Averiguar la revision que hace el cambio. Sea R1 ésta y R2=R1-1.

# svn merge -r R2:R1 file:///home/francolq/comp/tesis/svn/dokuwiki
(Resolver conflictos y lo que haga falta)
# svn commit -m"MERGE tesiswiki rR2:R1"
# svn commit -m"el mensaje que se me cante"

Haciendo una release

La onda es crear un tag. Aqui hago release del informe de tesis.

(http://svnbook.red-bean.com/nightly/en/svn.branchmerge.tags.html)

  1. Creo el directorio para los tags porque no tenia: que cagada!
# svn mkdir file:///home/francolq/comp/tesis/svn/informe/tags/ -m"creo directorio para hacer tags del informe de tesis."
  1. Hago el tag propiamente dicho:
svn copy file:///home/francolq/comp/tesis/svn/informe file:///home/francolq/comp/tesis/svn/informe/tags/entrega1 -m"Primera entrega de los capitulos 1 al 4 (22mar2007 a las 10 am). Ver entrega1.tex y entrega1.dvi. Faltan 8 dias para presentar la tesis :)"

Cambiar mensaje de commit pasado

svnadmin setlog /home/svn/francolq/ log.txt -r 274 --bypass-hooks

Ofrecer repositorio SVN por red

Subversion con NetBeans

  1. Si no anda el protocolo svn+ssh: ver http://weimo.de/node/852.

Subversion + SSH (Nico Wolovick)

#Para el checkout inicial (del trunk!), donde USER es el username de la russell
svn co svn+ssh://russell.famaf.unc.edu.ar/home/svn/sistop/trunk

# para hacer el checkout del release 2004
svn co svn+ssh://russell.famaf.unc.edu.ar/home/svn/sistop/tags/release_2006
# para marcar un release
svn copy svn+ssh://russell/home/svn/sistop/trunk svn+ssh://russell/home/svn/sistop/tags/release-2006 -m "tag 2006"

#Setear propiedad de ignores
svn propset svn:ignore '*~' Como

#Para activar la keyword substitution
svn propset svn:keywords "Date Revision" como-entregar.html como-informe.html como-general.html

#Para exportar un dir y luego generar un tarball de distribucion
svn export svn+ssh://russell.famaf.unc.edu.ar/home/svn/sistop/trunk/Lab-ksamp/broken ksamp-1.0