2009-06-19 23 views
16

Somos usuarios intensivos de SVN aquí. Si bien las ventajas de GIT sobre SVN nos hicieron querer cambiar, las ventajas de Hg sobre SVN significan que es hora de cambiar y tenemos que empezar a hacerlo muy pronto.¿Convertir una empresa de SVN a Hg?

No estoy tan preocupado por el lado del cliente, pero estas son mis preguntas.

  1. Hay algunos libros excelentes sobre la configuración de metapropiedades de archivos, organización de proyectos, etc. en SVN. ¿Cuál es ese libro (s) para Hg?

  2. ¿Existe alguna forma de convertir un repositorio SVN (que haya utilizado) y puede informar qué tan bien funcionó? No queremos perder años de registros de commit si es posible.

  3. Cuando hace la conversión, ¿cómo dividió el código anterior? ¿Hiciste la troncalización como un proyecto y las etiquetas/tenedores como otra?

  4. Si utilizó SVN para el trabajo heredado, ¿registró actualizaciones en SVN u otra cosa?

+3

Estas preguntas abordan el aspecto técnico; también hay otro lado de cultura corporativa y entrenamiento. ¿Cómo estás por eso? –

Respuesta

13
  1. Hay un libro libre disponible en http://hgbook.red-bean.com/ y published by O'Reilly en 2009.

  2. partir de la versión 0.9.5, Mercurial viene con un conversion tool.

  3. Debo admitir que cambié a Git en lugar de Mercurial. Dicho esto, con Git puedes importar ramas, etiquetas y troncales al mismo tiempo en el mismo repositorio. Git se ocupa de todos y con gracia almacena etiquetas como etiquetas, ramas como ramas y el tronco como la rama principal. Estoy seguro de que es casi lo mismo con Mercurial.

  4. Te recomiendo que cambies a Mercurial (o Git o cualquier otro DVCS) tan pronto como puedas. No continúe trabajando en dos repositorios diferentes. Cuando cambié, mantuve svn siempre que tuviera la confianza suficiente con Git (git-svn te permite interactuar de git a svn y viceversa). Luego hice el cambio y bloqueé los repositorios SVN.

+0

Es el mismo libro ... :-) Bryan lo ha estado publicando en línea durante algún tiempo para obtener comentarios y ahora también se publica en papel. –

+0

Gracias Martin, ¡he solucionado la respuesta! –

1

Ha habido un (pro v con) discussion sobre Subversion distribuido, algunos de ellos se refiere a artículos que SVN no hacerlo tan bien como DVCSs, y viceversa, pero hay una gran cantidad de información en el largo discusión que es útil para cualquiera que esté pensando en migrar el VCS de una compañía.

Para saltar directamente a una buena publicación, intente this one.

Si decides ir a un DVCS desde SVN, quizás deberías mirar git-svn que permite cambios bidireccionales entre el repositorio svn y las interfaces git. Debería darte lo mejor de ambos mundos, aunque usando git en lugar de mercurial.

4

Por favor, comience por ir al Mercurial wiki. Allí encontrará un enlace destacado llamado Mercurial: la guía definitiva que enlaza con el hg book como se le llama. Probablemente conozcas el svn book para Subversion; este es el equivalente para Mercurial (incluso están alojados en el mismo servidor, pero escritos por diferentes autores).

Más abajo en la página principal de la wiki, encontrará una sección para refugiados de otros sistemas de control de versiones. Hay un enlace con information for SVN users y repository conversion. El primero explica que puedes probar HgSubversion si quieres hacer una conversión bidireccional entre Subversion y Mercurial y este último explica cómo usar el convert extension para hacer una subversión (posible incremental) -> conversión Mercurial.

¿Alguna vez encontró alguna de estas páginas? De lo contrario, cuéntenos cómo podemos mejorar estas páginas para que sea más fácil encontrarlas.

4

He comenzado la conversión de Subversion a otra cosa un par de veces, una vez a Darcs, y ahora estoy jugando con Git. También hice un movimiento bastante importante de CVS a Subversion hace bastante tiempo.

Mi mayor consejo es, no lo hagas todo a la vez. Elija un proyecto no trivial pero no enorme y conviértalo primero. Asigne un presupuesto de tiempo razonable (una hora por día por desarrollador durante las primeras dos semanas no es irrazonable) para aprender el sistema y adaptar su flujo de trabajo. Aproximadamente un mes después, una vez que tenga una cantidad razonable de experiencia con el sistema entre varios desarrolladores, puede considerar la posibilidad de convertir todo lo demás, si todavía siente que desea ir por ese camino. Cuando hagas eso, asegúrate de que tus desarrolladores que tengan experiencia con el nuevo VCS estén disponibles para los demás, idealmente uno debería trabajar en la misma sala con cualquiera que se convierta.

Oh, sí, y esto presume que ya has jugado una cantidad razonable con el sistema, y ​​construiste un proyecto de "juguete" usándolo. Sin embargo, no es demasiado juicioso: debe involucrar al menos a tres desarrolladores, unas pocas docenas de archivos, cientos de confirmaciones, y debe usar un flujo de trabajo similar a uno de sus proyectos reales.

0

Tenía un repositorio de subversión bastante grande donde cada carpeta principal era un módulo. Para dividirlo He utilizado el siguiente conjuro:

for i in *; do \ 
    echo include "\"${i}\"" > /tmp/hgv.map; \ 
    echo rename "\"${i}\"" . >> /tmp/hgv.map; \ 
    hg convert --filemap /tmp/hgv.map /mnt/e/sqlwork/ "/mnt/h/work/${i}"; \ 
done 

Se pone cada carpeta en el directorio actual, genera una FileMap del subcomando convertido y convierte el directorio en un repositorio de Hg. No perdí ningún historial y no encontré otros obstáculos. Es posible que desee echar un vistazo a convert extension.

0
  1. El hginit.com de Joel Spolsky es una introducción muy buena.
  2. He usado el plugin hg convert para convertir (sic) mi repo de Subversion a una versión de Mercurial. Funcionó muy bien Vea the plugin doc para más detalles. Hay (por supuesto) other ways.
  3. hg convert de hecho copia el conjunto de svn completo, incluyendo ramas y etiquetas (y cualquier otra estructura de directorio presente en su repositorio).
  4. Es mucho mejor usar un solo sistema de control de versiones, pero si es necesario, puede vincularlo con subversion usando el plugin hgsubversion.
Cuestiones relacionadas