2010-06-29 17 views
5

Ejecuto un servidor SVN en un servidor Linux. Saldré de la ciudad por una semana en algún lugar sin acceso a Internet y, por lo tanto, no tendré acceso SVN.Copie solo ciertas revisiones SVN de un repositorio a otro

Así que estoy tratando de encontrar la manera de tomar una instantánea del repositorio conmigo en mi portátil, y luego fusionar las nuevas revisiones al repositorio existente cuando vuelva ...

  • Mi computadora portátil ejecuta Windows 7, así que, primero, creo que VisualSVN Server es probablemente el servidor que ejecutaré localmente.

  • yo debería ser capaz de volcar mi repositorio actual y, a continuación, cargarlo en un nuevo repositorio en mi portátil

  • Pero lo que no estoy seguro, es decir, cuando vuelva de fuera de la ciudad. Tendré todas estas nuevas revisiones en el servidor SVN en mi computadora portátil. ¿Cómo descargo y luego solo cargo estas nuevas revisiones en el repositorio en mi servidor Linux?

  • Si uso >svnadmin dump --revision 50:75 (asumiendo que las revisiones 50 a 75 representan las nuevas revisiones que hice en mi computadora portátil), ¿puedo simplemente cargar ese archivo de volcado en mi repositorio existente en mi servidor Linux? ¿Es así de fácil? Sé que hay algunas cosas con respecto a los UUID de repositorio que pueden causar algunos problemas ...

  • Una nota más, soy el único desarrollador que contribuye a este repositorio SVN en este momento. Por lo tanto, no se requerirá fusión de código.

ACTUALIZACIÓN

yo no era consciente de que podía acceder a un repositorio localmente el simple uso de file:///. Entonces probablemente funcione mejor que tener que ejecutar VisualSVN Server. Sin embargo, la pregunta principal sigue siendo: ¿cómo obtengo las nuevas revisiones de un repositorio a otro?

+0

Mire en Git. Tiene un puente a Subversion para permitirle hacer commit localmente y luego enviar todos los commits a SVN. No estoy publicando esto como una respuesta, ya que significa una curva de aprendizaje que quizás no puedas hacer antes de salir de la ciudad. –

Respuesta

2

Si eres el único desarrollador, tal vez podrías llevar el repositorio contigo.

Acceda a él con el protocolo file: /// mientras está fuera, luego vuelva a colocarlo en el servidor cuando regrese. . .

+0

Llevarlo conmigo es lo que estaba intentando. ¿Pero cómo copio solo las nuevas revisiones del repositorio en la computadora portátil en el servidor svn original? ¿O está sugiriendo que elimine el servidor SVN existente y descargue/cargue todo el repositorio desde mi computadora portátil a uno nuevo en mi servidor? –

+0

Sugería que podía llevar todo el asunto ... es decir, el directorio del servidor que contiene los directorios conf, db, hooks, etc., simplemente copie ese directorio del servidor en su computadora portátil. Acceda a él como "svn checkout file: /// c:/svn/repos". Cuando regrese, elimine el directorio del repositorio en el servidor y copie su copia local de la computadora portátil. –

+0

... algo así como un sistema de control de fuente SVN distribuido por usted mismo. :) –

0

Yo recomendaría hacer un repositorio local git o mercurial justo encima de su copia de trabajo local.

Puede agregar las carpetas .svn y los artefactos a los archivos .hgignore o .gitignore para mantener el repositorio limpio, y luego cuando regrese puede hacer un svn commit de los cambios, o si desea para hacerse elegante haga un compromiso por etapas de vuelta a la subversión para cada unidad significativa de trabajo que registró en mercurial/git mientras estaba en la carretera.

Ambos repos hacen que sea realmente fácil mantener su propia copia de trabajo local en control de revisión, y sincronizar fácilmente con puntos de verificación definidos en el historial.

+0

Incluso iría más allá y usaría herramientas como hgsvn o git-svn, que pueden copiar automáticamente el historial local a subversión. – Rudi

1

para extraer una serie de revisiones (nn a mm) de un repositorio:

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn 

La opción --incremental le permite combinar este conjunto de cambios sin traer toda la línea de base, junto con la importación.

Para aplicar estas revisiones en un repositorio:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn 

La opción --ignore-uuid permite la importación que se deben eliminar información de UUID del repositorio de código fuente.

Limitaría esta operación a repositorios con un historial de revisión común, de lo contrario la carga probablemente fallaría.

0

Un enfoque no sofisticado sería simplemente obtener todo lo que necesita, trabajar un poco, jugar un poco, trabajar un poco más, disfrutar de su entorno, conocer gente nueva, trabajar un poco más, y luego cuando regrese, cometer. Una semana puede parecer mucho tiempo para ir sin comprometerme, pero cuando estoy lejos, especialmente en aquellos lugares que no son de Internet, tiendo a no hacer CASIEMENTE tanto trabajo como me había propuesto.

WinZip puede ayudar si necesita realizar una instantánea de "guardar juego" de vez en cuando.

Cuestiones relacionadas