2011-01-12 22 views
7

que estoy tratando de hacer git svn dcommit, sin embargo, un directorio sigue fallando en mí y por lo tanto deja de mi comprometo y continuar recibiendo este error:Cómo reparar "archivo no encontrado" en git svn dcommit?

Filesystem has no item: File not found: transaction '43999-6', path '/path/to/folder' at /usr/local/git/libexec/git-core/git-svn line 572

He intentado añadir la carpeta de vuelta en pero continúo consiguiendo ese error ¿Puedo eliminar una confirmación del árbol para eludir esto? No estoy seguro de qué más hacer aquí.

edición
algunos de los siguientes no responden plenamente a mi pregunta, pero parecen estar en la dirección correcta:

El último problema parece ser lo que quería, pero con el tamaño de mi repo (la última vez, me llevó todo un día de trabajo para pagar todo), y la pequeña cantidad de trabajo que habría perdido con solo hacer una hard restablecer (que en última instancia parecía hacer el truco), fui por la opción de reinicio hard.

+0

¿Está accediendo a su svn repo a través de https? –

+0

no, esto se configuró en solo http. – hellatan

Respuesta

1

No creo que git-svn realmente admita el cambio de nombre de archivos. Recibo este error cada vez que intento cambiar el nombre de algo. Siempre termino por cambiarle el nombre con svn y luego rebase con git-svn.

actualización

Esto es probablemente debido al hecho de que git-svn no juega bien con espacios en las URL. A menudo tengo que cambiar el nombre de las rutas del proyecto para que funcionen con git-svn. Por supuesto, esta no es una solución aceptable para proyectos que realmente tienen otras personas trabajando en ellos. Para aquellos simplemente tengo que recurrir a usar svn para mover archivos. Es una gran molestia.

+0

por lo que está diciendo que ni siquiera puede cambiar el nombre en 'git' y luego hacer un' git svn dcommit' para svn para ver sus cambios? – hellatan

+0

Creo que se supone que funciona, pero no funciona para mí. Obtengo errores de archivo no encontrado cuando intento comprometerme. –

+0

hmmm ... me imagino que estaría bien. Tendré que mirar eso yo mismo y ver qué sucede cuando lo intento. – hellatan

1

reinicio SVN --hard no funcionó para mí

la razón de esto es que cuando se hace una dcommit a SVN, parece que la confirmación de que elimina el archivo parece estar hecho tanto en Git y SVN al mismo tiempo, pero el enlace se pierde.

La solución que funcionó para mí fue restablecer el maestro a la confirmación antes del problema, luego fusionar todos los commits sucesivos a maestro (excepto el defectuoso), luego rehacer la eliminación del archivo. puede haber una solución más elegante ...

nota al margen: git svn DOES svn renombra/mueve los archivos correctamente. (ya sea tortoisegit + mysgit o jgit/egit) lo hace automágicamente todo el tiempo;)

1

Pude solucionar el problema de git svn no trabajando para repositorios con espacios en ellos parcheando git-svn.

He actualizado a la función url_path:

sub url_path { 
    my ($self, $path) = @_; 

    my $url = $self->{url} . '/' . $self->repo_path($path); 
    if ($self->{url} =~ m#^https?://#) { 
    $url =~ s!([^~a-zA-Z0-9_./-])!uc sprintf("%%%02x",ord($1))!eg; 
    $url =~ s!^(https?)%3A//!$1://!; 
    } 
    $url 
} 

Esto asegura que los espacios en la dirección URL se codifican correctamente.

Parece que me funciona, pero no se ha probado a fondo.

1

Creo que el problema debe fijarse en Git> = 1.8.0

Debe tener en cuenta para actualizarlo.

Principal: https://github.com/git/git

+0

¿Podría tener una identificación de defecto para ese problema? –

+0

@PatriceM. No pude encontrarlo, porque git no usa ningún rastreador de errores, solo lista de correo. Sin embargo, por lo que recuerdo al instalar git 1.8.x, se resolvió el problema con el manejo del espacio en los nombres de los archivos. – kenorb

+0

Como referencia, actualmente estoy experimentando este problema (espacios en una carpeta SVN) con Git 2.4.1 y SVN 1.8.13 – Azuvector

0

sé que esto es una cuestión de edad, pero tuve este problema exacto recientemente y quería compartir cómo he solucionado el problema. Es cierto que esta no es una buena solución, pero me permitió completar mi compromiso. Hice lo siguiente:

  1. Agregué la carpeta/archivo bajo reclamo nuevamente a svn usando svn.
  2. Cometí mi código original de git a svn (git svn dcommit --rmdir)
  3. Se eliminó la carpeta/archivo en git y se lo asignó a svn.

Esto significaba que tenía un 2 commits pequeños adicionales, uno para agregar y luego otro para eliminar la carpeta/archivo ofensivo pero después de esto todo funcionó como se esperaba de nuevo. Sé que esta no es una buena solución y no aborda la raíz del problema, pero al menos me permitió confirmar mi código. Con suerte, esto puede ayudar a alguien más en esta situación que necesita una solución rápida.

Cuestiones relacionadas