2010-08-30 22 views
5

Non ho mai usato ClearCase, ma ho usato Subversion e per un breve periodo di tempo Perforce. Il dipartimento IT della nostra azienda supporta ufficialmente ClearCase e alcune persone hanno il loro codice controllato e alcune persone lo usano come una riserva di backup.ClearCase per il controllo del codice sorgente?

Sono ancora indeciso sul tempo per utilizzare ClearCase o configurare il mio repository utilizzando Subverison. Sarà un team di sviluppatori di due o massimo tre persone. Dalle persone di cui ho sentito parlare, ho avuto questa percezione che ClearCase è complesso e non vale la pena di essere studiato in quanto potrebbe non aumentare la produttività. È vero o è sbagliato?

Grazie ...

risposta

4

Supponendo che si è limitato ai due sistemi di controllo versione (VCS) lei ha citato, Subversion (SVN) sarà essere più chiaro, più semplice e meglio supportato in quasi tutti gli aspetti, finché non si arriva al punto in cui è necessario supportare più filiali.

Quando è necessario unire codice (ad esempio correzioni di bug) in più versioni, supportare lo sviluppo parallelo di funzionalità di dimensioni significative o un team leggermente più grande di sviluppatori, quindi ClearCase e, più specificamente, la capacità di svilupparsi nei rami e unirli insieme facilmente, valuterà tutto il dolore e le complicazioni extra, specialmente se ClearCase è già stato gestito per te.

Experience

Ho usato ClearCase con tra una persona (me) e più di 400 persone, ha molti fastidi, giorno per giorno, problemi di usabilità e difetti, ma ci permette di ottenere in modo coerente lavoro fatto insieme. In ogni momento l'installazione di ClearCase aveva amministratori dedicati a tempo pieno.

Ho usato Subversion da solo e con un'altra persona, e funziona alla grande giorno per giorno (senza amministratori se non per me) ma molto occasionalmente ma costantemente diventa una significativa fonte di frustrazione dovuta al fatto non può gestire alcun ramo significativo e fondere situazioni.

Perché SVN è scarso nel supportare lo sviluppo e la ramificazione paralleli?

SVN non riesce nel supporto di linee parallele di sviluppo perché ha un supporto automatico molto debole per la fusione delle filiali. Al contrario, tutti gli altri VCS di cui scrivo qui hanno un buon supporto per unire insieme le filiali; per i casi comuni è un'operazione a sforzo zero.

Branching è il modo in cui i sistemi di controllo delle versioni modellano la concorrenza nella vita umana (ad esempio, due sviluppatori lavorano su due diversi problemi in parallelo o uno sviluppatore che ha più problemi aperti contemporaneamente). Ma la ramificazione è inutile se non riesci a combinare facilmente il lavoro di tutti in un insieme coerente!

La ramificazione può avvenire in modo esplicito (nel senso che sono denominati e compresi dal VCS) o implicitamente (come una copia normale dei file o di un pagamento). SVN supporta entrambi, ma nella ramificazione SVN viene generalmente eseguita in modo implicito limitato. Ogni check out è un ramo ma tutti i rami sono forzati per essere sincronizzati su ogni commit/aggiornamento. Ciò accade perché SVN non supporta la fusione semplice di rami espliciti e pertanto i rami espliciti vengono creati raramente.

Dato che sei obbligato a sincronizzarti l'uno con l'altro ad ogni commit, questo diminuisce il potenziale parallelismo all'interno del team. Inoltre, porta a pratiche di sviluppo meno che ideali in quanto non è possibile utilizzare efficacemente il sistema di controllo delle versioni per le proprie esigenze di sviluppo quotidiane. Finisce per essere troppo difficile per provare idee diverse nei propri rami personali e non è possibile effettuare più commit mentre si raffina una funzionalità. Inoltre, è più probabile che ti impegni troppo presto e finisci per interrompere il lavoro di tutti gli altri finché non risolvi il problema nel tuo ultimo commit.

