Quali sono i tuoi sistemi di controllo versione preferiti? [chiuso]


41

Questa è più una domanda di discussione che un tentativo effettivo di determinare il "migliore", poiché ciò varia chiaramente in base alle esigenze dell'organizzazione. Sono più curioso degli argomenti a favore di diversi sistemi tra le categorie (centralizzato vs distribuito, aperto vs proprietario, ecc.).

Quindi, quale pensi sia il miglior sistema di controllo della versione?


1
it.wikipedia.org/wiki/Comparison_of_revision_control_software è un'ottima tabella di confronto proprio per questo. Domanda di discussione ... wiki della community?
Chris,

4
Il primo che pubblica il nome, ottiene il rappresentante ... Questo dovrebbe essere wiki della comunità.
Takeshin


Non ho notato che questo è già un wiki della Community .
Takeshin

Risposte:


81

mutevole

Grazie alla sua sofisticata capacità di ramificare e unire il codice, è la migliore che abbia mai usato. L'intero paradigma DVCS ha molto senso. Non ho usato Git, ma suppongo che si qualifichi anche.


Devo provare Mercurial un po 'di tempo da quando ho già provato 2 dei grandi 3. E dal momento che Google Code lo supporta ...
TheLQ

2
Mercurial è dolce se stai usando Netbeans. l'integrazione dell'IDE è perfetta.
Seun Osewa,

4
Preferisco Mercurial semplicemente perché TortoiseHg è più maturo di TortoiseGit :-) (l'intera esperienza su Windows è molto meglio anche in Mercurial)
Dean Harding,

+1, suggerisco di rendere Mercurial audace e più grande (come ha fatto Gaurav nella sua risposta)
Tim Post

Mercurial è piuttosto dolce. Io e il mio team lo usiamo da circa 2 mesi ed è una boccata d'aria fresca rispetto a SVN.
Gary Willoughby,

72

Idiota

Git è fantastico, e lo consiglierei in particolare a tutti coloro che lavorano su progetti open source: è molto più semplice contribuire con un piccolo cambiamento una tantum a un progetto su Git, specialmente se è ospitato su GitHub, di quanto si occupi di e- inviando patch con SVN.

Un grande avvertimento per gli utenti Windows: gli strumenti Windows di Git, sebbene sicuramente utilizzabili, non sono del tutto all'altezza. Quando sono stato costretto a usare Windows per un po ', ho provato l'interfaccia Windows di Mercurial con uno strumento di integrazione Hg-Git in modo da poter usare i miei repository Git e ho scoperto che era molto più facile da usare.


5
Penso che sia importante dire che git è difficile. Lo adoro davvero, ma non è qualcosa che puoi usare per impararlo in un paio di giorni. Devi usarlo per un po 'e arrabbiarti finché non cambi idea ... ;-)
Khelben

1
@Khelben - C'è del vero in questo, sì. Tuttavia, sembra anche avere la maggior quantità di letteratura / articoli / tutorial in rete ad esso dedicati. Trovo regolarmente libri di Git che escono, Mercurial - non tanto (usando Mercurial qui come contrasto, dal momento che è per molti aspetti simile a Git). Non posso dire se sia positivo o negativo, ma sembra che la gente lo stia usando.
Rook,

2
msysgit è utilizzabile in Windows.

1
Suppongo che git, Mercurial ecc. Siano tutti abbastanza buoni, ma ho scelto git principalmente perché con GitHub. GitHub è più bello dei siti comparabili e molti importanti progetti sono ospitati lì. GitHub abbassa la barriera per contribuire molto all'Open Source.
LennyProgrammers,

2
Mercurial non ha BISOGNO di un libro.
Warren P,

24

Attenzione: da questo post ho trovato Mercurial e lo adoro molto meglio di SVN. Quindi questo post è un po 'obsoleto con i commenti Pro SVN e anti-DVCS generale, ma le cose anti-git sono ancora rilevanti


Sono un fan di SVN su Git.

Perché? Perché SVN è stato molto più semplice per un singolo sviluppatore o un piccolo team e git (in particolare msysgit) mi ha lasciato un cattivo gusto in bocca.

Quando stavo internando in un piccolo negozio, mi è stato presentato Git su Windows. Ho subito notato la quantità di lavoro necessaria per farlo funzionare con Github. Innanzitutto, ho dovuto generare una chiave privata ssh, incollare la chiave pubblica in Github, quindi richiamare lo spettacolo e aprire la mia chiave privata ogni volta che volevo spingere, il che era estremamente fastidioso.

E non mi è mai piaciuto davvero che stavo tirando giù l'intero repository. Devo ammettere che non ho mai lavorato con nulla di enorme, ma avrei paura di scaricare il repository di KDE in Git se l'intero repository e le sue revisioni sono sul mio HD.

Poi c'è stato il processo confuso per effettuare un commit. TMK, ho dovuto prima "mettere in scena" tutti i file che volevo eseguire il commit (il che faceva schifo quando avevi molti file, mi ci è voluto un po 'per trovare il comando manuale per mettere in scena tutto), quindi eseguire il commit, quindi passare al principale repo (perché è un'operazione separata ?!).

Hai anche avuto i dati di commit non (!) Molto utili. Oh guarda, questo è commit 14f74433245ae17aeeaa parte dell'albero 2167a4934d0a4a7db0de e padre d7042abb4821d3faf600. Che diavolo significa? Dovrei essere in grado di capire le cose abbastanza rapidamente e non dovrei consultare una strana documentazione.

A proposito di documentazione, almeno quando la stavo usando, sembrava che tutto fosse in formato linux man file, IE confuso e inutile per me. Raramente ho potuto trovare molto aiuto nei documenti e ho semplicemente fatto ricorso a Google.

E con commit, l'unica cosa che non mi è piaciuta è stata la mancanza di numeri di versione. Ora so che questo è dovuto al design di git, ma qualsiasi software ha bisogno di un numero di versione. Ricordo ancora il commit dei marker che si apriva dicendo "Versione modificata a 1.8.6" o qualcosa di simile, ma non si riusciva ancora a costruire numeri. Per me avere la versione 1.8.6.5164 (l'ultima parte è il numero di revisione) mi dice molto di più della semplice 1.8.6 e una nota che dice che qualcosa di secondario è cambiato, provalo

