Estoy tratando de usar el espejo git GCC, documentado here."No se puede determinar la información de SVN en sentido ascendente desde el historial de árbol de trabajo"
Hace algún tiempo, me clonó el repositorio git:
git clone git://gcc.gnu.org/git/gcc.git
Agregado el material git-svn:
git svn init -Ttrunk --prefix=origin/ svn+ssh://gcc.gnu.org/svn/gcc
Y luego git svn rebase
y git svn dcommit
etc. todo funcionó muy bien.
Algunos meses más tarde, he hecho varios trabajos de desarrollo en las ramas git locales, y he llegado a cometer más cambios a aguas arriba SVN:
actualización de la miror git:
$ git rebase
Asegúrese de que tengo la absoluta última desde SVN, pero no funciona:
$ git svn rebase -v Unable to determine upstream SVN information from working tree history
¡De alguna manera he roto los metadatos! Además de lo anterior, creo que hice git svn fetch
en algún momento, por error, pero eso no debería ser perjudicial, ¿o sí?
tanto, he intentado crear una rama fresca desde el espejo Git remoto:
$ git branch svntrunk remotes/origin/trunk
$ git checkout svntrunk
$ git svn rebase
Unable to determine upstream SVN information from working tree history
una búsqueda en Internet sugiere que la historia rama se ha desviado de alguna manera desde SVN, pero he comprobado git log
y cada una tiene cometen correspondiente git-svn-id
, lo que parece desmentir eso, ¿no?
Así que probé un nuevo clon de git: //gcc.gnu.org/git/gcc.git, y en ese repositorio git svn rebase
funciona bien. ¿Cómo pueden los dos repos, en los que ambos han tenido git rebase
de la misma fuente, tener un historial diferente? Presumiblemente no pueden, ¿y la diferencia está en los metadatos locales?
Ahora, no quiero destruir el repositorio en el que he estado trabajando (aunque podría) y exportar los parches a otro repositorio para cometer derrotas al punto de tener git-svn en primer lugar. Entonces, ¿cómo puedo repararlo?
+1, muy buena respuesta (de una de sus publicaciones en el blog, ¿quizás ...?). No estoy seguro si es directamente aplicable al problema que se está tratando (para eso, una solución más simple puede ser la más adecuada), pero como un procedimiento aplicable y utilizable para injertar cambios en repositorios en un estado inconsistente, lo apruebo completamente. :) – MrGomez
@MrGomez Espero que haya una solución más simple. :)) Todo lo demás falla, estoy bastante seguro de que funcionaría bien. –
Así que, esencialmente, comienzo desde un repositorio nuevo, inserto mis ramas de tema en la historia de git-svn no rota en el punto correcto a través de un injerto, y uso la rebase para hacer el injerto obsoleto. ¿Obtuve el extremo derecho del palo? – ams