2010-02-05 14 views
22

Sono abbastanza nuovo sia per Subversion che per Subclipse e vedo alcuni problemi che mi portano a credere che ci sia una differenza tra l'aggiornamento alla testata e la sincronizzazione. Nello specifico trovo che quando provo a ripristinare (usando la cronologia subclipse), ottengo spesso un messaggio che dice "Impossibile rovesciare un intervallo dalla cronologia futura di un percorso, provare prima ad aggiornare". La mia sincronizzazione dovrebbe garantire di avere la versione 'head' di tutti i file nel mio ramo sul REPO, ma facendo un "Update to head" risolve il problema ... quindi cosa dà? Ho provato a controllare la console SVN per vedere cosa sta cambiando, ma non è molto dettagliato.SVN Synchronize vs Update to Head (subclipse)

Idee?

Ho una seconda domanda, ma suppongo che la risposta al primo farà luce su di esso. Se sei curioso e hai tempo per leggere, lo scriverò anch'io. Ecco lo scenario ... Ho ramificato tutti i miei file da un tag "Produzione" e ho iniziato a lavorare sul mio progetto. Dopo alcuni commit, controllo la cronologia di un file modificato e noto che la versione "in grassetto" (secondo la documentazione, questa dovrebbe essere la testa) è al di sotto di tutti i miei commit. È come se quello che ho non è la testa. Ma la testa è solo l'ultima versione del progetto giusto? Quindi cosa mi sto perdendo.

Grazie per la vostra risposta e il tempo di leggere questo!

risposta

2

Penso che la tua ipotesi che la sincronizzazione sia la stessa dell'aggiornamento a HEAD è falsa. Se, nel linguaggio di Subclipse, "sincronizzare" significa "commit", allora è certamente falso perché il commit non aggiorna la tua copia di lavoro. Devi aggiornare esplicitamente dopo che ti impegni a essere in HEAD.

Che mi porta alla tua seconda domanda: Penso che il motivo per cui la linea in grassetto è al di sotto di altri commit è a causa del motivo sopra — non si aggiorna. Ciò significa che è possibile commettere una modifica a un file e quindi guardare un altro file e vederlo come più vecchio di HEAD, perché questi altri file non sono stati portati anche a HEAD.

Questo articolo può aiutare a chiarire questo concetto di revisioni miste: http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

anche io incoraggio a familiarizzare con la SVN documentation, come lavorare con i plugin e le estensioni per Subversion diventa sempre più facile quando si capisce come lo SVN sottostante sistema funziona.

+0

Ehi Mike, ho preso uno sguardo a questo articolo, ma io non sono esattamente sicuro che si applica. Sebbene un commit non aggiorni la tua copia di lavoro, dovrebbe esserci una sincronizzazione. Vedo non solo modifiche in uscita, ma in arrivo. Non sarebbe lo stesso dell'aggiornamento? – gergesi

+1

Ahh, la risposta è in quell'articolo ma nella sezione sulle cartelle! Quando commetto un file, la sua cartella genitore non si sposta alla mia revisione. Conosce la revisione (è presente nella cronologia) ma non si alza. La sincronizzazione lo ignora, ma un aggiornamento a HEAD lo risolve. – gergesi

26

C'è una differenza. Quando si utilizza la vista Sincronizza, vengono aggiornati solo gli elementi nella vista. Con Subversion, le cartelle hanno anche una revisione che viene urtata ogni volta che un bambino viene modificato. Tuttavia, poiché questi non compaiono nella vista, non vengono mai aggiornati. Quando esegui Team> Aggiorna sul progetto, tutte le cartelle e i file vengono aggiornati in un'unica revisione uniforme. Ho un paio di post di blog che spiegano questo:

Questo spiega il nucleo SVN concetto di una revisione mista copia di lavoro, ed è essenziale per comprendere questo:

http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

il secondo mostra una caratteristica in Subclipse a che fare con questo:

http://markphip.blogspot.com/2006/12/subclipse-synchronize-feature-show-out.html

Dal momento che il secondo blog è stato scritto, la maggior parte degli utenti Subclipse trovato loro non piaceva questa funzione, anche se lui lps con questo problema. Quindi ora è spento per impostazione predefinita nelle versioni correnti. Non credo che nessuno lo usi più.

L'elemento principale è utilizzare occasionalmente Team> Aggiorna sul progetto per portare tutto a una singola revisione uniforme.

Mark

+0

Grazie @Mark! Questo e i tuoi post sul blog collegati hanno sicuramente contribuito a chiarire alcune cose su SVN e Subclipse. –