Domanda

Got un (si spera piccolo) domanda per quanto riguarda SVN e check-out pronti contro termine. Fondamentalmente io vedo in conflitto tutorial e suggerimenti per quanto riguarda ciò che al check-out e quando. Qualcuno dirà:

http://my.repos.com/project my_project

... mentre altri dicono:

http://my.repos.com/project/trunk my_project

Quando dovrei voler afferrare il tronco direttamente contro l'intero progetto? In passato non ho mai avuto problemi con entrambi, ma non sono sicuro se ci sono scenari in cui uno è preferibile all'altra.

Best.

È stato utile?

Soluzione

Ci sono un paio di altri punti di nota su questo.

  1. L'albero tags (e di solito è un albero) contiene istantanee ipoteticamente immutabili del codice in un determinato momento; questo non è qualcosa che si desidera modificare, come la maggior parte delle implementazioni stanno per essere basato sui tag
  2. maggior parte dei client di Subversion si lamentano se si tenta di commettere i cambiamenti nella struttura tags, invece di copiare in esso
  3. Per la maggior parte degli scopi, trunk è un caso particolare delle directory sotto branches; l'unica differenza significativa è che si prevede di contenere il percorso principale di sviluppo

Di solito c'è alcuna buona ragione per controllare l'intero progetto, come altri hanno fatto notare, come la maggior parte del tempo si sta lavorando solo sul tronco e uno o due rami, e l'intero progetto può mangiare una quantità significativa di spazio sul disco. Lo sviluppo "ramo" principale è il più delle volte l'unica cosa che ti serve.

Ecco un esempio del mondo reale. La nostra squadra fa tutte le modifiche al codice contro il tronco. Quando abbiamo bisogno di un alfa rilascio (pre-completo), abbiamo appena contrassegnare le tronco. Una volta che abbiamo raggiunto "codice completo" per una data di rilascio, creiamo un ramo congelamento del codice, dove facciamo tutti la nostra versione modifiche. La beta, RC e GA stampa sono contrassegnati da quel ramo. Se abbiamo bisogno di rattoppare una versione GA, la patch è fatto contro il ramo e si è fusa al tronco. In questo modo, non ci si deve preoccupare di più recente codice che perde nel testato e approvato GA se abbiamo bisogno di patch di qualcosa di specifico. Essa ci permette anche di iniziare a lavorare sulla prossima versione del software non appena il codice è congelata.

Inoltre, se c'è un "side project" che è out-of-band per il tronco, è possibile creare un ramo per questo e unirla quando si è pronti.

Alcune squadre come creare un ramo per ogni bug, e alcuni lavori direttamente sul tronco (come il mio). Se la tua squadra fa il ramo bug-per-, non avevo mai il check-out l'intero progetto. Tra le altre cose, mi piacerebbe vedere un sacco di codice non mi preoccupano.

Inoltre, solo un punto in merito alla gestione repository come menzionato da @humble_coder - maggior parte degli strumenti di Subversion sono abbastanza facili da usare quando si tratta di gestione dei rami / tag. Ad esempio, TortoiseSVN dispone di un browser repository che permette di copiare le cose (la creazione di filiali e tag) abbastanza facilmente, e anche lo strumento svn da riga di comando può essere usato per fare la stessa cosa come un operazione atomica (in realtà abbiamo uno script che crea sia i tag alfa, il ramo di codice di blocco, oppure i tag versione successiva a congelamento).

Spero che questo aiuti!

Altri suggerimenti

di solito un repository subversion ha 3 directory principali:

  1. rami
  2. tronco

Trunk è per la più aggiornata ramo del codice.

I rami sono generalmente creati al fine di sviluppare una caratteristica specifica che ancora non vuole nel bagagliaio.

I tag sono come Save-punti del tronco.

Se fate una cassa alla base del progetto, si ottengono tutti i rami, tutti i tag e il tronco. Questo può portare a una grande quantità di dati.

Ad esempio, se ogni rilascio del codice è etichettato, si otterrà il codice sorgente da tutti i vostri precedenti release!

Spero che questo vi aiuterà a

Jerome Wagner

E 'dipende da come si fa a lay out del repository, ma di solito, avrete questa struttura:

/trunk
/tags
/branches

All'interno sia tags e branches, si possono avere diverse copie del progetto (a seconda di nuovo su come si usa il repository).

Se il repository è disposto in questo modo, e si checkout /, si finirà con diverse copie del codice (tag e filiali), che non si può supporre di essere toccanti (tag, per esempio).

Se si checkout /trunk invece, si controlla solo la versione che si sta lavorando, che è quello che di solito si desidera.

Non avrei mai checkout l'intero progetto. In genere, sono interessato solo in un ramo alla volta, forse due, di tanto in tanto a tre. Ho sempre tronco controllato e aggiornato. Se ho bisogno di controllare il funzionamento di un tag rilasciato (forse per le indagini bug) I check out, indagare ed eliminare. Filiali conservati in branches in genere hanno una capacità di attenzione molto più breve, cioè, essi vengono creati e utilizzati febbrilmente per un breve periodo e poi mai toccato di nuovo.

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