Essendo specifico per il software, il programma di base su Windows è msysgit, che è un'interfaccia terribile. Mi ha bloccato alcune volte, aveva un'interfaccia orribile e l'integrazione CLI-GUI era al massimo incerta. I drogati della riga di comando intorno a me odiavano ancora di più la gui.


Ora diamo un'occhiata a SVN. E dal momento che sono su Windows e ho un account Google, in particolare TortoiseSVN e Google Code.

Per prima cosa, completa l'integrazione della shell per fare tutto sul repository (e per te gente Linux, RabbitVCS fa la stessa cosa), non è necessaria alcuna GUI principale. Ottenere un repository è facile come un checkout, non è necessario SSH (non ricordo se Github ha richiesto SSH per i pull) e nessun repository completo + tutto il passato si impegna sul tuo HD.

Impegnarsi è estremamente facile, principalmente perché non sono richiesti SSH o stadiazione. Devi semplicemente controllare tutti i file che desideri utilizzando l'utilissima opzione seleziona tutto che nella mia versione di msysgit non era disponibile, digita un messaggio di commit e premi commit. Google Code ti chiede quindi le tue informazioni di accesso (che la maggior parte dei clienti memorizza) e il tuo lavoro. Semplice, facile e senza SSH

Numeri di versione? Con un po 'di codice semplice, puoi aggiungere un numero di versione e un numero di commit a tutti i checkout, il che rende le cose molto più facili. Ottieni anche numeri di versione utilizzabili che mostrano effettivamente una modifica, ad esempio 1.8.6.5165 è più recente di 1.8.6.5164.

Documentazione? Beh, è ​​difficile da dire. La tartaruga è documentata, ma non ho fatto riferimento alla documentazione ufficiale da così tanto tempo che non posso giudicare. Leggere una semplice guida introduttiva è stato abbastanza per me.

