SVN: lavorare con le filiali usando la stessa copia di lavoro

4

Ci siamo appena trasferiti a SVN da CVS. Abbiamo una piccola squadra e tutti controllano il codice nel bagagliaio e non abbiamo mai usato rami per lo sviluppo.

Ognuno di noi ha una directory su un server dev remoto con il codebase estratto. Ogni sviluppatore lavora sulla propria sandbox con un URL associato per far apparire l'app in un browser (qualcosa come la configurazione qui: Trade-off dei flussi di lavoro di sviluppo locale vs remoto per un team di sviluppo web ).

Ho deciso che per il mio progetto attuale userò un ramo perché si estenderà su più versioni. Ho già tagliato un ramo, ma sto usando la stessa directory di quella originariamente ritirata (cioè per il trunk).

Poiché si tratta della stessa directory (o copia funzionante) per il ramo e il tronco, se per es. un bug si apre nell'app che passo al trunk e commetto la modifica lì, quindi torno al mio ramo per lo sviluppo del mio progetto.

Le mie domande sono:

  • È un modo corretto per lavorare con le filiali?
  • Ci sono delle insidie di cui ho bisogno di essere a conoscenza?
  • Quale sarebbe il modo ottimale di lavorare con le filiali se le copie di lavoro separate sono fuori questione?

Non ho ancora avuto problemi, come ho appena iniziato a fare in questo modo, ma tutti i tutorial / libri / post sui blog che ho visto sulla ramificazione con SVN implicano il lavoro con diverse copie di lavoro (o forse non mi sono imbattuto in un spiegazione di copie di lavoro miste in inglese semplice).

Non voglio che mi dispiaccia tre mesi lungo la strada quando è il momento di integrare il ramo sul tronco.

    
posta uXuf 20.01.2012 - 19:26
fonte

4 risposte

11

No

Non è un modo sano per lavorare con le filiali. Se si hanno modifiche non eseguite sul ramo e quindi si passa alla directory di lavoro nel trunk, tali modifiche saranno comunque presenti. Se quegli stessi file sono stati patchati sul tronco, si avranno conflitti di fusione. Non passerà molto tempo prima che tu commetta una modifica al trunk che era destinato al ramo.

Lo spazio su disco costa circa dieci centesimi per Gigabyte. Controlla separatamente il tronco e il ramo.

A volte uso svn switch come segue:

  • verifica rilascio tag per riprodurre il problema
  • crea un ramo di patch
  • svn switch per patch ramo. Lo spazio di lavoro non dovrebbe cambiare.
  • correzione commit
  • crea un nuovo tag

Costruisco anche sistemi di produzione da casse SVN. Lì uso svn switch per aggiornare ad una nuova versione, piuttosto che ottenere un nuovo checkout. Non ho mai commutato un singolo spazio di lavoro tra due rami separati.

    
risposta data 20.01.2012 - 19:44
fonte
2

Puoi lavorare in questo modo abbastanza felicemente - lo faccio oggigiorno ed è il modo di lavorare con i rami delle funzionalità. Ci sono 2 trappole di cui devi essere consapevole.

  1. Qualsiasi lavoro con cui non hai eseguito il commit rimarrà nella tua copia di lavoro e quando lo cambierai verrà unito. questo può significare che potresti impegnarti a lavorare per l'altro ramo. In definitiva è un problema personale - devi essere organizzato.

  2. Occasionalmente lavorerò su un ramo e realizzo, d'oh, stavo usando il ramo sbagliato. È facile passare a quello giusto, mantenendo il tuo lavoro (dato che viene unito quando si cambia). Tuttavia, devi essere organizzato.

Ho usato il checkout di un nuovo WC per ogni filiale, che era un buon flusso di lavoro per l'organizzazione che avevamo nella società precedente. Con le casse di riserva questo è facile e veloce. Ora uso i rami di funzionalità, tutti gli sviluppatori per eventuali errori vengono eseguiti su un singolo ramo e uniti al tronco dopo vari controlli di qualità. Funziona bene anche se non si esegue una correzione di bug che non viene unita al trunk per un po 'di tempo (per motivi di "progetto" in genere). Posso lavorare su 4 o 5 filiali al giorno con questo flusso di lavoro.

    
risposta data 25.08.2014 - 14:59
fonte
0

No, non è sano.

Per prima cosa, i tuoi ragazzi dovrebbero lavorare davvero a livello locale. Se è troppo difficile ricreare un ambiente per eseguire l'app, dovresti affrontarlo.

In secondo luogo, in scenari in cui stavo facendo cose in più rami di lunga data usando SVN, il modo migliore / più pulito per gestirli è stato quello di mantenere più directory di lavoro. Hai bisogno di lavorare sul bagagliaio? Ottimo, lavora nella cartella trunk. Hai bisogno di lavorare sul ramo di rilascio? Ottimo, basta cambiare cartella. Il problema principale era che a volte a SVN non piacerebbe cambiare e uno in genere finiva per spianare e ricontrollare. Questo problema tendeva a manifestarsi quando si lavorava spesso in entrambi i rami. È stato molto più semplice passare semplicemente alle cartelle.

Poi siamo passati a hg e non abbiamo questi problemi. . .

    
risposta data 20.01.2012 - 21:53
fonte
0

Questa non è una caduta da buca, ma un chiaro avvertimento se stai iniziando a schierare un nuovo.

I just don't want to be sorry three months down the road when its time to integrate the branch back to the trunk.

Quando il lavoro del ramo è completo - vuoi unire, devi attentamente non introdurre la diff in entrambi i modi che diventano incompatibili. Se succede - idealmente dovresti prendere tutte le modifiche da un ramo all'altro prima di salire.

Inoltre, assicurati di ricordare l'avvio del ramo SVN e l'ultima fusione. Se si prendono le stesse revisioni e si tenta di unire quella diff due volte, i risultati saranno problematici.

La ramificazione è un must per tutti i progetti praticamente di grandi dimensioni.

    
risposta data 21.01.2012 - 05:17
fonte

Leggi altre domande sui tag