it-swarm-eu.dev

Vuoi eliminare le revisioni dal mio repository SVN

Le ultime revisioni nel mio repository di codice sono state danneggiate e hanno destabilizzato la mia app. Voglio tornare a una revisione precedente.

Ma non voglio semplicemente usare 'ripristina' sulla mia copia di lavoro; In realtà voglio cancellare la mia revisione principale e diverse revisioni prima nel mio repository, quindi "ripristinando" il mio repository su una revisione precedente, che sarebbe diventata la revisione principale. Qualcuno sa come lo farei?

33
Chris Barnhill

Forse questo link ti aiuta a:

http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/

Citazione:

  1. Passare alla directory principale all'interno della copia di lavoro (supponendo che si desideri ripristinare l'intera copia di lavoro).

  2. esegui svn revert per ripristinare i file della tua copia di lavoro allo stato in cui si trovavano quando hai effettuato l'ultimo commit/checkout.

  3. esegui svn status -v per vedere a quale numero di revisione corrisponde la tua copia di lavoro (è il numero di revisione più alto nell'elenco che produce svn status -v).

  4. eseguire svn merge -rXX:YY dove XX è il numero ottenuto nel passaggio precedente e YY è il numero della revisione a cui si desidera tornare.

  5. Fatto! La possibile eccezione a questo è che i file nella copia di lavoro che non esistevano quando revision YY era originariamente creato, saranno comunque lì, perché per impostazione predefinita svn non rimuove le cose. Se vuoi eliminarli, esegui un svn del [filename] su ciascuno di essi.

  6. Molto bene! Ora gioca con la tua copia di lavoro come se tutte quelle modifiche intermedie non fossero mai avvenute. E quando sei pronto a impegnarti, usa semplicemente svn commit come al solito!

12
Felix

Questo ha funzionato per me. Dato che hai la revisione 1234 come HEAD e vuoi annullare gli ultimi tre commit:

svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
71
martin

So che questa è una vecchia domanda, tuttavia, ho appena trovato come farlo con Windows/TortoiseSVN.

Come suggerito, non è possibile "cancellare" una revisione, ma ciò che si può fare è effettuare una revisione più aggiornata uguale alla revisione che si desidera ripristinare.

  1. Controlla il HEAD del repository per la directory dalla quale desideri annullare la revisione.
  2. Carica la vista "Mostra registro" in TortoiseSVN per la directory di livello più alto che desideri ripristinare (ad esempio "Trunk").
  3. Fare clic con il pulsante destro sulla revisione che si desidera rimuovere NOTA: questa è la revisione che si desidera rimuovere, non quella che si desidera ripristinare.
  4. Seleziona "Annulla modifiche da questa revisione".
  5. Fare clic su "Sì" al prompt.
  6. Aggiorna il checkout normalmente, ma su "HEAD".
  7. Ricominciare.

Dovrai quindi visitare tutti gli altri che hanno estratto e farli aggiornare e assicurarsi di rimuovere tutti i nuovi file.

Inoltre, è necessario assicurarsi che tutti sappiano cos'è stata quella revisione e potenzialmente aggiornare la descrizione.

5
Martin

È possibile utilizzare dump/load per questo scopo.

Si potrebbe anche usare svnsync per fare un backup ad alcune revisioni.

Se hai un grande repository, ci vuole tempo.

4

Per me (VisualSVN, 30-HEAD) funziona questo:

 del C:\Repositories\MyRepo\revs\0\30 
 del C:\Repositories\MyRepo\revs\0\29 
 del C:\Repositories\MyRepo\revs\0\28 
 Del C:\Repositories\MyRepo\revprops\0\30 
 Del C:\Repositories\MyRepo\revprops\0\29 
 Del C:\Repository\MyRepo\revprops\0\28 
 Echo 27> C:\Repositories\MyRepo\db\current 
 
3
Anton Golikhoff

Vai al terminale e vai al repository svn: ora digita

svn update -r "numero di revisione che vuoi ripristinare"

0
Mohd Ikram