2011-01-12 8 views
7

Sto cercando di fare git svn dcommit, tuttavia, una directory continua a fallire su di me e di conseguenza si ferma il mio impegno e continuo a ottenere questo errore:Come risolvere "file non trovato" su 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

Ho provato ad aggiungere la cartella di nuovo in, ma io continuo a ottenere quell'errore posso rimuovere un commit dall'albero per aggirare questo? Non so cos'altro fare qui.

modificare
alcuni dei seguenti non rispondere pienamente alla mia domanda, ma sembrano essere nella giusta direzione:

L'ultimo numero sembra essere quello che volevo, ma con le dimensioni del mio repo (l'ultima volta, mi ci è voluto un intero giorno di lavoro per controllare l'intera cosa), e la piccola quantità di lavoro che avrei perso semplicemente facendo un Reset hard (che alla fine sembrava fare il trucco), sono andato per l'opzione di reset hard.

+0

Stai accedendo al tuo repository SVN tramite https? –

+0

no, questo è stato impostato su http. – hellatan

risposta

1

Non credo che git-svn supporti effettivamente la ridenominazione dei file. Ottengo questo errore ogni volta che provo a rinominare qualcosa. Finisco sempre per doverlo rinominare con svn e poi rebase con git-svn.

Aggiornamento

Ciò è probabilmente dovuto al fatto che git-svn non gioca bene con gli spazi negli URL. Devo spesso rinominare i percorsi del progetto per farli funzionare con git-svn. Naturalmente, questa non è una soluzione accettabile per i progetti che in realtà hanno altre persone che lavorano su di essi. Per quelli, devo semplicemente ricorrere all'utilizzo di svn per spostare i file. È una seccatura enorme.

+0

quindi stai dicendo che non puoi nemmeno rinominarlo in 'git' e poi fare un' git svn dcommit' per svn per vedere le tue modifiche? – hellatan

+0

Penso che dovrebbe ma non funziona per me. Ricevo errori di file non trovati quando provo a dcommit. –

+0

hmmm ... immagino che andrebbe bene. Dovrò guardarlo da solo e vedere cosa succede quando provo. – hellatan

1

ripristino svn --hard non ha funzionato per me

la ragione di questo è che quando si fa una dcommit per svn, sembra che il commit che ha cancellato il file sembra essere fatto sia in git e svn allo stesso tempo, ma il collegamento è perso.

La soluzione che ha funzionato per me è stato quello di ripristinare master per il commit prima che il problema, poi unire tutte le sucessive commettere di nuovo al master (ad eccezione di quello difettoso), quindi ripetere l'eliminazione dei file. potrebbe esserci una soluzione più elegante ...

nota a margine: git svn DO svn rinomina/sposta i file correttamente. Esso (sia tortoisegit + mysgit o jgit/egit) lo fa automaticamente tutto il tempo;)

1

Sono stato in grado di aggirare il problema di git svn che non funziona per gli archivi con spazi in essi patching di git-svn.

ho aggiornato la funzione url_path a:

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 
} 

Questo garantisce che gli spazi nel URL sono codificati correttamente.

Sembra funzionare per me, ma non è stato testato a fondo.

1

Credo che il problema dovrebbe essere risolto in Git> = 1.8.0

Si dovrebbe prendere in considerazione per aggiornarlo.

Home page: https://github.com/git/git

+0

Avresti forse un ID difetto per quel problema? –

+0

@PatriceM. Non riuscivo a trovarlo, perché git non usa alcun bug tracker, solo mailing list. Tuttavia, per quanto ricordo durante l'installazione di git 1.8.x, il problema con la gestione dello spazio nei nomi dei file è stato risolto. – kenorb

+0

Per riferimento, attualmente sto riscontrando questo problema (spazi in una cartella SVN) con Git 2.4.1 e SVN 1.8.13 – Azuvector

0

So che questa è una vecchia questione, ma ho avuto questo problema esatto di recente e ha voluto condividere come ho risolto il problema. Certo, questa non è una buona soluzione, ma mi ha permesso di completare il mio impegno. Ho fatto quanto segue:

  • Aggiunta la cartella/file sotto denuncia in svn usando svn.
  • Impegnato il mio codice originale da git a svn (git svn dcommit --rmdir)
  • Ha eliminato la cartella/file in git e l'ha commesso in svn.
  • Ciò significava che avevo 2 piccoli commit in più, uno da aggiungere e poi un altro per rimuovere la cartella/file incriminata, ma dopo tutto ciò ha funzionato come previsto. So che questa non è una soluzione carina e non affronta la radice del problema, ma almeno mi ha permesso di impegnare il mio codice. Speriamo che questo possa aiutare qualcun altro in questa situazione che necessita di una soluzione rapida.