L'altra questione importante è che, dal momento che la fusione rami espliciti non è ben supportato, SVN fa un pessimo lavoro di aiutare si sposta cambiamenti di codice tra le persone e tra i rami. Immagina di provare a correggere un bug sia nel ramo di rilascio che nel ramo di sviluppo; in alternativa, immagina che due sviluppatori stiano lavorando su una funzione correlata e che entrambi debbano scambiarsi reciprocamente, ma solo a punti controllati. Usando SVN puoi svolgere queste attività ma il VCS fa molto poco per aiutarti e devi essere preparato a preparare e mantenere manualmente le patch o spedire i file.

Nell'altra VCS si può chiedere al VCS di unire un ramo contenente una correzione di bug o di una funzione in varie altri rami. Alla fine della giornata tutti questi rami (che a loro volta contengono il contenuto di altri rami) possono quindi essere riuniti nel ramo principale. Molto spesso la maggior parte di questo viene gestita automaticamente e correttamente dal VCS, mentre con SVN questo tipo di flessibilità e parallelismo automatici è quasi inimmaginabile.

grandi squadre ottengono il lavoro fatto senza un forte sostegno per la fusione automatica, ma questo pone un onere maggiore sia sui singoli e sulla squadra organizzazione, comunicazione e di processo.

Il rovescio della medaglia di raggruppamento e fusione semplice è che è necessario essere organizzati e rigorosi sulla fusione delle modifiche insieme a intervalli regolari in quanto non si verifica più automaticamente.

Altre opzioni

Ora, se facciamo un passo indietro e considerare altri sistemi, supponendo che il repository è in gran parte basato su testo e relativamente piccole (meno di qualche centinaio di MB), vorrei suggerire di prendere in seria considerazione utilizzando BZR. BZR è almeno altrettanto facile da usare come SVN, specialmente se conosci già SVN. È anche potente almeno quanto ClearCase sotto tutti gli aspetti importanti dal punto di vista dello sviluppatore; supporta più flussi (rami) di sviluppo e ha un buon supporto per unirli di nuovo insieme. Allo stesso tempo, può supportare uno stile di sviluppo centralizzato, se necessario.

Anche se non ho esperienza con esso Vorrei anche ricordare che è possibile utilizzare lo strumento BZR per accedere a un server SVN con bzr-svn e questo può dare molto dei benefici e unire le capacità di BZR pur avendo il vantaggio di ospitare il tuo codice sulla piattaforma SVN ampiamente capita.

Mentre ho appena suggerito BZR, nel mondo dei sistemi di controllo versione open source distribuito (DVCSs) molte persone sembrano andare con GIT. Non l'ho suggerito, visto che impone una curva di apprendimento molto più acuta agli utenti provenienti da uno sfondo SVN e penso che molti team in natura preferirebbero il miglior supporto di Windows e la facilità d'uso di BZR rispetto alla scalabilità e ai benefici della velocità di GIT .

Se si sceglie di andare con un DVCS come BZR o GIT che probabilmente non c'è bisogno di arrivare troppo appeso su esattamente quali si DVCS iniziare a utilizzare. I sistemi ampiamente utilizzati supportano l'esportazione e l'importazione tra loro e possono almeno importare da SVN.

+0

Perché ritieni che Subversion non sia adatto per gli scenari in cui avrei bisogno di sviluppo e ramificazione paralleli? – Manoj

+0

Manoj: Ho aggiornato la mia risposta per cercare di rispondere alla tua domanda. – Jared

+0

'svn copy' può essere usato per diramarsi esplicitamente e quelli possono essere nominati come desiderato. 'svn merge' può unire i rami di nuovo insieme (non che faccia un ottimo lavoro). Sebbene io sia in gran parte d'accordo con la tua valutazione, SVN non semplifica la fusione e lo sviluppo parallelo, devo prendere in considerazione il fatto che "le diramazioni esplicite non sono ben supportate" e le dichiarazioni correlate come errori reali che riducono il tuo punto principale. Non sono un fan, ma sto lavorando su un ramo SVN in questo momento, e un altro team qui comunemente codifica sui rami personali e si uniscono di nuovo al tronco una volta terminato. –

4

Vorrei andare a sovversione. Ha un'interfaccia più pulita ed è più intuitivo di ClearCase. Nella mia azienda la gente spesso fatica a imparare ClearCase e le squadre stanno migrando in svn. Un altro buon motivo per usare svn è che è gratuito.

3

Stammi lontano! Ha alcune funzionalità che svn manca (come le attività) ma sicuramente con 3 persone nella tua squadra non vale la pena.

