Subversion sigue estructura de árbol, no solo el contenido de ficheros. Es una de las razones más grandes por las que Subversion fue escrito para reemplazar CVS.
Esto es lo que significa para usted, como anterior usuario de CVS:
Los comandos svn add y svn delete trabajan ahora sobre directorios, tal como trabajan sobre ficheros. Así que haga svn copy y svn move. Sin embargo, estos comandos no causan ningún tipo de cambio inmediato en el repositorio. En su lugar, los objetos de la copia de trabajo simplemente se planifican para la adición o la eliminación. No sucede ningún cambio en el repositorio hasta que ejecute svn commit.
Los directorios no serán contenedores estúpidos nunca más;
tienen número de revisión como los ficheros. (O más
correctamente, es correcto hablar sobre “directorio
foo/
en la revisión 5”.)
Vamos a hablar más sobre este último punto. El versionado de directorios es un duro problema; porque queremos permitir copias de trabajo con revisiones mezcladas, hay algunas limitaciones en cómo podemosabusar de este modelo.
Desde un punto de vista teórico, definimos “revisión
5 del directorio foo
” para significar
una colección específica de directorios-entradas y características.
Ahora suponga que empezamos a añadir y a quitar ficheros de
foo
, y luego enviamos el cambio. Sería una
mentira decir que todavía tenemos la revisión 5 de
foo
. Sin embargo, si vemos el número
de revisión de foo
después del envío,
también sería esto una mentira; puede haber otros cambios en
foo
que todavía no hayamos recibido, porque
no hemos actualizado todavía.
Subversion trata este problema siguiendo silenciosamente
las agregaciones y las eliminaciones enviadas en el área
.svn
. Cuando usted ejecuta finalmente
svn update, todas las cuentas se fijan
con el repositorio, y el nuevo número
de revisión se fija correctamente. Por lo tanto,
solamente después de una actualización es verdaderamente
seguro decir que usted tiene una revisión “perfecta”
de un directorio. La mayoría del tiempo, su copia
de trabajo contendrá revisiones “imperfectas” del
directorio.
Similarmente, un problema surge si usted intenta enviar cambios de las características de un directorio. Normalmente, el envío chocaría con el número local de revisión del directorio de trabajo. Pero otra vez, eso sería una mentira, porque puede haber añadidos o eliminaciones que el directorio todavía no tiene, porque no ha habido ninguna actualización. Por lo tanto, usted no tiene permiso para enviar cambios-características sobre un directorio a menos que el directorio esté actualizado.
Para más discusión sobre las limitaciones del versionado de directorios, vea “Las limitaciones de las revisiones mixtas”.