2011-08-25 12 views
16

Cuando ejecuto ungit-svn ir a buscar no está tirando en las últimas versiones

git svn fetch

de mi repositorio, no devuelve nada y no actualiza a pesar de que hay nuevas confirmaciones bajo SVN.

[root]# svn log -l 1 http://example.com/trunk/client-resources/resource-pa 
    r12958 | ing | 2011-08-22 18:29:57 -0500 (Mon, 22 Aug 2011) | 1 line 
    SRGENERAL-1468 adding more arrays for pa 
[root]# git-svn fetch 
[root]# git log -1 
    commit be19ae4c7d1a3c3da6dd90389aebd6d76792cc71 
    Author: sltin <[email protected]> 
    Date: Wed Jun 22 14:30:53 2011 +0000 

    Fixing the classpath. 

    git-svn-id: http://example.com/trunk/client-resources/[email protected] 44b83e5a-25ef-0310-8dbe-ee0aa4f92a64 

Tenga en cuenta las diferencias de versión. El registro de SVN enumera 12958 y el registro de CVS Listas de la última versión SVN como 12406.

que pueda hacer un reset a 12406 y luego ir a buscar una nueva:

[root]# git svn reset 12406 
    r12406 = be19ae4c7d1a3c3da6dd90389aebd6d76792cc71 (refs/remotes/git-svn) 
[root]# git svn fetch 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12977 = 1b21f560b0354b28fe1a272d7723b1e6fa90a99c (refs/remotes/git-svn) 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12978 = bf22ea0151a364eb1ca1af37a7a907d5b5cc7420 (refs/remotes/git-svn) 
     M  src/test/java/csl/resource/ioc/AbstractResourceIocTest.java 
    r12987 = ce922c2eae07f6c12dbbd4175a9c61055b563ee3 (refs/remotes/git-svn) 

Y cuando puedo comprobar las versiones de registro, ellos no han cambiado

¿Cómo consigo git-svn para obtener las últimas versiones de svn?

Editar:

I encontró la respuesta, los datos SVN se carga a una rosca inactivo que normalmente se fusionó en la rama activa, que no existe en un repositorio desnudo. Intenté hacer un reinicio, pero eso también requiere una rama activa. La respuesta final fue:

git reset --soft refs/remotes/git-svn 
+1

el repositorio git estoy tirando de los datos en que en un repositorio desnudo que sólo alguna vez conseguir leer (no hay dcommits) por lo que ni siquiera permitir que un rebase. – Starkii

+0

Además, "git svn log -1" devuelve la versión correcta, pero "git log -1" no y la versión actualizada no está en el repositorio. – Starkii

+0

Starkii: tienes que distinguir entre 'git-svn' y' git'. 'git log' muestra el de la confirmación actual de git (' HEAD'), 'git svn log' usa información obtenida a través de los metadatos svn y muestra el registro para el - no necesariamente accesible desde HEAD - svn confirma. – knittl

Respuesta

6

Encontré la respuesta, los datos svn se cargan en un hilo inactivo que normalmente se fusionaría en la rama activa, que no existe en un repositorio simple. Intenté hacer un reinicio, pero eso también requiere una rama activa. La respuesta final fue:

git reset --soft refs/remotes/git-svn 
+0

pregunta estúpida, pero ¿lo haces después de la captura de git svn, o antes? –

4

Creo que quieres git svn rebase. Esto es diferente de git pull, pero similar en el sentido de que ambos implican dos pasos (búsqueda desde remoto y luego rebase o combinación).

También puede rebasar única ya compromete inverosímiles:

git svn rebase --local 

Si tiene commits locales que aún no están en el SVN, Git-SVN se volverá a reproducir (rebase) en la parte superior de los más nuevos SVN se compromete.

23

git svn fetch solo copia nuevas revisiones en su base de datos de objetos local, de forma muy similar a git fetch - ambas solo sincronizan bases de datos de objetos. No actualizará su sucursal y copia de trabajo. Para obtener los cambios recién recuperados en su sucursal, use git svn rebase; volverá a aplicar todos los cambios locales además de la última revisión de svn.

git svn rebase hará un avance rápido cuando no haya confirmaciones locales, por lo que no debería interferir con el historial. Otra posibilidad es utilizar git merge --ff-only git-svn para avanzar rápidamente a la revisión más reciente SVN (y abortar cuando no es rápido remitible, es decir, no un descendiente directo)

Sólo debe utilizar git svn reset cuando SVN aguas arriba ha cambiado la historia (svndump/svnadmin) y necesita volver a buscar los nuevos commits, pero esto casi nunca debería pasar (de lo contrario culpar al administrador!)

Cuestiones relacionadas