Estoy usando git como scm de elección pero tengo que usar un svn-repo. Puedo crear una remota rama SVN así:Eliminar una rama svn a través de git?
git svn branch the_branch
Pero, ¿cómo puedo eliminar la rama remota?
Estoy usando git como scm de elección pero tengo que usar un svn-repo. Puedo crear una remota rama SVN así:Eliminar una rama svn a través de git?
git svn branch the_branch
Pero, ¿cómo puedo eliminar la rama remota?
Actualmente, no es posible eliminar una rama SVN usando git-svn. Pero es fácil eliminar la rama usando SVN, sin siquiera tener que verificarlo. Por lo tanto, simplemente escriba
svn rm $URL/branches/the_branch
Tenga en cuenta que la supresión de una rama de Subversion no causa que sea eliminado del repositorio git-svn. (Esto es intencional, porque eliminar una rama de Subversion no causa ninguna pérdida de información, mientras que al eliminar una rama de git se olvida su existencia después de la siguiente recolección de elementos basura de git). Por lo tanto, si desea eliminar la rama SVN remota de su git repositorio, hay que hacerlo de forma manual:
git branch -D -r the_branch
rm -rf .git/svn/the_branch
OR
rm -rf .git/svn/refs/remotes/f8745/ (for newer versions)
para eliminar una rama git que corresponde a una etiqueta de Subversion, los comandos son ligeramente diferentes:
git branch -D -r tags/the_tag
rm -rf .git/svn/tags/the_tag
Esto funcionó bien para mí, gracias. No estoy seguro si mi entorno es simplemente diferente o esto se modificó en una versión más reciente de git, pero los directorios de la rama svn se ubicaron en .git/svn/refs/remotes/que fue lo suficientemente simple de encontrar a partir de las instrucciones originales, cambiando el rm comando para:
rm -rf .git/svn/refs/remotes/the_branch
No estoy seguro acerca de las etiquetas ya que no las uso mucho.
Eso solo lo elimina de su vista local. Cualquier otra persona que use el repositorio SVN seguirá viéndolo. – phyzome
@phyzome, esto era un apéndice a la respuesta aceptada de mhagger, que muestra cómo eliminar la rama svn. No puedo creer que hayas votado negativamente por eso. –
Ah, ya veo eso. Esto realmente debería ser un comentario sobre la respuesta de mhagger, por cierto, en lugar de una respuesta de alto nivel. – phyzome
Opps, la respuesta más común fue escrito en 2009, ahora la forma correcta de eliminar una etiqueta a distancia está
svn rm svn://dev.in/branches/ios_20130709150855_39721/
git branch -d -r ios_20130709150855_39721
Eso no es diferente de la respuesta principal, aparte de que está utilizando -d en lugar de -D, que es no forzar la eliminación. –
@JeffSchumacher ha actualizado la respuesta recientemente. – alswl
A partir de 2017, que todavía no tenemos git svn branch --delete
. (-d
opción está ahí pero es for mystic --destination
)
Como se describe en otras respuestas, pasos manuales son:
git log -1 $commit
git-svn-id: $url
líneasvn rm $url
hice un alias para automatizar estos pasos:
[alias]
svn-rm-branch = "!f() { if git_svn_id=\"$(git log -1 --format=%B \"[email protected]\" | grep -o '^git-svn-id:[^@]*')\" ; then svn rm --editor-cmd=\"$(git var GIT_EDITOR)\" \"$(echo $git_svn_id | cut -d' ' -f 2)\" ; else echo No git-svn-id in the message of the commit \"$(git rev-parse \"[email protected]\")\" 1>&2; fi }; f"
Como Stephen C especula con otra respuesta, la estructura exacta del árbol en .git/svn depende de cómo configure su configuración de git-svn. Dicho esto, para las configuraciones más comunes, no debería ser difícil encontrar los subdirectorios adecuados para eliminar. – ipmcc
no 'git gc' o' git svn gc' detectar y eliminar los archivos correctos sin que el usuario tenga que adivinar? –
Ben: los comandos "rm -rf" eliminan los metadatos git-svn para la rama. Esta información no se limpia con "git gc" o "git svn gc". – mhagger