]> git.llucax.com Git - personal/documentos.git/blob - charla_scm/ejemplos/svn/2-comun.html
Cumples familieros.
[personal/documentos.git] / charla_scm / ejemplos / svn / 2-comun.html
1 <html>
2 <head>
3 <title>darcs :: Ejemplo 2</title>
4 <link rel="stylesheet" type="text/css" href="../style.css">
5 </head>
6 <body>
7
8 <h2>Ejemplo 1 - Vemos la luz</h2>
9
10 Ahora que ya sabemos operar con las cosas mas comunes, vamos a ver como
11 interactuamos con otros repositorios, sean o no nuestros.<p>
12
13 El primer ejemplo va a ser obtener un repositorio existente, que esta
14 publicado por web. Recordemos que svn tiene varios métodos de acceso
15 (local, ssh, protocolo propio, protocolo sobre webdav).<br>
16 Vamos a usar un repositorio real, chico y con pocos cambios.<br>
17
18 <pre>
19 # svn co svn+ssh://luca@svn.llucax.hn.org/var/lib/svn/test wc_test
20 Password:
21 A  wc_test/link
22 A  wc_test/mkfilter
23 Revisión obtenida: 1
24 # cd wc_test
25 #
26 <tt class=nota>Vemos que se bajo el repo</tt>
27 # ls -l
28 total 4
29 lrwxrwxrwx  1 guestlabi guestlabi   8 2005-05-18 15:55 link -&gt; mkfilter
30 -rwxr-xr-x  1 guestlabi guestlabi 427 2005-05-18 15:55 mkfilter
31 #
32 </pre>
33
34 Para obtener la última versión...
35
36 <pre>
37 # svn update
38 <tt class=nota>No hay nada nuevo</tt>
39 En la revisión 1.
40 #
41 </pre>
42
43 Un rato más tarde, luego de que alguien modificó un archivo:
44
45 <pre>
46 # svn update
47 <tt class=nota>Obtenemos los últimos chagesets.</tt>
48 M  arroz-solo
49 Actualizado a la revisión 4.
50 #
51 </pre>
52
53 Ahora hacemos unos cambios, pero alguien más estuvo haciendo cambios y los
54 aplicó antes que nosotros. No importa, subversion, mientras pueda, hará un
55 merge.
56
57 <pre>
58 # svn ci -m Cambios.
59 <tt class=nota>Como cambió el mismo archivo que nosotros, antes debemos hacer un
60 update para que pueda hacer un merge de los cambios en el servidor a los
61 nuestros).</tt>
62 Enviando       wc/trunk/arroz-solo
63 svn: Falló el commit (detalles a continuación):
64 svn: Out of date: '/trunk/arroz-solo' in transaction '6'
65 # svn update
66 <tt class=nota>Hace el merge sin problemas (notar la G).</tt>
67 G  arroz-solo
68 Actualizado a la revisión 5.
69 #
70 </pre>
71
72 Finalmente, nuestro grupo humano no es perfecto, hubo falta de comunicación y 2
73 personas corregimos el mismo error (o un error en la misma línea, por ejemplo).
74 Subversion no puede hacer cargo de la situación y nos dice que hay conflicto.
75
76 <pre>
77 # svn up
78 <tt class=nota>No puede hacer el merge, <strong>PROBLEMAS</strong> (notar la C).</tt>
79 C  wc/trunk/arroz-solo
80 Actualizado a la revisión 6.
81 #
82 <tt class=nota>Subversion nos deja varios elementos para solucionar el problema:</tt>
83 # ls
84 ls -l
85 total 16
86 -rw-rw----  1 luca luca 471 2005-05-19 18:02 arroz-solo
87 <tt class=nota>El archivo con marcas de los conflictos (ya lo veremos en más detalle)</tt>
88 -rw-rw----  1 luca luca 369 2005-05-19 18:02 arroz-solo.mine
89 <tt class=nota>Mi versión del archivo.</tt>
90 -rw-rw----  1 luca luca 362 2005-05-19 18:02 arroz-solo.r5
91 <tt class=nota>La versión base de archivo, de donde surgió mi version y la nueva
92 con la que tiene el conflicto.</tt>
93 -rw-rw----  1 luca luca 362 2005-05-19 18:02 arroz-solo.r6
94 <tt class=nota>La versión nueva del archivo que provoca el conflicto con mis
95 cambios.<tt>
96 # cat arroz-solo
97
98 poner agua a hervir con sal (ponerle bastante sal)
99
100 cuando hierva agregar el arroz y bajar un poco el fuego
101
102 <tt class=nota>Hasta el "=======" es como está en mi versión.</tt>
103 &lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine
104 cuando este, sacalo colandolo bajo agua fria para cortar la cocción
105 =======
106 <tt class=nota>Hasta el "&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r6" es como está en la nueva versión.<tt>
107 cuando este, sacalo colandolo bajo agua fría para cortar la coccion
108 &gt;&gt;&gt;&gt;&gt;&gt;&gt; .r6
109
110 ponerle aceite, puede ser de oliva; poner tambien un chorrin en la fuente
111 antes, abajo del arroz
112
113 cuatro tazas de agua x una de arroz
114 una taza de arroz por persona (salen 2 platos)
115
116 Listo!
117
118 <tt class=nota>Si me olvido que hubo un conflicto y quiero hacer un commit, el
119 svn no me deja.</tt>
120 # svn ci
121 svn: Falló el commit (detalles a continuación):
122 svn: Abortando el commit: '/mnt/burns/luca/documentos/charla_scm/ejemplos/svn/wc/trunk/arroz-solo' queda en conflicto
123 #
124 <tt class=nota>Editamos el archivo para eliminar el conflicto.</tt>
125 # vi arroz-solo
126 [...]
127 # svn diff
128 # svn diff
129 Index: arroz-solo
130 ===================================================================
131 colordiff 1.0.4 (http://colordiff.sourceforge.net/)
132 (C)2002-2004 Dave Ewart, davee@sungate.co.uk
133
134 --- arroz-solo  (revisión: 6)
135 +++ arroz-solo  (copia de trabajo)
136 @@ -3,7 +3,7 @@
137
138  cuando hierva agregar el arroz y bajar un poco el fuego
139
140  -cuando este, sacalo colandolo bajo agua fría para cortar la coccion
141  +cuando este, sacalo colandolo bajo agua fría para cortar la cocción
142
143   ponerle aceite, puede ser de oliva; poner tambien un chorrin en la fuente
144   antes, abajo del arroz
145 #
146 <tt class=nota>Finalmente avisamos al svn que resolvimos el conflicto (es
147 análogo a borrar todos los archivos que creó para resolverlo)</tt>
148 # svn resolved arroz-solo
149 Se resolvió el conflicto de 'arroz-solo'
150 # ls
151 arroz-solo
152 <tt class=nota>Y hacemos el commit.</tt>
153 # svn ci -m "Corregido tilde"
154 Enviando       trunk/arroz-solo
155 Transmitiendo contenido de archivos .
156 Commit de la revisión 7.
157 #
158 </pre>
159
160 Listo, esta es uno de los problemas más complejos que se pueden presentar usando
161 subversion, sin incluir los merges entre 2 branches, pero no tienen más magia
162 que esto: si funciona bien, todos felices, si no, a resolver conflictos!
163
164 </body>
165 </html>
166