Copia de un directory que está controlado por la versión

Tengo curiosidad de si está bien copyr un directory que está bajo control de versión y comenzar a trabajar en ambas copys.

Sé que puede ser diferente de un VCS a otro, pero intencionalmente no especifico ningún VCS ya que tengo curiosidad sobre diferentes casos.

Estuve hablando con un compañero de trabajo recientemente sobre hacerlo en SVN. Creo que debería estar bien, pero todavía no estoy 100% seguro, ya que no sé exactamente qué SVN está almacenando en la copy de trabajo.

Sin embargo, si hablamos del mundo DVCS, las cosas podrían ser aún más confusas, ya que cada copy de trabajo es un repository en sí mismo. Ahora que estoy haciendo esto en bzr, decidí hacer la pregunta.

Edición posterior:

Algunas personas me preguntaron por qué querría hacer eso. Aquí está toda la historia:

En el caso de SVN, fue porque estando fuera de la oficina, la connection con el server SVN fue muy lenta, por lo que mi compañero de trabajo y yo decidimos consultar las fonts solo una vez y hacer una copy local. Eso es lo que hicimos y funcionó bien, pero todavía me pregunto si está garantizado que funcionará, o simplemente sucedió.

En el caso bzr, estoy planeando mover el repository "principal" a otro server. Así que estaba pensando copyrlo allí y comenzar a considerar el repository principal. Creo que lo más seguro es hacer un clon sin embargo.

En Subversion, cada carpeta .svn tiene lo que sea necesario para la carpeta contenedora. Y dado que todas las routes locales se almacenan como relativas, estará seguro mientras copy treees completos o parciales fuera del tree de pago original. Continuarán funcionando en sus nuevos hogares.

Con frecuencia copio subtreees de mi troncal en el exterior, cambio las nuevas copys a otras twigs / tags y hago lo que sea necesario en las copys locales "clonadas". De esta forma, si, por alguna razón, tengo que regresar y hacer algo en el maletero, tengo una copy troncal intacta en la location original.

Por otro lado, copyr directorys controlados por fonts en otros treees controlados por fonts no es seguro . Si va a sobrescribir cualquier carpeta .svn, lo más probable es que esté corrompiendo sus copys de destino.

Lo hago ocasionalmente en SVN y no he tenido ningún problema. Creo que en SVN todo lo que se almacena es el estado original del directory y un puntero al directory del repository del que proviene.

Entonces, básicamente funciona como crees que debería.

  • Si File1 en Copy1 cambia y File2 en Copy2 cambia, ambos pueden confirmar
  • Si el Archivo1 en Copia1 cambia y el Archivo1 en Copia2 cambia a quien lo haga, tendrá un error y deberá actualizar / fusionar primero.

Para los curiosos de por qué tuve que copyr, he tenido problemas con los checkouts en nuestra networking, que son muy lentos cuando comprobamos uno de nuestros proyectos más grandes. Por el contrario, simplemente copyr desde otra computadora parecía brindarme todos los mismos beneficios.

En svn, no hay problema. Puedes simplemente trabajar con la copy como si hubieras hecho un segundo pago.

Aunque recomendaría simplemente echar un vistazo por segunda vez. Si quiere una copy sin los files .svn, svn export creará uno.

Para bzr, si solo copy el directory .bzr a otra location, funcionará. No almacena ninguna información sobre la ruta en la que se encuentra o el host en el que se encuentra, por lo que puede copyrla donde sea y esperar que funcione correctamente.

Sugeriría que no, ya que está eludiendo el mecanismo de control de fuente.

Pero quizás puedas explicar 'por qué'?

También puede ver dos copys de trabajo (al less con SVN) para decir work / copy1 y work / copy2 y trabajar en las dos versiones en paralelo.

Sin embargo, me pregunto qué es lo que intenta lograr, ya que copyr puede no ser la mejor solución para su problema.

Dependerá del VCS. Sé en CVS que almacena directorys (ocultos) dentro de cada directory controlado por la versión. Por supuesto, estos files se copyn con cualquier copy de ese directory.

Es muy frecuente que NO desee copyr esos files ocultos que la herramienta rsync viene con una opción (-C) para ignorar estos files de la misma forma que lo hace CVS.

He tenido algunos dolores de cabeza con SVN cuando reorganicé el layout de la carpeta desde Visual Studio. Una carpeta movida dentro de una solución moverá literalmente la carpeta en el sistema de files, incluida la carpeta oculta .svn . Esto causa problemas de compromiso porque los datos .svn están asociados a la ruta anterior y no he encontrado una forma de reasociarse con su nueva ruta. La clean up SVN funciona bien pero no arregla nada. El switch SVN no le permite cambiarlo después de mover la carpeta. Solo pude solucionarlo eliminando todas .svn carpetas .svn dentro de la carpeta movida y sus subcarpetas, luego volví a agregar la carpeta.

El problema que tengo con esta solución es que pierdes el rastro de versión en esos files porque SVN lo ve como nuevo. Además, no almacena el contenido del file de manera tan eficiente almacenando el diff de la versión anterior.

Según la documentation de SVN, se recomienda permitir que el cliente svn haga toda su carpeta mover / crear / eliminar para mantener todo sincronizado para la siguiente confirmación. Esto no siempre es aceptable desde Visual Studio. Afortunadamente, la mayoría de los casos problemáticos se detectan durante el time de confirmación, especialmente si utiliza TortoiseSVN.

Para SVN, esto generalmente funcionará como otros ya lo han indicado.

Si está copyndo entre máquinas, probablemente tenga problemas. Por ejemplo, si está accediendo a su repository SVN utilizando file: // URL del repository, es muy probable que las cosas se rompan. Lo mismo se aplica a http: // o svn: // URLs donde el acceso al server puede ser diferente.

Para estar a salvo, acababa de pagar en la nueva location. Si tiene muchos cambios sin procesar en uno que desea tener en el nuevo directory de trabajo (generalmente una mala idea), podría usar rsync para copyr su fuente sin include los directorys .svn.

Me parece que GIT también podría satisfacer tus necesidades, como mencionas si estás desconectado o si tienes una connection defectuosa. GIT también tiene un soporte de SVN muy bueno, por lo que los dos son complementarios y terminarás con un buen sistema de files con versiones.