La fusione è qualcos'altro che non posso confrontare. Ho dovuto farlo una volta in Git quando qualcun altro ha commesso una modifica a un file su cui stavo lavorando, ma mai in SVN.


Quale consiglierei? Bene in grandi gruppi, git ha i suoi vantaggi, principalmente nel suo ciclo di sviluppo non lineare. In un altro progetto ho visto 4 programmatori iniziare in rami separati, quindi unire tutto il codice in modi molto strani che in qualche modo si sono trasformati nel ramo master finale. Github e msysgit avevano uno strumento di visualizzazione davvero carino per l'intero progetto che mi piaceva molto.

Per i progetti di singoli sviluppatori o piccoli team, SVN sarebbe la migliore in quanto la maggior parte delle funzionalità di Gits non vengono utilizzate e si ottengono solo parti negative. La semplicità è una cosa così bella


6
La fusione con SVN è piuttosto rischiosa (rispetto a git). Questa è una cosa che è importante notare in ogni confronto.
Khelben,

5
Perché hai bisogno di "far apparire il concorso" ogni volta? È un agente chiave. Devi solo aprirlo una volta, quando accedi al tuo computer. Aggiungi la tua chiave e il gioco è fatto . (E puoi renderlo ancora più semplice associando il tuo file di chiavi al concorso e aggiungendolo alla tua cartella di avvio. Accedi, si apre con la finestra di dialogo che ti
chiede

3
@Thorbjoern @Frank Shearer: Penso che il fatto stesso che stai dicendo "puoi farlo, o puoi farlo, e non avere questi problemi" sottolinea il punto: quelle sono soluzioni a un problema o un problema. È un non-problema con alcuni altri VCS '.
Steven Evers,

4
Questa risposta mi colpisce come molte lamentele e lamenti per qualcosa che il poster chiaramente non ha impiegato del tempo per capire. Ho trascorso molto tempo sia in git che in svn, sia su Linux che su Windows, e dimostrerò che git è di gran lunga superiore a svn, in termini di concetto, modello di dati, comprensibilità e utilità.
gahooa,

4
@TheLQ No. Non è affatto "la tua mentalità Linux". È una cosa semplice da configurare, è ben documentato, PuTTY è un'eccellente suite di applicazioni Windows che rende le cose davvero molto semplici da usare. E dovresti davvero crittografare il tuo trasferimento di codice, se lavori attraverso una rete pubblica. Ed è offensivo per gli utenti Windows supporre che siano troppo stupidi per imparare a usare gli strumenti che dovrebbero usare. Non sto chiedendo alle persone di sborsare nelle cose. Sto chiedendo loro di crittografare le loro informazioni importanti.
Frank Shearar,

22

La seguente citazione da Q4TD riassume praticamente per me:

“Ho amato Git fino a quando non l'ho provato. Ora adoro Mercurial. "

        - Tor Norbye, The Java Posse Podcast

Inoltre, hgsubversion è un client di sovversione abbastanza buono per Linux (dove di solito uso la riga di comando, a differenza di Windows dove di solito uso TortoiseSVN). Il più grande vantaggio: nessuna .svnsottocartella in ogni cartella, solo una .hgal livello superiore.

Aggiornamento: in risposta alla richiesta di Alex nei commenti di "dire di più sul perché git non ha funzionato per te e su come Mercurial ha funzionato meglio":

Non direi che Git non funziona per me, ma Murcurial funziona meglio IMO.

In breve, questo è Mercurial:

testo alternativo

e questo è Git:

testo alternativo

E asserisco che Mercurial farà tutto ciò che la maggior parte degli sviluppatori ne avrà bisogno, senza dover consultare il manuale per capire come fare le cose di tutti i giorni.

Devo ammettere che ho usato Git solo occasionalmente, ma la comunità di programmatori ha gagato su linguaggi come Ruby e Python, in parte, per la loro concisione ed eleganza, mentre Git si sente come un cammello progettato da un comitato di cammelli.

Bah, ora guarda cosa hai fatto? C'è rant dappertutto. Muoviti, niente da vedere ... niente da vedere ...

Aggiornamento 2: E un altro tweet a proposito mi sono appena imbattuto:

"Git diventa più facile una volta che hai avuto l'idea di base che i rami sono endofunctor omeomorfi che mappano le sotto-cartelle di uno spazio di Hilbert."


Hai mai provato RabbitVCS?
TheLQ

No, ma uso KDE, non Gnome, quindi non mi andrebbe bene comunque. Occasionalmente userò un client SVN grafico su Linux, ma solo quando faccio qualcosa di un po 'esoterico come esplorare un repository o confrontare le revisioni precedenti. Non per il semplice aggiungi / rimuovi / commit / registri. La riga di comando è più veloce.
Evan,

2
Potresti dire di più sul perché Git non ha funzionato per te e su come Mercurial ha funzionato meglio? Sarebbe piuttosto interessante da leggere.
Alex Feinman,

Sono abbastanza sicuro che alla rappresentazione di Git manchi un rasoio lungo 6 "...
Tim Post

2
@Tim: rebase? Probabilmente è dall'altra parte.
Alan Pearce,

14

Non ho un singolo sistema di controllo della versione "migliore", ma piuttosto un singolo paradigma VCS migliore.

Ho usato diversi sistemi di controllo versione centralizzata e diversi sistemi di controllo versione distribuita. E posso dire senza esitazione che nessuno dovrebbe mai infliggere un CVCS a se stesso.

Non mi interessa quale DVCS scegli (il mio preferito in particolare è Git), ma per favore fai un favore e usa un DVCS. Per uno: sarai molto più flessibile. I DVCS possono emulare banalmente un flusso di lavoro CVCS (semplicemente non fork il repository e trattare i repository locali solo come un chache anziché un fork indipendente), mentre il contrario è impossibile. E mentre logicamente, fare questa emulazione dovrebbe comportare un certo sovraccarico (e in effetti lo fa), trovo ancora più facile da usare (per non parlare di molto più performante a causa della memorizzazione nella cache locale) rispetto a qualsiasi CVCS che ho usato.


3
Questa è un'ottima risposta Non esiste un VCS "migliore", ma concordo pienamente sul fatto che si dovrebbe usare un DVCS.
Nick Hodges,

Rendi mio un DVCS, ma tieni gli endofunctor omeomorfi che mappano le sottomenifold di uno spazio di Hilbert, per favore. Ergo, Mercurial.
Warren P,

11

Non posso dire di aver incontrato il miglior software di controllo della versione, ma posso dirti di stare lontano da VSS e MKS. Entrambi sono cani che dovrebbero essere evitati a tutti i costi.


7

Non direi il meglio, ma uno con caratteristiche e concetti molto interessanti.

Fossil è un controllo di versione distribuita, tracciamento dei bug e progetto wiki costruito su database SQLite come repository.


5

Team Foundation Server

Perché:

  1. È un VCS buono e solido . (Non lo considero il migliore in ogni caso, ma ha dei buoni extra.)
  2. Il suo tracciamento di attività e bug integrato che si integra in Visual Studio mi aiuta a rimanere concentrato e a sapere di cosa ho bisogno per lavorare su tutto in un unico posto (applicare automaticamente un check-in a un bug o attività e chiuderlo è piuttosto buono, anche se puoi ottenere plugin per altri sistemi / eclipse / etc per farlo.)
  3. Integra attività / rilevamento bug / progetti direttamente in Project Server, quindi raramente devo tenere aggiornati i piani di progetto o le schede attività. Gli aggiornamenti al progetto in Project Server vengono automaticamente filtrati come attività in TFS e in Visual Studio affinché io possa vederli automaticamente.

2
Sono curioso di sapere cosa ne pensi del flusso di lavoro limitato esclusivamente a Visual Studio per praticamente tutto il lavoro di sviluppo. Inoltre, hai dovuto eseguire una delle impostazioni dell'infrastruttura per TFS? La mia esperienza è stata opposta alla tua in questo modo: # 1 - VCS non è stato facile da usare, spesso era traballante e la modalità offline è stata creata dallo stesso satana. # 2 Il task integrato e il tracciamento dei bug erano ingombranti rispetto ad altri strumenti, quindi il numero 3 era irrilevante per noi e ha creato un lavoro duplicato. L'ho usato 3 volte diverse ora con gli stessi risultati negativi ogni volta.
Giordania

1. Sono d'accordo con il succhiare in modalità offline. Tuttavia, non ho avuto molti problemi online, ma sono sempre connesso. Molti dei controlli VCS, in particolare con la rimappatura delle cartelle, sono in realtà nascosti nei menu. È questo il problema che stai riscontrando? 2. È decisamente più ingombrante, ma consente di risparmiare lavoro complessivo per il mio team integrato con il server di progetto. 3. Come crea un lavoro duplicato? Stai duplicando le attività in project server e TFS? C'è un plug-in open source per il 2007 e una beta per il 2010 che consente loro di sincronizzarsi tra loro.
Ryan Hayes,

1
Mi ha costretto a VS, ma siamo un negozio totalmente .NET. Uso TFS con i miei progetti Java a casa, però. Prova SVNBridge su svnbridge.codeplex.com che ti consente di usare Tortoise con TFS. Se usi Tortoise (come la maggior parte delle persone Java, ruby, non.net), ti dovrebbe aiutare con il tuo flusso di lavoro in altri progetti.
Ryan Hayes,

4

Ho usato una moltitudine di sistemi di controllo della versione nella mia lunga storia:

  • RPPT - (Rotoli di nastro di carta perforata). In una scatola da scarpe. Non sto scherzando.
  • PVCS - (sistema di controllo versione Polytron). Il primo vero VCS che ho usato.
  • SCCS - tanto tempo fa, non ricordo nulla di eccezionalmente buono o cattivo al riguardo.
  • RCS - come altri hanno sottolineato, preferirebbe succhiare palle di asino sudate.
  • CVS - è stato solo un dolore se usato con più di 2 programmatori. migliore caratteristica: rcs2cvs.
  • VSS: funziona, tranne il martedì, quando corrompe l'intero repository.
  • Perforce: costa più della mia auto. Il VCS stesso è accettabile, ma i ragazzi informatici che controllano ogni aspetto dell'uso non lo inseriranno mai nella mia lista "preferita".
  • SVN: ramificare e fondere è una cagna, ma in generale è migliore di qualsiasi altra. Non così buono con un sacco di piccoli cambiamenti eccezionali in attesa di revisione.
  • Mercurial - che poca esperienza che faccio con esso, mi piace. Potrei provarlo sul mio prossimo progetto.
  • Git - non ha mai avuto l'opportunità di usarlo.

Sebbene una coppia fosse orrore, la maggior parte andava "bene". Non mi hanno ostacolato. Finché uno strumento non rende la mia vita significativamente più difficile , non mi dispiace davvero.

La cosa vera è capire i punti di forza e di debolezza di ciascuno. Comprendere l'ambiente di destinazione:

  • distribuito o locale
  • squadra piccola o grande
  • servizio vcs ospitato o meno
  • facile integrazione in altri strumenti

Joel ha anche rilasciato un'osservazione importante: impara lo strumento e il suo vero modello di utilizzo. Ha lottato potentemente cercando di far comportare Mercurial come Subversion.


1
Se solo il commento su VSS fosse uno scherzo ... evita come la peste.
DevSolo,

Ah, PVC, i ricordi che riporta :) Che pezzo di spazzatura che era.
Henry,

