2011-03-09 3 views
6

Estoy acostumbrado a git y me gusta mucho, pero uno de mis clientes está (¿todavía?) Utilizando la subversión, realmente no sé nada de svn, pero sé que hay un paquete git-svn.¿Puedo usar git-svn y parecer que estaba usando SVN, si es así cómo?

Sé que es posible obtener un repositorio de svn con git, pero ¿puedo usar git en lugar de svn y aún confirmar, y "pulsar" para el servidor svn central?

Quiero usar git y no svn si puedo me puede indicar algún tutorial para hacerlo?

Gracias

EDIT:

que en realidad no me importa para recuperar todos los confirmaciones, sólo el 10/20 anterior sería suficiente ya que la aplicación se encuentra en un estado de trabajo y que es solo sobre hacer mejoras, así que solo buscaré todo el historial de confirmaciones si es realmente necesario.

+2

"y parece que estaba usando SVN": si es realmente importante que ninguno de los demás usuarios de svn sepa que has estado usando git, ten cuidado de no confirmar tu '.gitignore' file o algo así, y nunca 'git svn dcommit' se compromete más de una vez a la vez, ya que estarán separados unos pocos segundos en los registros de svn. Pero aparte de eso, puedes pensar en git como un cliente de svn muy elegante y nadie sabrá la diferencia. – MatrixFrog

Respuesta

5

git-svn proporciona un puente de Git y SVN. Se comportará como Git vainilla localmente, pero tan pronto como intentes empujar o tirar de tus cambios hacia o desde el maestro, se volverá completamente diferente.

En lugar de hacer un push, usará git commit para realizar localmente, y git svn dcommit para enviar sus confirmaciones locales a SVN.

El git-svn documentation explica cómo extraer de un repositorio SVN. Tenga en cuenta que es extremadamente lento (en comparación con git normal) porque recupera todas las revisiones desde SVN. Vea los ejemplos en la parte inferior de la documentación.

Aquí es una forma típica Lo he utilizado:

  1. git svn clone http://svn.example.com/project -T trunk -b branches -t tags - La URL es su repositorio SVN, y se especifica el -T, -b, y los interruptores de -t para especificar rutas sub en su Directorio SVN Git luego usará estos directorios SVN para buscar ramas y etiquetas, y troncales como maestros.
  2. hacer algo de código cambia
  3. git add... poner en escena sus cambios
  4. git commit... para enviar sus cambios a nivel local.
  5. git svn dcommit para enviar las confirmaciones locales a SVN. Para cada compromiso local, Git realizará estas confirmaciones por separado en el servidor SVN.
+0

Probé tu comando git svn clone, pero eso no funciona, revisé el svn repo (con svn) parece que no hay ninguna carpeta de troncales, etiquetas o ramas, todo el código está en la raíz, cualquier ideas? –

+0

Está bien logré clonar al no especificar ningún parámetro –

+0

@EricP: Esa era la forma de manejarlo, sí. – vcsjones

0

Es posible, pero creo que lo mejor es que se cambia de aplicación de control de versiones :)

para obtener el SVN se compromete a GIT (después de tener ya svn git inicializado, por supuesto)

git svn fetch

para obtener su git svn compromete a

git commit git svn dcommit

+0

No creo que mi cliente acepte migrar de svn a git :) Pero deseo: D –

Cuestiones relacionadas