Obtener de svn. Comprométete con git remoto

Soy nuevo en git y estoy tratando de entender si puede resolver mi problema.

Un proyecto tiene un repo de svn público de solo lectura. Quiero hacer y rastrear mis propios cambios a su origen a lo largo del time. Mientras sigue buscando cambios desde el repository svn. Por supuesto que puedo hacer esto fácilmente con git-svn . Simplemente nunca dcommit un dcommit .

El problema adicional es que trabajo desde múltiples ubicaciones. Por lo tanto, utilizo un repository remoto para sincronizar files entre estas ubicaciones. Esto también es otra cosa que puedo hacer fácilmente con git, usando un repository remoto de git.

Pero ponlos juntos y tengo:

  • search desde un svn remoto
  • comprometerse con git local
  • tirar / empujar a git remoto.

¿Es este un flujo de trabajo razonable con git? Cuando, con el time, mis propios cambios / confirmaciones se entrelazarán con actualizaciones del svn repo. Si es así, ¿cómo debería configurarlo?

Es decir, ¿Debería hacer que cada location de trabajo tenga su búsqueda de git local desde el svn remoto directamente, de una manera completamente descentralizada? ¿O debería salir de mi path para que el único repository remoto de git haga el svn fetch sí mismo? Para que sea más fácil para los diversos gits locales coordinar los cambios desde svn, es decir, hacer que se vean como sus cambios justo desde el repository remoto de git.

Puedo ejecutar git-svn solo en el host de git repo remoto si es necesario.

Si puede ejecutar git-svn en su server remoto, searchía una configuration como esta:

  • use una twig especial para rastrear el repository de svn ascendente. Haga que el server que aloja el repository de git rastree el svn de eliminación utilizando git-svn en una twig conocida (fe upstream ).
  • extraer de ese repository remoto
  • use una sucursal separada para sus cambios (o múltiples twigs de temas). Combine los cambios de la twig ascendente con su (s) twig (s) de tema. A continuación, siempre puede diferenciar entre su twig de tema y la twig ascendente y comprobar las diferencias. Si no publica la twig de tema, también puede usar rebase, de modo que obtenga los cambios siempre como parches en la parte superior de los cambios en sentido ascendente.

Si no puede ejecutar git-svn en el server remoto, lo haría de manera similar, pero tener el server remoto desconectando los cambios de svn es mucho mejor ya que no tiene que preocuparse por eso.

Git puede hacer esto con bastante facilidad.

Prueba esto:

 git svn clone svn-url 

Eso se encarga de search desde el svn remoto. A continuación, puede usar git como desee con branches etc y continuar git svn tirando de master, fusionando cambios en su twig de desarrollo, etc. Tiendo a usar un repository separado y hago esto:

 git remote add svn /path/to/git/repo/cloned/from/svn 

Y saque del clon svn a mi repository de desarrollo. Es solo una preference personal, pero mantiene mi repository de "import" limpio y mi repository de desarrollo simplemente piensa que es la base de código de subida. Podría sacar de otros repositorys git de esta manera también; Nunca estoy seguro de hacerlo sobre un repository de git-svn porque nunca me comprometí personalmente a svn … todavía. Puedes entonces

 git remote add server remote-repo git push server {branch} 

Como es normal