2010-06-22 29 views
6

Estoy probando git-svn y aparece el siguiente error. Lo que he hecho hasta ahora esgit-svn error de compromiso: no se puede determinar la información de SVN en sentido ascendente

git svn init -T <my svn repo> 

entonces he estado cometiendo a mi repositorio con

git commit -a 

continuación, una vez que hice unos pocos de los que hice un

git svn fetch 

y luego probé un

git svn dcommit 

Ho Wever, que falla con

Unable to determine the upstream SVN information from HEAD history. Perhaps the repository is empty

también puedo ver que los archivos en mi sistema de archivos no están marcados como siendo utilizado por SVN (no estoy seguro si esto sucede o no) sin embargo. Si navego por el repositorio svn (con el navegador repo) puedo ver que los archivos originales están allí.

Después de este error original probé rebasing sin mucho éxito (arroja algún otro error).

+0

Supongo que esto está relacionado con el hecho de que el repositorio SVN está vacío al principio. No estoy seguro de si esto es una limitación de git-svn. – usr1234567

Respuesta

1

Los comandos git svn son similares a tratar con un control remoto normal (el control remoto svn se llama git-svn). fetch simplemente descarga commits desde el control remoto, no los conecta a su árbol de ninguna manera. Funcionará si recuperas justo después de ingresar, ya que aún no tienes un árbol, pero has cometido primero. Desea utilizar git svn rebase, que reubicará su árbol en el encabezado svn. Normalmente usted git svn fetch justo después de git svn init, o simplemente use git svn clone, que hace ambos. Una vez que el depósito inicial se estableció que sólo puede utilizar git svn rebase todo el tiempo, que va a buscar y rebases en una sola operación

+2

hola Michael. gracias por la explicación . No sabía que necesitaba rebase antes de comenzar a comprometerme con el repositorio git. Probé giot svn rebase (como dije en mi publicación) pero arroja Imposible determinar la información SVN en sentido ascendente desde el árbol de árbol de trabajo – roundcrisis

+0

@Miau No estoy seguro de cómo arreglar tu repositorio existente; es posible que necesite crear uno nuevo y configurar el svn remote correctamente * antes de * cometer algo –

+0

Una cosa que podría hacer es intentar guardar sus confirmaciones como parches y luego hacer un 'git reset --hard'. Luego haga 'git svn fetch' y' git svn rebase' para obtener las actualizaciones de flujo ascendente. Luego aplique sus parches y comprométase. Esto ** puede ** funcionar. – yasouser

0

Sólo una conjetura, tratar git clone SVN, a continuación, cambiar/commit archivos, a continuación, git svn dcommit. Esta es la forma en que generalmente lo hago y funciona (en mi caso).

+0

¿Esto también funciona con un repositorio SVN, que no tiene ninguna confirmación aún? – usr1234567

3

He descubierto que, cuando el repositorio SVN estaba vacía git-svn lanza

Unable to determine upstream SVN information from HEAD history

Así, utilizando sVN he comprobado en un archivo de texto como el primer commit

svn add test.txt; svn commit -m "test file" 

entonces yo era capaz de hacer un clon de git svn y que todo fija.

1

Este sitio me solucionó el problema: http://eikke.com/importing-a-git-tree-into-a-subversion-repository/. cita directa:

The issue is that the SVN metadata has been lost. To fix this, we can use a Git graft to link them. We’ll tell Git the commit which created the SVN folder in which we want to store the project is the parent commit of the first commit in our Git repository:

$ git show-ref trunk 
> 741ab63aea786882eafd38dc74369e651f554c9c refs/remotes/trunk 
$ $ git log --pretty=oneline master | tail -n1 
> 88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 Initial version 
$ echo "88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 741ab63aea786882eafd38dc74369e651f554c9c" >> .git/info/grafts` 
1

Is it a general git-svn limitation? Or exists the problem between keyboard and chair?

Este mensaje de error se introdujo en Git 1.5.1 (febrero de 2007) por commit a8ae262

Since you're committing from HEAD (or another commit that is a parent of HEAD), you'll be able to find a commit with metadata information containing the SVN URL that your HEAD was descended from anyways.

necesidades Así git para encontrar una confirmación incluyendo el SVN URL para que un compromiso de una de sus sucursales funcione correctamente.

Or exists the problem between keyboard and chair?

Eso puede suceder si selecciona uno de su sucursal creada antes git svn clone. Necesita trabajar con ramas creadas encima de las importadas desde SVN por git svn clone.

+0

Con otras palabras: Git-svn no puede manejar repositorios de Subversion vacíos. – usr1234567

+0

@ usr1234567 de hecho, ese parece ser el caso. – VonC

Cuestiones relacionadas