2009-09-15 15 views
10

Tengo un repositorio git-svn desnudo e hice un 'git svn fetch' en él.¿Cómo actualizar 'git log' después de 'git svn fetch' en un repositorio desnudo?

Al ejecutar 'git log' no se muestran las actualizaciones. Estoy seguro de que hay actualizaciones, ya que muestran los archivos cambiados después de 'git svn fetch' y 'git svn log' también los muestra.

Tenga en cuenta que hice este repositorio a propósito para que 'git rebase' no funcione. ¿Cuál es el comando apropiado para obtener los cambios obtenidos?

Respuesta

8

Trate git log git-svn - No No tengo un repositorio desnudo, pero acabo de ejecutar git svn fetch, y el estándar git log me da el registro actual (rebasado), pero con el git-svn arg (que es la otra rama además del maestro que se identifica por git branch -a en mi caso) Obtengo el registro para th e ir a la revisión

+0

Sí, tienes razón. 'git log' busca la referencia maestra y es por eso que funcionó en 'git symbol-ref refs/heads/master refs/remotes/git-svn'. Gracias. – vjangus

+0

Esto tampoco funciona en git 1.7.5.4 – MDCore

6

he encontrado la respuesta,

git simbólico-ref refs/heads/refs maestro/mandos a distancia/git-svn

Gracias a los comentarios de Steven Walter en http://gsocblog.jsharpe.net/archives/12

+0

Esto ya no funciona en git 1.7.5.4 – MDCore

+0

me funciona !!! –

17

A git svn fetch agrega una nueva rama remota llamada remotes/git-svn (como se puede ver en git branch -a).

Si realiza cambios en el svn ascendente, ejecute git fetch nuevamente, los cambios se obtienen (en realidad, se obtienen) en esta rama, no en el maestro.

Así que para hacer que git log (y todo lo demás) funcione bien en la rama principal solo necesita una fusión, como normalmente lo haría después de una búsqueda (esto es lo que hace git pull, una búsqueda y luego una fusión)

Dado que git svn pull no funciona, deberá fusionarlo manualmente. Mientras que en la rama principal, ejecute:

git merge remotes/git-svn

Esto se fusionará con su oficina principal con la rama git-svn, haciendo que todo bien de nuevo.

lo tanto, en el futuro, ejecute

git svn fetch 
git merge remotes/git-svn 

y estará al día con el depósito de aguas arriba una vez más.

Establecer la referencia de la cabeza del maestro a la cabeza de git-svn según lo sugerido por vjangus también hará que esto funcione, pero nunca deberías hacer cambios en una rama remota.

+1

Esta fue la respuesta que abordaba correctamente la situación que estaba teniendo. – Ian

+0

Inicialmente había sacado el repositorio svn por 'git svn fetch -s --prefix = origin /', así que en mi caso había una rama 'remotes/origin/trunk' en lugar de' git-svn'. La misma solución sin embargo. – mcmlxxxvi

Cuestiones relacionadas