Domanda

La mia azienda utilizza CVS come standard di fatto per il controllo del codice sorgente.Tuttavia, ho sentito molte persone dire che SVN è migliore.

So che SVN è più recente, ma a parte questo, non ho familiarità con i suoi vantaggi.

Quello che sto cercando è un confronto efficace e conciso tra i due sistemi, notando eventuali vantaggi o svantaggi di ciascuno in un ambiente di sviluppo Java/Eclipse.

È stato utile?

Soluzione

CVS tiene traccia delle modifiche solo file per file, mentre SVN tiene traccia di un intero commit come una nuova revisione, il che significa che è più semplice seguire la cronologia del tuo progetto.Aggiungi il fatto che tutti i moderni software di controllo del codice sorgente utilizzano il concetto di revisione, quindi è molto più semplice migrare da SVN che da CVS.

C'è anche il problema del commit atomico.Anche se l'ho riscontrato solo una volta, è possibile che 2 persone che si impegnano insieme in CVS possano entrare in conflitto tra loro, perdendo alcuni dati e mettendo il tuo client in uno stato incoerente.Se rilevati in anticipo, questi problemi non sono gravi perché i tuoi dati sono ancora là fuori da qualche parte, ma possono essere una seccatura in un ambiente stressante.

E infine, non vengono più sviluppati molti strumenti attorno a CVS.Mentre i nuovi e brillanti strumenti come Git o Mercurial mancano ancora di strumenti, SVN ha una base di applicazioni piuttosto ampia su qualsiasi sistema.

MODIFICA 2015:Seriamente, questa risposta ha 7 anni ormai.Dimentica SVN, vai a usare Git come tutti gli altri!

Altri suggerimenti

Uno dei tanti confronti:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Questo è molto specifico per quel progetto, ma molte cose si applicano in generale.

Sovversione Pro:

  • Supporto per rinomina/spostamenti con versione (impossibile con CVS):Fingolfin, Ender
  • Supporta le directory in modo nativo:È possibile rimuoverli e hanno la versione:Fingolfin, Ender
  • Le proprietà dei file hanno una versione;niente più inferno "bit eseguibile":Fingolfin
  • Il numero di revisione complessivo rende molto più semplici il controllo delle versioni e i test di regressione della build:Ender, Fingolfin
  • Commit atomici:Fingolfin
  • Ramificazione e tagging intuitivi (basati su directory):Fingolfin
  • Script di hook più semplici (pre/post commit, ecc.):SumthinWicked (lo uso per Doxygen dopo i commit)
  • Impedisce il commit accidentale di file in conflitto:Cavallo salato, Fingolfin
  • Supporto per il comando "diff" personalizzato:Fingolfin
  • Differenze offline e sono istantanee:sev

SVN presenta 3 vantaggi principali rispetto a CVS

  • è più veloce
  • supporta il controllo delle versioni dei file binari
  • e aggiunge commit transazionale (tutto o niente)

Il libro Subversion ha un'appendice che descrive in dettaglio importanti differenze rispetto a CVS, che potrebbero aiutarti a prendere la tua decisione.I due approcci sono più o meno la stessa idea, ma SVN è stato specificamente progettato per correggere difetti di vecchia data in CVS quindi, almeno in teoria, SVN sarà sempre la scelta migliore.

Asseconderò il suggerimento di Git di Eridius, ma lo espanderei agli altri DRCS (Distributed Revision Control System) come Mercuriale E bazar.

Questi prodotti sono abbastanza recenti e il livello di strumenti e di integrazione con essi sembra basso al momento (sulla base della mia ricerca iniziale).Direi che erano più adatti agli sviluppatori di potere là fuori (e qui ;-)).

D'altra parte, cosa no CVS attualmente fa per te?Dalla tua domanda iniziale, non ne hai davvero nessuna, "CVS fa schifo, cosa potrei usare al suo posto?"

Devi valutare i costi di qualsiasi potenziale migrazione rispetto ai benefici.Per un progetto esistente, penso che sarebbe difficile da giustificare.

Una cosa da non trascurare è l’ecosistema.Stavo lavorando in un negozio CVSNT e stavo scoprendo che sempre più strumenti open source supportavano SubVersion per impostazione predefinita.

comunque:CVSNT supporta i commit atomici

Essendo qualcuno che è nel bel mezzo del passaggio da CVS a SVN (inizialmente abbiamo cambiato tutti i nostri progetti con cvs2svn e poi abbiamo deciso che avremmo effettuato la transizione utilizzando solo svn sui nuovi progetti), ecco alcuni dei problemi che abbiamo avuto.

  • L'unione e la ramificazione sono molto diverse e se esegui la ramificazione e l'unione frequentemente, a meno che tu non abbia SVN 1.5 in esecuzione sul tuo server, devi sapere quando hai effettuato la ramificazione (questo non è molto chiaro nelle finestre di dialogo SVN di Tortoise).Michael dice che la ramificazione e la fusione sono intuitive, io direi che dopo aver usato CVS per 10 anni, non lo è.
  • Se stai eseguendo il server SVN su Linux, potrebbe essere difficile far sì che la tua SA passi a svn 1.5, poiché l'installazione predefinita è 1.4.x.
  • Unire i conflitti non è così facile o chiaro (almeno per me e i miei colleghi) in TortoiseSVN come lo è in TortoiseCVS.L'approccio a tre riquadri richiede un po' di tempo per abituarsi e WinMerge (il mio strumento di unione preferito) non esegue un'unione a tre riquadri.
  • Attenzione:molti dei tutorial online e degli articoli di riviste che ho letto ovviamente non si ramificano e non si uniscono, dovresti impostare il tuo repository principale come https://svn.yoursvnserver.com/repos/YourProject/Trunk e si ramifica https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX .Puoi fare pulizia se avvii i tuoi repository nel posto sbagliato, ma ciò crea confusione.

Dovresti dare un'occhiata Idiota invece di SVN.È un DVCS incredibilmente veloce e molto potente.Non è facile da usare come SVN, ma sta migliorando in questo senso, e non lo è Quello difficile da imparare.

CVS (Concurrent Versions System) e SVN (SubVersioN) sono due file system di controllo della versione comunemente utilizzati dai team che collaborano su un singolo progetto.Questi sistemi consentono ai collaboratori di tenere traccia delle modifiche apportate e di sapere chi sta sviluppando quale e se un ramo deve essere applicato o meno al tronco principale.CVS è il più vecchio dei due ed è stato lo strumento di collaborazione standard per molte persone.SVN è molto più recente e introduce molti miglioramenti per soddisfare le esigenze della maggior parte delle persone.

potresti anche scegliere di migrare solo il codice più recente da CVS a SVN e congelare il tuo attuale repository CVS.questo renderà la migrazione più semplice e potresti anche creare le tue versioni legacy nel vecchio repository CVS.

Bene, alcune cose che ritengo rendano svn fantastico.

  1. La combinazione del crogiolo SVN-Altassian è un metodo di revisione e controllo qualità di gran lunga superiore
  2. Migliore gestione dei conflitti e delle fusioni
  3. È ovviamente più veloce per effettuare checkout, eseguire commit, ecc.
  4. Il problema del commit atomico - È possibile che 2 persone che effettuano il commit insieme in CVS possano entrare in conflitto tra loro, perdendo alcuni dati e mettendo il codice base in uno stato incoerente

La migrazione può essere eseguita facilmente in poche ore utilizzando cvs2svn.

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