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?

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 .


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.