2011-01-10 14 views
6

Nuestra empresa utiliza (y admite) SVN, pero tiendo a usar git. Lo que quiero probar es tener el repositorio git, uno por proyecto, que los desarrolladores del proyecto podrán extraer de este repositorio (y, por supuesto, extraerse uno del otro si así lo desean). Pero todavía quiero enviar todos los cambios al SVN, porque SVN está siendo mantenido por nuestro soporte técnico.git svn dcommit sin rebasing

que estaba probando el escenario con depósitos siguientes:

  1. SVN-repositorio - éste es mantenido por nuestra empresa y nuestro equipo debe pasar todos los cambios que hay en algún momento
  2. git-svn-clon - este es el repositorio git clonado desde SVN arriba - todos los desarrolladores de proyectos deben enviar sus commits aquí
  3. git-dev-clone - este es el repositorio git del desarrollador.

El único problema con el uso directo de 'git svn rebase' y 'git svn dcommit' que he notado es que después de cada pulsación del repositorio git del desarrollador al repositorio-clone git-svn tengo que rebase repositorio del desarrollador tan pronto como los cambios se propaguen a SVN y se vuelvan a configurar. Lo que quiero lograr es evitar volver a basar después de cada empuje.

Tenga en cuenta que supongo que cada desarrollador de proyecto utilizará solo el repositorio de git y nadie usará SVN directamente.

Pude realizar este comportamiento manualmente comprobando cada commit de git uno por uno en el repositorio 'git-svn-clone' después de enviar y confirmar esos cambios al SVN usando el cliente SVN. Creo que 'git svn dcommit' hace lo mismo, pero también se sincroniza desde SVN y cambia los identificadores de SHA que me obligan a volver a establecer la base.

P.S .: --no-rebase opción para git svn dcommit no ayuda ya que después de la primera commit propaga a SVN git svn dcommit no me permitía cometer más cambios en el SVN hasta anterior se reajusta. Intenté este comportamiento una vez y probablemente podría pasar por alto algo.

Respuesta

7

En realidad es incluso peor que eso ... dcommit cambia las confirmaciones cargadas a SVN (agregando líneas de git-svn-id, cambiando la información de autoría, etc.) incluso si hasckeado dcommit para no intentar rebasear.

Básicamente, git-svn no es capaz de sincronizar desde SVN alguna vez sin hacer rebases. Se está trabajando en una nueva interfaz git < -> SVN que podría eliminar esta limitación, pero aún no está lista.

Me temo que si quieres mantenerte sincronizado con el repositorio SVN, tu escenario no funcionará sin una nueva configuración en este momento.

+0

En cuanto a no ser capaz de 'sincronizar desde SVN nunca sin hacer rebases'. Estoy bien sin sincronizar desde SVN, todo lo que necesito es sincronizar TO SVN. – Snowbear

+0

En ese caso, usted todavía tendrá que hacer hackeos bastante extensos en git-svn, ya que usa la información en los objetos de confirmación para un montón de cosas, por lo que las reescribe durante la transacción. –

+0

Gracias, Jan. También entendí que incluso resolver este problema no me deja hacer lo que quiero de manera aceptable debido a otros problemas. Probablemente comenzaría a buscar instalar Git en nuestra compañía para que esté disponible sin SVN. Gracias por su respuesta de todos modos. – Snowbear

Cuestiones relacionadas