utilizar tutorial trabajando tortoise subversion con como abrir svn version-control synchronization

svn - tutorial - Sincronización de código con dos repositorios de subversión



svn tutorial (2)

Hice esto usando git svn, con mi desarrollo hecho en un repositorio git. El desarrollo remoto se realiza en subversión. Hice un clon git svn del repositorio de subversión, que llevo a un repositorio de git real. Un cronjob ejecuta "git svn rebase && git push" de vez en cuando para crear un espejo git del repositorio de subversión.

Para fusionar los cambios de subversión, tengo 2 controles remotos en mi copia git local: el origen del "desarrollo local" y el origen "del espejo subversivo". Cada vez que siento la necesidad, puedo fusionar los cambios del espejo de subversión en nuestro árbol de desarrollo. Los cambios locales no se ven afectados, viven separados y no estropean el espejo svn.

Usé gitosis para configurar y administrar los repositorios de git. Los pasos serían algo como esto (de memoria, puede ser incorrecto):

# set up the mirror git svn clone -s $SVN git remote add origin git@$MACHINE:svnmirror.git git push # + cron job to do git svn rebase && git push every N hours/minutes # set up the local working copy for development git clone git://$MACHINE/svnmirror.git # that''s an anonymous, read only clone # no push to the svn mirror for developers - only cronjob user can push there git remote add newproject git@$MACHINE:myproject.git git push newproject # now do the real deal git clone git://$MACHINE/myproject.git # hack hack hack git push # origin master not needed git remote add svnmirror git://$MACHINE/svnmirror.git git merge svnmirror/master git push

Un poco de historia primero:

  • Estoy usando el código "base" de un repositorio SVN remoto, no bajo mi control. El código no está etiquetado (todavía), así que siempre necesito mantenerme al día con el enlace.

  • Por varias razones (la más importante es que nuestras extensiones locales del código son de naturaleza "nicho" y están destinadas a resolver un problema específico del proyecto en el que se utiliza el código). No puedo usar el repositorio remoto. hacer control de versiones de cualquier modificación que realice localmente.

  • Tengo un repositorio SVN local en el que actualmente estoy realizando el control de versiones "local".

El problema al que me enfrento: no puedo determinar si hay una buena manera de tener el código simultáneamente sincronizado con ambos repositorios. Es decir, me gustaría conservar la información de la versión "remota" (para poder fusionarme en futuros cambios), pero también me gustaría tener información de la versión "local" al mismo tiempo (es decir, dentro de la misma estructura de directorios) .

En este momento estoy haciendo esto usando dos directorios diferentes, ambos contienen código idéntico, pero cada uno contiene información de versiones diferente. Obviamente, esto es bastante sobrecarga, especialmente porque el código en los dos directorios debe sincronizarse de forma independiente.

¿Hay alguna manera de hacer esto en subversión? ¿O tienes sugerencias sobre formas alternativas de abordar esto?


Puedes tener tu repositorio local donde comprometes tus cambios, como ya lo has hecho. Además, haría una fusión periódica desde el repositorio base para fusionar los cambios realizados en el tronco base en su repositorio local.

Lo único difícil es que debe hacer un seguimiento de las revisiones desde las cuales ya se ha fusionado desde el repositorio base.

Esto podría verse así:

svn merge -r X:Y baseRepositoryURL // merge from base repo svn commit // commit the changes to local repo svn merge -r Y:Z baseRepositoryURL // merge from base repo svn commit // commit the changes to local repo

Donde X es la revisión de su pago inicial, Y es la revisión de la cabeza a la hora de la primera fusión y Z es la revisión de la cabeza a la hora de la segunda fusión. Ves el patrón. Además, es importante que esté en el directorio base de su cuenta local cuando emita los comandos.