2009-08-13 8 views

Respuesta

29

(Realizado "cuestión" de Chad como respuesta, el formato fijo y errores tipográficos.)

Hay un par de causas para este mensaje de error.

El primero, siendo el más común. Tienes dos historias disjuntas en tu repositorio de git: la historia que creaste en git, y el historial desde el repositorio de svn remoto.

Para arreglar esto, necesitas hacer que tu repositorio git y el repositorio svn compartan un antecesor común para que git pueda calcular qué commits ha cambiado qué.

La siguiente Article, discute cómo solucionar el problema:

La segunda posible causa del problema es si usted tiene una primera versión de Git (posibles, ventanas paquete msysGit) y que acaba de crear un nuevo git repositorio que se comunica con un repositorio svn remoto.

Por ejemplo:

git svn init svn://svn.xxx.xxx/xxx/trunk 
git svn fetch -r BASE:10 

o

git clone svn://svn.xxx.xxx/xxx/trunk // Adds all the files in the revision... 

y se obtiene el mensaje de error de seguimiento, cuando se utilizan los siguientes comandos.

git svn info 

No se puede determinar la información de SVN aguas arriba del árbol de trabajo o

git svn rebase 

no puede determinar la información de SVN aguas arriba de trabajo historia árbol o

git svn dcommit 

No se puede determinar la información de SVN aguas arriba de la historia CABEZA

Si recibe los mensajes de error anteriores, f El primer paso es verificar tu versión de git. Si está ejecutando una versión anterior de git < = 1.6.3.3. * Que estaba en mi caso con (msysGit), entonces la forma más fácil de solucionar el problema es actualizar a una versión más nueva de git como 1.6.4. *.

El siguiente Article analiza el problema con más detalle.

+0

Gracias por la edición bstpierre – Chad

+0

Gracias por el enlace al artículo, que me permitió hacer un cambio de hacer un repositorio de svn diferente y ahora estoy de vuelta en el negocio! –

+1

Para el primer caso común, las instrucciones en el artículo están desactualizadas. El póster aquí tiene instrucciones actualizadas para los principiantes de git http://stackoverflow.com/questions/457694/how-to-commit-a-git-repo-to-an-empty-repo-svn-server/981765#981765 – James

24

recibí este mensaje debido a la clonación del repositorio svn con la opción --no-metadata. Quizás ese también sea el caso de Tu problema.

Al clonarlo sin esa opción todo está bien.

La opción --no-metadata está destinada a clonar un repositorio SVN cuando el nuevo clon git se convierta en la fuente canónica en el futuro. Carece de la capacidad de volver a comprometerse con el SVN en sentido ascendente, porque no tiene forma de seguir las diferencias entre el clon git y el SVN en sentido ascendente.

+0

Esto es lo que hice. –

9

Tengo este mensaje después de que incorrectamente añadió el parámetro -s/--stdlayout al comando git svn clone de un acuerdo de recompra de Subversion que hizo no tienen el "diseño de Subversion estándar" de trunk, tags, y branches rutas relativas.

(Los repos de Subversion que suelo clonar tienen las rutas relativas estándar, así que cuando cloné un repositorio de Subversion que no los tenía usando mi comando habitual git svn clone, recibí este mensaje críptico. El mensaje es 100% correcto, pero casi inútil al 100% cuando intenta averiguar cuál es el problema.)

+0

Me encontré con este problema porque había agregado/trunk a la url svn mientras hacía 'git svn clone' con la opción' -s'. Entonces, aunque no es exactamente lo mismo que tu situación, tu comentario me ayudó a descubrir mi error. ¡Gracias! – jeroen

2

Otra causa de este problema es una opción incorrecta svn-remote.svn.rewriteRoot (consulte this answer para obtener instrucciones sobre cómo usar esto).

La línea git-svn-id en sus confirmaciones importadas de Subversion tiene que coincidir con la URL rewriteRoot si está configurada.

+1

¡El simple svn URL switcheroo de la respuesta enlazada aquí funcionó! – lkraav

14

En mi caso, la cabeza del repositorio SVN deberían haberse adaptado a la cabeza desde el repositorio git. This debería resolver el problema:

git update-ref refs/remotes/git-svn refs/remotes/origin/master 
+4

Esto no solucionó mi problema. –

+1

Esto solucionó mi problema. –

2

Tengo este mensaje porque he usado un nombre de dominio completo para el comando git svn init pero el preexistente integración git-svn estaba usando sólo el nombre de host.

E.g. grep git-svn-id mostraron:

git-svn-id: svn://host/repo/... 

