una tutorial trabajo subversion subir repositorio proyecto español descargar copia con como comandos clonar archivos svn repository working-copy

tutorial - SVN: ¿una copia de trabajo, dos repositorios?



svn no es una copia de trabajo (8)

Me gustaría saber cómo puedo configurar dos repositorios para mi única copia de trabajo. Necesito un repositorio en mi servidor, para que pueda registrar mi entrada / salida entre dos equipos; Necesito otro repositorio en mi PC local, de modo que pueda ver el resultado de diff rápidamente (mi servidor svn está en un host lento compartido)

¿Cómo puedo hacer eso?


El resultado de svn diff no depende de la velocidad de su conexión al servidor; es una operación completamente local.


No estoy seguro de que la replicación de repositorio estándar le proporcione lo que desea. Con esa configuración, un proxy siempre es de solo lectura, y no creo que en su situación ese sea el caso.

Tendría que hacer el cambio svn --localizar para cambiar el repositorio que está buscando justo antes de registrarse. Algo propenso a errores.

Lo que buscas es un proxy de escritura .

Si configura esto usando apache y mod_svn_dav en su máquina local, tendrá un repositorio local que recibirá todas las actualizaciones y con las que podrá comparar y comparar fácilmente, pero para todas las escrituras volverá al repositorio real que todos los demás está usando y recibiendo actualizaciones de.


Puede intentar usar svk como su cliente local en lugar de svn. Svk es un sistema de control de versiones pseudo distribuido que usa repositorios svn.

Utilizaría svk para configurar un espejo del repositorio, sincronizarlo, y puede diferir el contenido de su corazón, tantas revisiones como quiera y todo es local.

También puede hacer una rama del depósito duplicado y usarla como su salida, sus compromisos también son una operación solo local, y cuando esté listo con un lote de compromisos los empuja al repositorio svn remoto (y tire el otro usuario ha cambiado de nuevo, de forma similar a un comando de actualización de svn).

Dos advertencias:

  1. Prepárate para usar la línea de comando. No hay TortoiseSVK u otra GUI que yo sepa.
  2. Solo he usado svk en Linux. Si está usando Windows, no estoy seguro de qué tan bueno es el cliente.

Aparte de eso, utilizo bazaar, mercurial o git como otros han sugerido. Bazaar es probablemente el más fácil de usar, y tiene una interfaz gráfica de usuario de TortoiseBzr que un colega mío dice que es bastante sólida.

Git es el más difícil de usar. Es como el cuchillo de ejército suizo que es casi más ancho que largo, con todos los pequeños artilugios y drogadictos y colgando de él, con los muelles tan apretados que ocasionalmente se abre un dedo para intentar apretar una cuchilla fuera.


Si no tiene que usar SVN, es mejor utilizar un sistema de control de versiones distribuidas, como Mercurial o Git. Cada PC tendrá su propia copia del repositorio, y los cambios se pueden sincronizar directamente entre las PC o a través de otra copia en un servidor central. Como cada PC tiene el repositorio completo almacenado localmente, puede hacer diff o cualquier otra operación sin acceso a la red.


Si su caja local es linux, puede crear una entrada crontab para svn actualizar cada X minutos para mantenerlo sincronizado con el servidor en segundo plano. Desde allí tendrías que copiar la copia más reciente en tu servidor svn local.


Subversion no usa el acceso a la red para su operación diff. Este es uno de los grandes beneficios de Subversion sobre CVS. Así que no estoy seguro de por qué estarías enfrentando ese problema específico.

Una alternativa es usar Git y específicamente git-svn en su PC local. Obtendrás una copia completa de todo el historial del repositorio en tu máquina local, con la posibilidad de modificar y ver el historial localmente (junto con muchas otras características que Git te brinda). Siempre que sea posible, ahora uso git-svn para acceder a los repositorios de Subversion.


SVN no es inherentemente adecuado para tales casos de uso. Tendrás que retocar cosas aquí y allá (como escribir crones). Si quieres algo que funcione de la caja para adaptarse a tales casos de uso, prueba GIT.


Eche un vistazo a la replicación del repositorio .

Puede configurar un trabajo cron para sincronizar periódicamente de un repositorio a otro. Pero debes asegurarte de que los commits solo sucedan a uno de los dos.

Si los commits pasarán a ambos repositorios, tal vez un sistema de control de versiones distribuido como git , Bazaar o Mercurial esté más en su camino. Git, por su parte, incluso te permite sacar y empujar directamente a un repositorio de Subversion.