Estoy usando git-svn
para trabajar con un repositorio SVN. Mis copias de trabajo se han creado usando git svn clone -s http://foo.bar/myproject
para que mi copia de trabajo siga el esquema de directorio predeterminado para SVN (troncales, etiquetas, ramas).git-svn: reset tracking para el maestro
Recientemente he estado trabajando en una sucursal que se creó utilizando git-svn branch myremotebranch
y se retiró utilizando git checkout --track -b mybranch myremotebranch
. Necesitaba trabajar desde múltiples ubicaciones, por lo que desde la rama I git-svn dcommit
-ed archivos al repositorio SVN con bastante regularidad.
Después de terminar mis cambios, volví a cambiar al maestro y ejecuté una combinación, comprometí la fusión e intenté realizar la fusión exitosa con el enlace troncal remoto.
Parece como si después de la fusión del seguimiento remoto para el maestro ha cambiado a la rama que estaba trabajando:
# git checkout master
# git merge mybranch
... (successful)
# git add .
# git commit -m '...'
# git svn dcommit
Committing to http://foo.bar/myproject/branches/myremotebranch ...
#
¿Hay alguna manera de actualizar el maestro de manera que está siguiendo remotes/trunk
como antes de la fusión?
Estoy usando git 1.7.0.5, si eso sirve de algo.
Sería útil si también pudiera explicar por qué esto sucedió, por lo que puedo evitar que el problema vuelva a suceder. ¡Gracias!
Editar:
Aquí está mi actual .git/config
:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
autocrlf = false
[svn-remote "svn"]
url = http://foo.bar/myproject
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
[branch "mybranch"]
remote = .
merge = refs/remotes/myremotebranch
por lo que parece que el tronco está apuntando al lugar correcto. Sin embargo, cambiar a la rama y luego regresar al maestro no ayuda; git svn dcommit
en el maestro todavía intenta presionar a myremotebranch
.
buen punto en el '--no-ff'. +1 – VonC
Para aclarar, si entiendo, git usa la confirmación de que el puntero "maestro" está activado para decidir a qué rama de SVN comprometerse. Es por eso que el paso de compromiso de SVN falla, ya que después de completar la fusión, y 'mybranch' y 'master' están en la misma confirmación. Ese compromiso se creó originalmente a partir de la rama SVN 'myremotebranch'. – cmcginty
No creo que la creación de un nuevo compromiso de fusión ayude a aclarar las cosas, ya que la información de fusión se perderá cuando se propague al repositorio svn de todos modos. –