pero lo hice: (. Tenemos una máquina que se sincroniza regularmente un repositorio git con SVN, a continuación, todos los demás tienen git config --add remote.origin.fetch refs/remotes/*:refs/remotes/* a buscar por el SVN ramas sincronizados)

git svn init -Ttrunk svn://host.domain.com/repo 

+0

¿Cómo lo arreglaste? – jpaugh

+0

@jpaugh, ejecute 'git svn init' con una URL que coincida exactamente con el valor' git-svn-id'. –

+0

Entonces, ¿quieres decir que no puedes arreglarlo? Tienes que reconstruir el repositorio? – jpaugh

7

también puede obtener este error, cuando se tiene checkout recién creado repositorio SVN.

He resuelto este por

  1. En primer lugar hacer una inicial cometen a través de comandos svn
  2. Entonces clonar el repositorio usando el comando git svn.
8

conseguido mismo problema, aquí está la solución basada en http://eikke.com/importing-a-git-tree-into-a-subversion-repository/ artículo:

$ git svn init http://server.com/svn/project/trunk/prototypes/proto1/ 
$ git svn fetch 
    W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/!svn/bc/100/dcom/trunk/prototypes/ws' path not found 
    W: Do not be alarmed at the above message git-svn is just searching aggressively for old history. 
    This may take a while on large repositories 
    r147367 = 37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d (refs/remotes/git-svn) 
$ svn log http://server.com/svn/project/trunk/prototypes/proto1/ 
    ------------------------------------------------------------------------ 
    r147367 | user | 2014-01-16 18:02:43 +0100 (Thu, 16 Jan 2014) | 1 line 
    proto1 home 
    ------------------------------------------------------------------------ 
$ git log --pretty=oneline master | tail -n1 
    71ceab2f4776089ddbc882b8636aacec1ba5e832 Creating template 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #1 

$ git show-ref git-svn 
    37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d refs/remotes/git-svn 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #2 

$ echo "71ceab2f4776089ddbc882b8636aacec1ba5e832 37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d" >> .git/info/grafts 

$ git svn dcommit 
    Committing to http://server.com/svn/project/trunk/prototypes/proto1 ... 
    A README.md 
    A pom.xml 
A src/main/java/.gitkeep 
A src/main/resources/.gitkeep 
A src/main/webapp/WEB-INF/web.xml 
A src/main/webapp/index.html 
A webapps/.gitkeep 
    Committed r147419 
    A README.md 
    A pom.xml 
A src/main/java/.gitkeep 
A src/main/resources/.gitkeep 
A src/main/webapp/WEB-INF/web.xml 
A src/main/webapp/index.html 
A webapps/.gitkeep 
    r147419 = 6a8bda7262739306d0a6e17eaad2802737dedc35 (refs/remotes/git-svn) 
    No changes between current HEAD and refs/remotes/git-svn 
    Resetting to the latest refs/remotes/git-svn 
    Unstaged changes after reset: 
    M pom.xml 
    M src/main/webapp/index.html 
    A .gitignore 
    Committed r147420 
    M pom.xml 
    M src/main/webapp/index.html 
    A .gitignore 
    r147420 = 749b5acec55c341672bca08d07de8c336b5a4701 (refs/remotes/git-svn) 
    No changes between current HEAD and refs/remotes/git-svn 
    Resetting to the latest refs/remotes/git-svn 
    ...etc... 
0

Otra posible causa: Si usted tiene un conjunto de configuración SVN-remote..rewriteUUID, git-svn puede tener problemas para localizar el metadatos correctos para el repositorio. Por ejemplo, es posible que tenga algo como esto (véase la página del manual git-svn para una discusión de por qué usted quiere hacer esto):

[svn-remote "svn"] 
    url = svn://read-write.test.org 
    fetch = trunk/project:refs/remotes/trunk 
    rewriteRoot = http://read-only.test.org/svn 
    rewriteUUID = 1234-abcd 

... donde 1234-abcd es el UUID de la lectura solo espejo Cuando 'git svn ir', que podría terminar con este archivo:

.git/svn/refs/remotes/trunk/.rev_map.5678-dcba 

... donde 56780-dcba es el UUID del repositorio de lectura-escritura.La solución es:

$ mv .git/svn/refs/remotes/trunk/.rev_map.5678-dcba \ 
    .git/svn/refs/remotes/trunk/.rev_map.1234-abcd 

no se puede decir con certeza si esto es una solución duradera, es decir, que podría confundirse próxima vez que git svn ir ". Podría intentar un enlace simbólico en lugar de 'mv', no he experimentado con eso.

Cuestiones relacionadas