Tengo un repositorio git que rastrea un repositorio svn. Lo cloné usando --stdlayout
.
Creé una nueva sucursal local a través de git checkout -b foobar
Ahora quiero que esta rama termine …/branches/foobar
en el repositorio svn.
¿Cómo hago para eso?
(recortó mucho texto de investigación. vea el historial de preguntas si le importa)
Respuestas:
Sé que esta pregunta ha sido respondida hace un tiempo, pero después de leerla, podría ayudar agregar ejemplos del comando de rama específico git svn y relacionarlo con un flujo de trabajo típico.
Como kch respondió, usa
git svn branch
. Aquí hay un ejemplo completo, (tenga en cuenta el funcionamiento-n
en seco para probar):Si esto va bien, el servidor responde con una respuesta como esta:
Y sin el
-n
interruptor, el servidor probablemente agrega algo como:La mejor parte es que ahora puede crear una sucursal local basada en su sucursal remota de la siguiente manera:
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 de que su rama local trabaja en esa rama remota mediante el uso de
dcommit
la--dry-run
(-n
):Y el servidor SVN debería responder con el nuevo nombre de la sucursal:
fuente
git co
con elgit checkout
fin de que el ejemplo puede trabajar para nadiegit-svn branch
comando: debe estar en línea para crear una nueva rama de esta manera. Puede hacer lo siguiente sin conexión: 1.git checkout -b foobar
2. hack-hack-hack 3git commit -m "Done foobar"
.. Y cuando esté en línea, empuje este cambio haciendo 1.git svn branch foobar
2.git branch --set-upstream foobar remotes/foobar
3git svn dcommit
..git checkout -b foobar-new remotes/foobar
. 3.git checkout foobar
4.git rebase foobar-new
5. Para probar para asegurarse de que la rama ahora se compromete con la rama svn.git svn dcommit --dry-run
6. Finalmente comprometersegit svn dcommit
7. Eliminar la rama temporalgit branch -D foobar-new
a partir de git v1.6.1,
git svn branch
está disponible.De los documentos de git:
Las versiones anteriores de git no proporcionan una forma de crear una rama svn.
fuente
@kch Acabo de (7 de diciembre de 2008) compilar la etiqueta v1.6.1-rc1 de git y contiene el comando de rama git svn y la documentación correspondiente. Entonces, la versión v1.6.1 de git debería (con suerte) contener este comando.
fuente