git-svn: ¿cómo puedo crear una nueva rama svn a través de git?


Tengo un repositorio git que rastrea un repositorio svn. Lo cloné usando --stdlayout.

He creado una nueva rama local a través de git checkout -b foobar

Ahora quiero que esta rama termine en …/branches/foobar en el repositorio svn.

¿Cómo lo hago?

(recortado un montón de texto de investigación. consulte el historial de preguntas si le importa)

Author: kch, 2008-11-05

3 answers

Sé que esta pregunta ha sido respondida hace un tiempo, pero después de leerla, podría ayudar a agregar ejemplos del comando específico de la rama git svn y relacionarlo con un flujo de trabajo típico.

Como kch respondió, use git svn branch. Aquí hay un ejemplo completo, (observe el -n para el ensayo de prueba):

git svn branch -n  -m "Branch for authentication bug" auth_bug

Si esto va bien, el servidor responde con una respuesta como esta:

Copiando https://scm-server.com/svn/portal/trunk en r8914 a https://scm-server.com/svn/portal/branches/auth_bug...

Y sin el interruptor -n el servidor probablemente agrega algo como:

Posible punto de ramificación: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug, 8914

Padre de rama encontrada: (refs/remotes/auth_bug)

D731b1fa028d30d685fe260f5bb912cbf59e1971

Siguiente padre con do_switch

Padre seguido con éxito r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(refs/remotes/auth_bug)

La mejor parte de esto, ahora puedes crear una rama local basada en tu rama remota así:

git checkout -b local/auth_bug auth_bug

Lo que significa " echa un vistazo y crea una rama local llamada auth_bug y haz que siga la rama remota (último parámetro) auth_bug

Prueba que tu rama local funciona en esa rama remota usando dcommit con --dry-run (-n):

git svn dcommit -n

Y el servidor SVN debe responder con el nuevo nombre de la rama:

Comprometiéndose a https://scm-server.com/svn/portal/branches/auth_bug ...

 272
Author: Jesper Rønn-Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-05 22:30:16

A partir de git v1.6.1, git svn branch está disponible.

De los documentos de git:

    branch
        Create a branch in the SVN repository.

        -m, --message
            Allows to specify the commit message.

        -t, --tag
            Create a tag by using the tags_subdir instead of the branches_subdir
            specified during git svn init.

Las versiones anteriores de git no proporcionan una forma de crear una rama svn.

 64
Author: kch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-01 14:05:04

@kch I just (7 de diciembre de 2008) compiló la etiqueta v1.6.1-rc1 de git y contiene el comando git svn branch y la documentación correspondiente. Así que la versión v1.6.1 de git debería (con suerte) contener este comando.

 4
Author: Bryan J Swift,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-08 01:05:34