Pagar rama remota usando git svn

188

He revisado un repositorio svn usando git svn. Ahora necesito revisar una de las ramas y rastrearla. ¿Cuál es la mejor manera de hacerlo?

markovuksanovic
fuente

Respuestas:

355

Diseño estándar de Subversion

Cree un clon de git que incluya su tronco, etiquetas y ramas de Subversion con

git svn clone http://svn.example.com/project -T tronco -b ramas -t etiquetas

La --stdlayoutopción es un buen acceso directo si su repositorio de Subversion usa la estructura típica:

git svn clone http://svn.example.com/project --stdlayout

Haga que su repositorio git ignore todo lo que hace el repositorio de subversion:

git svn show-ignore >> .git / info / exclude

Ahora debería poder ver todas las ramas de Subversion en el lado de git:

git branch -r

Digamos que el nombre de la rama en Subversion es waldo. En el lado git, correrás

git checkout -b waldo-svn remotes / waldo

El sufijo -svn es para evitar advertencias de la forma

advertencia: refname 'waldo' es ambiguo.

Para actualizar la rama git waldo-svn, ejecute

git checkout waldo-svn
git svn rebase

A partir de un pago solo del tronco

Para agregar una rama de Subversion a un clon de solo troncal, modifique el repositorio de git .git/configpara que contenga

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

Tendrás que desarrollar el hábito de correr

git svn fetch --fetch-all

para actualizar todo lo que git svnpiensa que son controles remotos separados. En este punto, puede crear y rastrear ramas como se indicó anteriormente. Por ejemplo, para crear una rama git que corresponda a mybranch, ejecute

git checkout -b mybranch-svn remotes / mybranch

¡Para las ramas desde las cuales pretendes git svn dcommit, mantén sus historias lineales!


Más información

También puede estar interesado en leer una respuesta a una pregunta relacionada .

Greg Bacon
fuente
Esto no funciona para mí, ya que he revisado el tronco usando git svn clone ... No configuré ramas para verificar ... Creo que necesito hacerlo en primer lugar.
markovuksanovic
El hecho es que he usado git svn clon svn.example.com/project/trunk Y ahora no sé cómo configurar otras ramas para ser rastreados sin perder mi repo actual ...
markovuksanovic
20
Sugeriría proporcionar un prefijo para sus controles remotos svn. (agregue --prefix=svn/al hacer git-svn inito git-svn clone) Esto eliminará la necesidad de agregar un sufijo en sus sucursales locales.
jasonkarns
Si tiene varias sucursales, no se olvide de hacer "git checkout master" antes de ocuparse de otra
sucursal
Si los show-ignoreerrores se resuelven, intentegit svn show-ignore -i trunk
Antti Haapala