3

Aggiornamento novembre 2011: più di un anno dopo, vorrei veramente consigliare contro ClearCase.

È chiaro ora, dal Rational ClearCase has been bought by IBM (2003), che non ci sarà alcuna evoluzione importante per quel prodotto di oltre 25 anni.
Le ultime funzionalità potrebbero ancora migliorare un po '(vedere release notes for 7.1.1) e atomic checkins sono alla fine parte del prodotto, ma il protocollo di comunicazione sottostante tra client e server è ancora lento e impossibile scalare.

In realtà, ClearCase è stato riscritto da zero e si chiama Jazz source control, parte del prodotto .
Quella nuova versione (RTC 3.x) è in realtà piuttosto buona, molto più veloce di ClearCase e offre un modo interessante di isolare il proprio sviluppo, consentendo commit privati.

Oggi, DVCS come Git sono anche una buona alternativa, ma come I have detailed in this question, non è un processo banale per una grande impresa.


risposta iniziale: agosto 2010:

ClearCase non è complessa, ma è molto diverso da SVN. E abbastanza lento;)
Vedere ClearCase introduction.

Sono già riuscito ad avere other repos working tree working directly all'interno di una visualizzazione di istantanee.

Per progetti di grandi dimensioni con un complesso flusso di lavoro di unione, ClearCase (in particolare ClearCase UCM) può valerne la pena.
Per un progetto più semplice (in termini di flusso di lavoro di unione), SVN è sufficiente.

Consulta anche:

+0

"Unisci flusso di lavoro": vedere http://stackoverflow.com/questions/216212#216228 – VonC

1

IBM non supporterà più ClearCase/ClearQuest, stanno costringendo i propri utenti a passare a RTC (Rational Team Concert) che è molto meglio di CC/CQ e ha un'ideologia completamente diversa (Jazz). Quindi, non ti consiglio di utilizzare questa roba obsoleta, obsoleta e orribile (con UI da WIN 3.1 volte).

+0

Davvero è vero! Puoi citare un riferimento? – Manoj

+0

Non posso. Questo è ciò che un istruttore RTC (dal lato IBM) ci ha detto. Ma prova a google. Sono sicuro che ci saranno molti link :) –

-4

CC è il miglior sistema di controllo versione. Se si è in grado di utilizzare ClearCase - DO IT. Lo sviluppo parallelo è davvero efficace in caso di utilizzo di CC. Se pensi che il tuo progetto sia troppo piccolo per ClearCase, ricorda che i progetti stanno crescendo di solito. Inoltre puoi ottenere nuovi progetti che riutilizzeranno il codice e potrai ottenere una squadra più grande. Quindi lo sviluppo sta crescendo e sarai obbligato a utilizzare VCS più potenti.

+9

Sono turbato da quanto non sia obiettiva questa risposta. Ci sono molte affermazioni di awesomeness, ma nessuna sostanza per sostenerlo. – Flexo

2

Se non si dispone di amministratori ClearCase dedicati, non prendere mai in considerazione di farlo. Ha davvero una curva di apprendimento molto ripida. Sono costantemente inciampato su problemi con esso. Scrivere manualmente le Specifiche di configurazione è così incline agli errori che non è vero, in più puoi facilmente interrompere qualsiasi cosa solo introducendo un'errata ortografia. Inoltre, finirai in etichetta-inferno, dal momento che devi etichettare tutto ciò di cui hai bisogno per tornare, dal momento che non c'è la possibilità di darti uno stato specifico in qualsiasi momento, a meno che tu non lo abbia etichettato.

Non ho mai avuto nessuno dei problemi sopra menzionati con SVN. Ho anche fatto qualche ramificazione/fusione con SVN e anche con CC. Nessun problema con SVN, molto con CC. L'uso di CC trasforma molte cose che dovrebbero essere senza eventi in grossi problemi. Di nuovo, questo è senza amministratori, quindi un'azienda che forza CC su tutti ma non fornisce supporto. Non chiedere quale ..

CC può essere utilizzato efficacemente, ma ... Direi che non vale quasi mai lo sforzo extra. SVN funziona semplicemente per scenari minimi, che probabilmente è la ragione per cui è ancora in giro con GIT e Mercurial che funzionano così bene.

Problemi correlati