2009-02-24 14 views
51

Ho un'applicazione software e ho raggiunto un traguardo importante, la versione 2.0.Che cos'è una copia di lavoro e cosa fa "switching" per me in Tortoise SVN?

Ho deciso di taggare questa versione come "Versione 2.0", quindi ho chiamato questa istantanea. Ho anche creato un ramo "Versione 2.0" nel caso in cui avessi bisogno di riparare qualcosa e unirlo di nuovo nel mio bagagliaio.

Dopo aver letto il file della guida di Tortoise SVN, mi informa che posso passare la "copia di lavoro" in un ramo appena creato.

Cosa significa?

Attualmente, ho:

/progetto/trunk/
/progetto/Tag/
/progetto/Filiali/

Tutto controllato. Quindi quale sarebbe il punto di "commutazione"? Attualmente, vado nella mia cartella/trunk e faccio il mio lavoro. E quando ho creato il mio tag e ramo, ha creato le cartelle nella mia cartella/Tags/e/Branches/dopo che ho fatto un aggiornamento.

Perché non dovrei semplicemente andare su /Branches/Experiemental-v3.0/ e fare il mio lavoro lì se volessi?

Qualcuno può spiegare il concetto di "Copia di lavoro" e "Cambio" per me? Cosa mi manca? Generalmente le persone non hanno l'intero repository controllato, è così?

risposta

41

Una copia di lavoro è la copia che hai estratto nella tua area di lavoro. Non importa se si tratta di un ramo o del tronco. È quello su cui stai lavorando.

È possibile passare da un ramo all'altro (o più copie corrette) dello stesso genitore con il tasto svn. Questo fondamentalmente dirà, ciò che è diverso tra la copia di lavoro corrente e il ramo a cui sto passando. Quindi esegue un aggiornamento sulla tua copia di lavoro corrente alla revisione del ramo su cui passi.

Quindi la copia di lavoro è il checkout, tuttavia è stato ottenuto.

Il passaggio è solo la modifica del ramo su cui la tua copia di lavoro si impegna. Pensa ad esso come cambiare il puntatore nel repository dove andranno i tuoi commit. Con l'aiuto di acquisire eventuali differenze dal ramo alla tua area di lavoro.

+4

ma questo non risponde alla domanda, King sta chiedendo che le persone generalmente non hanno tutte le cartelle selezionate? come se io andassi nella cartella /Branches/Experiemental-v3.0/ e facessi qualche modifica che le modifiche non vengano commesse in questa stessa cartella su un commit? a chi importa della copia di lavoro e della directory "passata a". Quello che stai dicendo significa che l'utente ha solo una copia alla volta. – shabby

+0

Dopo che tutte le cartelle sono state ritirate, significa che non si ha una replica del repository SVN. Posso avere una cartella che è stata ritirata da un ramo, ma in caso di modifiche qui, posso inviare il commit a un ramo diverso se avessi fatto un cambio svn. – mtk

+5

Suggerisco di non aver paura di lavorare come sei, e di avere tutti i tuoi rami controllati sul tuo computer locale. È così che abbiamo lavorato per circa 5 anni e rende la vita più semplice. Ci sono dei vantaggi nell'usare la cosa dell'interruttore e solo lavorando su un ramo estratto, tuttavia volevo contribuire al fatto che è del tutto superfluo, e che l'intero lotto è stato controllato, e che per noi va bene. –

1

La tua copia di lavoro è una qualsiasi cartella sul disco rigido che hai usato per controllare un progetto da subbversion. È possibile "passare" a un progetto diverso per quella copia di lavoro, in modo che il contenuto della versione assomigli al contenuto di quell'altro progetto.

Questo è utile per passare da un tronco all'altro, senza doverne verificare una nuova copia. Ad esempio, è possibile risparmiare un po 'di tempo di costruzione, poiché i file senza nome (gli oggetti compilati, le librerie, i file eseguibili) non vengono rimossi o modificati.

Dave

3

copia di lavoro è la vostra copia del codice, che si è verificato. Normalmente verificherei solo/Project/trunk /, non l'intera struttura del repository. Il passaggio sta cambiando la radice della tua copia di lavoro. Il modo in cui lavori con SVN non è come dovrebbe essere fatto.

1

Hai controllato l'intero albero del progetto, probabilmente non è quello che desideri. Per il funzionamento del tronco, controlla una copia radicata in 'tronco', non dalla radice del progetto. Allo stesso modo, per il lavoro di filiale controlla solo il ramo che desideri.

17

In genere non è necessario controllare l'intero repository. Rami e tag in sovversione sono concepiti per essere economici, cioè non creano copie di file identici, basta fare riferimento a essi. Quando hai controllato tutto il repository, quando qualcuno si dirama o tag per qualsiasi motivo, sta improvvisamente moltiplicando lo spazio utilizzato sul disco rigido locale.

È possibile verificare il numero di parti del repository necessario. Quindi potresti avere una cartella chiamata 'trunk' che è una copia funzionante del solo trunk, un'altra 'versione2' che sarebbe una copia funzionante del tuo ramo. In questo modo, tutti i tag aggiuntivi che vengono creati non vengono ritirati.

Oppure è possibile avere un checkout chiamato "progetto" e, se originariamente punta al trunk, è possibile passare a uno dei rami o tag: è un modo di riutilizzare il checkout originale in modo da non Devo ricominciare tutto da capo.

Può essere molto utile farlo mentre lavori sul trunk e improvvisamente ti rendi conto che devi trasferire le tue modifiche su un ramo, forse perché sono troppo sperimentali. Per fare ciò, diramazione dalla copia di lavoro, passare al nuovo ramo, quindi eseguire il commit e le modifiche andranno al ramo piuttosto che al trunk.

+0

IMHO questa dovrebbe essere la risposta accettata. È molto meglio di quello attualmente accettato, in quanto questo in realtà affronta la questione. –

Problemi correlati