2010-01-20 24 views
6

Utilizamos svn, y uso git-svn para mantener la cordura. En un momento, nuestro servidor svn decidió devolver un 403 para una determinada carpeta. Le pasó a todos, no solo a mí.Necesito quitar algunas revisiones de git-svn

Debido a esto, no puedo hacer una rebase de git-svn. Veo este error:

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 
    M test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java 
    M test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java 
    M test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java 
    M system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql 
    M pom.xml 
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845) 

El archivo que se queja al final se encuentra en la carpeta que se devuelve un 403 cuando tuvimos el error. En mi sistema de archivos, la carpeta service/activity-service no existe. Creo que está intentando modificar el archivo (así es como se ve el cambio en svn), pero como el archivo no existe, simplemente explota.

Así que creo que si puedo eliminar las revisiones anteriores y luego volver a buscarlas, podría funcionar. Simplemente no estoy seguro de cómo hacer eso. Intenté reajustar de forma interactiva y luego eliminar un grupo, pero eso no funcionó.

Entonces, ¿alguien sabe cómo quitar las versiones ya recuperadas?

Respuesta

8

Primero haga una copia de seguridad de su directorio .git.

Elimine el archivo .rev_map.$UUID para la rama de problema, debajo de .git/svn; y rebobinar la rama generada git-svn que representa la rama del problema (generalmente, trunk). Para rebobinar la rama, ejecute git pack-refs --all, git log $BRANCH, busque la confirmación antes de la confirmación del problema y edite .git/packed-refs para que la rama apunte a la confirmación anterior. Luego ejecute git svn fetch. Reconstruirá el mapa rev desde su sucursal rebobinada existente, y luego buscará las confirmaciones svn que aún no tiene, incluida la confirmación del problema. Ahora debería poder volver a establecer la base y comprometerse normalmente.

9

Una mejor manera de hacer esto ahora es git svn reset -r <rev> donde rev es la revisión antes donde desea comenzar a re-cargar. Una vez hecho esto, ejecute git svn fetch y reconstruirá su índice y volverá a buscar las revisiones después de rev.

Cuestiones relacionadas