2010-02-21 12 views
6

Per errore ho chiamato "svn import ..." nella directory sbagliata. C'è un modo ragionevole per annullare questo errore?È possibile annullare un'importazione in subversion?

Googling Non ho trovato alcuna risposta utile e il più vicino al mio problema che ho trovato su stackoverflow era importing the correct data to the wrong place, mentre ho importato i dati errati nella posizione corretta.

E: il repository NON è nuovo, quindi eliminarlo è fuori questione.

Sarebbe una specie di ironia se non potessi annullare le operazioni in un sistema di controllo versione. Quindi qualcuno può aiutarmi? (Grazie!)

EDIT: Ho ottenuto il mio deposito memorizzato in un database Berkley, cioè, è nel file system. Guardando la data di modifica di tutti i file/directory e il contenuto dei file appena modificati sono riuscito a capire cosa fare tranne una cosa: qualcuno sa a cosa serve il file txn-current? Immagino sia connesso alla gestione della transazione, ma qual è il significato del suo contenuto (la lunghezza è di 2 byte)?

EDIT 2: Grazie per entrambe le risposte utili. Ho accettato la risposta di Martin in quanto dovrebbe fornire il modo corretto di farlo (dato che sono sotto pressione temporale ho appena cancellato alcuni file come suggerito nel mio primo EDIT ignorando il contenuto di txn-current e vivo fino ad ora). Ma controlla il link che Wim ha dato nel suo commento!

risposta

10

Se non ci fossero altri commit da quando hai importato i file, poi si può facilmente cancellare l'ultima revisione utilizzando svn dump.

L'esempio che segue è tratto da this page:

  • (supponendo revisioni 1-125 sono ok, 126 è che ultima revisione, la causa del problema)
  • fare un backup del repository, quindi il dump del repository (tranne l'ultima revisione):
    • > svnadmin dump -r1:125 myrepo > my.dump
  • ora creare un nuovo repository e caricare la discarica:
    • > svnadmin create myrepo
    • > svnadmin load myrepo < my.dump
11

Non è possibile annullare un commit direttamente, l'unica opzione per questo è quello di fare un svnadmin dump, rimuovere il commit dal dumpfile (sia a mano utilizzando un editor di testo o utilizzando svndumpfilter e svnadmin load di nuovo.

Se non è un problema reale che i dati rimane da qualche parte nel repository come una revisione più vecchio, si può semplicemente svn delete e impegnarsi qualcos'altro.

+0

Grazie, ma ci sono stati alcuni binari nella directory sbagliata e mi piacerebbe sbarazzarsi di loro. Come posso rimuovere i dati usando il dump? –

+2

Una versione precedente del libro SVN ha ulteriori informazioni sull'utilizzo di svndumpfilter: http://svnbook.red-bean.com/en/1.2/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svndumpfilter – Wim

+0

Link molto utile, grazie ancora! Sono su un percorso diverso nel momento (vedi la prossima modifica della mia domanda), ma se non funziona, proverò svndumpfilter. –

Problemi correlati