Domanda

Diciamo che ho commesso alcune modifiche errate al repository Subversion.Quindi impegno buoni cambiamenti, che voglio mantenere.

Quale sarebbe il modo più semplice per ripristinare le modifiche errate in Eclipse e mantenere le modifiche positive?Supponendo che i file relativi alle modifiche errate non siano gli stessi di quelli relativi alle modifiche valide.Come cambiano le cose se vengono apportate modifiche valide agli stessi file delle modifiche errate?

Sto principalmente cercando un modo per farlo tramite i plugin Eclipse (Subclipse o Subversive), ma anche i comandi della riga di comando sono interessanti.

È stato utile?

Soluzione

Hai due scelte per farlo.

Quick and Dirty sta selezionando i tuoi file (usando Ctrl) nella vista Project Explorer, fai clic con il pulsante destro del mouse, scegli Replace with... e poi scegli l'opzione migliore per te, da Latest from Repository, o qualche Branch versione.Dopo aver ottenuto quei file, li modifichi (con uno spazio, o aggiusti qualcosa, li chiami e li impegni a creare una revisione più recente.

Un modo più pulito è scegliere Merge nel menu del team e naviga attraverso la procedura guidata che ti aiuterà a ripristinare la vecchia versione nella revisione attuale.

Entrambi i comandi hanno i loro equivalenti da riga di comando: svn revert E svn merge.

Altri suggerimenti

Nell'eclissi Ganimede (Subclipse)

Seleziona il progetto/file che contiene modifiche errate e dal menu a comparsa scegli:

Squadra -> Mostra cronologia

Le revisioni relative a quel progetto/file verranno visualizzate nella scheda Cronologia.

Trova la revisione in cui sono state apportate "modifiche errate" e dal menu a comparsa scegli:

Ripristina le modifiche dalla revisione X

Ciò unirà le modifiche nei file modificati durante la revisione errata, con la revisione precedente alla revisione errata.

Da qui gli scenari sono due:

  1. Se non hai apportato modifiche per quel file (la revisione errata è l'ultima revisione per quel file), rimuoverà semplicemente le modifiche apportate nella revisione errata.Tali modifiche vengono unite alla tua copia di lavoro, quindi devi confermarle.

  2. Se hai effettuato il commit di alcune modifiche per quel file (la revisione errata non è l'ultima revisione per quel file), dovrai risolvere manualmente il conflitto.Supponiamo che tu abbia il file readme.txt e che il numero di revisione errato sia 33.Inoltre, hai effettuato un altro commit per quel file nella revisione 34.Dopo aver scelto Annulla le modifiche dalla revisione 33 avrai quanto segue nella tua copia di lavoro:

readme.txt.merge-left.r33 - revisione pessima

readme.txt.merge-right.r32 - prima di una brutta revisione

readme.txt.funzionante - versione della copia funzionante (come nella r34 se non sono presenti modifiche non salvate)

Il file readme.txt originale sarà contrassegnato come in conflitto e conterrà la versione unita (dove le modifiche derivanti da una revisione errata vengono rimosse) con alcuni contrassegni (<<<<<<< .working ecc.).Se desideri semplicemente rimuovere le modifiche derivanti da una revisione errata e mantenere le modifiche apportate successivamente, tutto ciò che devi fare è rimuovere i marcatori.Altrimenti, puoi copiare il contenuto da uno dei 3 file sopra menzionati nel file originale.Qualunque cosa tu scelga, una volta terminato, contrassegna il conflitto risolto da

Squadra - Mark risolto

I file temporanei verranno rimossi e il file verrà contrassegnato come modificato.Come in 1, devi confermare le modifiche.

Tieni presente che ciò non rimuove la revisione dalla cronologia delle revisioni nel repository svn.Hai semplicemente effettuato una nuova revisione in cui le modifiche derivanti dalla revisione errata vengono rimosse.

Se vuoi eseguire 1 file alla volta, puoi andare alla visualizzazione Cronologia del file presupponendo che tu abbia installato un plug-in Eclipse SVN."Squadra->Mostra cronologia"

Nella visualizzazione Cronologia, trova l'ultima versione valida di quel file, fai clic con il pulsante destro del mouse e scegli "Ottieni contenuti".Ciò sostituirà la versione corrente con i contenuti di quella versione.Quindi puoi confermare le modifiche quando hai sistemato tutto.

In Eclipse usando Subversive:

Fai clic con il pulsante destro del mouse sul tuo progetto > Team > Unisci

Nella finestra di unione, seleziona le revisioni che desideri ripristinare normalmente, ma attiva anche la casella di controllo "Unione annullata".

Unisci come di consueto.

Ho scritto un paio di post sul blog su questo argomento.Uno incentrato su Subclipse: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html e uno incentrato sulla riga di comando: http://blogs.collab.net/subversion/2007/07/second-chances/

Lo svnbook ha una sezione su come Subversion ti consente di annullare le modifiche da una particolare revisione senza influenzare le modifiche avvenute nelle revisioni successive:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Non uso molto Eclipse, ma in TortoiseSVN puoi farlo dalla finestra di dialogo del registro;fai semplicemente clic con il pulsante destro del mouse sulla revisione che desideri ripristinare e seleziona "Annulla modifiche da questa revisione".

Nel caso in cui i file per i quali si desidera ripristinare le "modifiche errate" presentassero "modifiche valide" nelle revisioni successive, il processo è lo stesso.Le modifiche della revisione "cattiva" verranno annullate lasciando intatte le modifiche delle revisioni "buone", tuttavia potrebbero verificarsi dei conflitti.

Ho lo stesso problema ma l'opzione CleanUp Eclipse non funziona per me.

1) installa TortoiseSVN
2) Vai a Windows Explorer e fai clic con il pulsante destro del mouse sulla directory del tuo progetto
3 Scelta dell'opzione CleanUp (selezionando l'opzione break lock)

Le sue opere.

Spero che questo aiuti qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top