Quell'elenco mi ha ricordato il linguaggio basato sul "spararti al piede". +1
Orbling

Ricordo cose cattive su SCCS, ma era generalmente utilizzabile. Ricordo di aver provato a fare un lavoro simultaneo su file con SCCS e altri programmatori, ed è per questo che mi sono innamorato di CVS quando l'ho visto.
David Thornley,

Visual SourceSafe, un VCS specialmente per i programmatori che vogliono sbalordire gli occhi con i cucchiai.
Mark Booth,

2

Un nuovo sistema che utilizziamo nel mio ufficio è Plastic SCM (http://www.plasticscm.com/). Funziona molto bene per il nostro piccolo team e ci dà un grande controllo su ogni aspetto della gestione delle fonti.


1

SCCS .

Oppure, se ti capita di non aver vissuto una grotta negli ultimi 38 anni, CSSC .

Seriamente, la mia azienda sta usando TeamWare , che è una specie di pseudo DVCS basato su SCCS.

No, non sto scherzando.

Sun è passato a Mercurial da TeamWare solo pochi anni fa. Ora dovresti capire perché Java sembra muoversi così lentamente.


1

MPW: Beh, non posso davvero fare una recensione nonostante i miei sforzi.

Questo era quando stavo imparando la programmazione al liceo, e l'unico compilatore C ++ veramente gratuito da avere era Macintosh Programming Workbench, che tenevo su un disco zip e comparivo in qualunque Performa fosse disponibile in laboratorio.

MPW è arrivato con dozzine di strumenti (nessuno dei quali è stato resedit, ovvero un download separato), e uno di questi era un'utilità di controllo della versione. Ha aperto una piccola finestra con una sola riga di testo e dovevi trascinare i tuoi progetti o file su di essa. Non aveva documentazione che io fossi mai stato in grado di scoprire, insolito considerando che tutto il resto sembrava avere ottimi documenti, e quindi non ho mai abbastanza capito come usarlo.

Quello è stato il mio primo pennello con VC e l'ultimo per un bel po 'di tempo. Ora uso git per tutto.


Proiettore! A un lavoro part-time durante il college ho usato una versione (ingannata) di quello. Bei tempi.
RyanWilcox,

0

RCS - Revision Control System

La codifica in solo è diventata così semplice.


Stai scherzando, vero Xepoch? Per favore, Dio sta scherzando.
Marc W,

Ragazzi, mi state facendo ridere. In realtà utilizzo RCS ma SOLO per i miei siti Web personali, ecc. Stavo scherzando a metà sull'utilizzo per lo sviluppo principale, MA l'ho visto usato esclusivamente (piuttosto che CVS) su sistemi Unix di sviluppo condiviso. Onestamente, non abbiamo avuto alcun problema, ma NON si presta a niente di diverso da una singola funzionalità del server.
Jé Queue,

1
@Xepoch, potresti stare meglio imparando Git o Mercurial- DCVS funziona benissimo per lo sviluppo solista.
Fishtoaster,

1
Sai qual è la cosa davvero bella di RCS? Puoi mettere tutti i tuoi file RCS, v in una struttura di directory corretta e hai un repository CVS quasi pronto per l'uso. Ci sono quindi molti strumenti per convertire da CVS a qualsiasi sistema moderno che ti piace, come Mercurial.
David Thornley,

@Xepoch, la facilità con cui eseguire il backup dei vcs distribuiti è imbattibile.

0

Non ClearCase, almeno per un sistema Unix / Linux (forse con Windows il programma di installazione è più semplice). Per me è stato più semplice imparare un nuovo strumento, Perforce, piuttosto che aggiornare il nostro server ClearCase.

Attualmente uso Perforce al lavoro e mi piace, ma non ho idea se sia il migliore. Configurare l'ambiente della riga di comando e Perforce Server è un po 'complicato, ma l'utilizzo di Visual Client è abbastanza semplice. Mi piace pensare che gli utenti si divertano abbastanza con esso per le attività quotidiane; è solo l'installazione iniziale richiede un po 'di lavoro.


0

Ho usato Visual SourceSafe e lo odiavo, ma era meglio di niente, ma non di molto. Negli ultimi due anni, ho usato qualcosa chiamato QCVS da Qumasoft.com scritto, posseduto e supportato da Jim Voris il programmatore. GUI semplice, prezzo economico, buon supporto.

Fa solo il lavoro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.