Dovrei usare SVN o Git? [chiuso]


321

Sto iniziando un nuovo progetto distribuito. Dovrei usare SVN o Git e perché?


5
Sì, git funziona su Mac. Se usi macports per installarlo, installerà anche un front-end mac per le interfacce di commit e di ricerca.
Seth Johnson,

3
Eventuali duplicati di stackoverflow.com/questions/871/...

3
@Andre - perché è possibile utilizzare MonoDevelop - Passo da Vault a SVN in modo da poter sviluppare software .NET sul mio Mac o PC. Non c'era client per Vault ma c'era per SVN :-)
schmoopy


4
Github / bitbucket + sourcetree = heaven! - sourcetreeapp.com
thecodeassassin

Risposte:


253

SVN è un repository e molti clienti. Git è un repository con molti repository client, ciascuno con un utente. È decentralizzato a un punto in cui le persone possono monitorare le proprie modifiche localmente senza dover spingere le cose su un server esterno.

SVN è progettato per essere più centrale in cui Git è basato su ogni utente che ha il proprio repository Git e quei repository spingono le modifiche in una centrale. Per questo motivo, Git offre alle persone un migliore controllo della versione locale.

Nel frattempo hai la scelta tra TortoiseGit , GitExtensions (e se ospiti il ​​tuo repository git "centrale" su github, il loro client - GitHub per Windows ).

Se stai cercando di uscire da SVN, potresti voler valutare Bazaar per un po '. È uno dei sistemi di controllo della versione di prossima generazione con questo elemento distribuito. Non dipende da POSIX come git, quindi ci sono build native di Windows e ha alcuni potenti marchi open source che lo supportano.

Ma potresti non aver ancora bisogno di questo tipo di funzionalità ancora. Dai un'occhiata alle caratteristiche, ai vantaggi e agli svantaggi dei VCS distribuiti . Se hai bisogno di più delle offerte SVN, prendine in considerazione una. In caso contrario, potresti voler rimanere con l'integrazione desktop SVN (attualmente) superiore.


24
Potrebbe anche dare un'occhiata a Hg (Mercury)
Joel

24
Le cose sono migliorate molto da ottobre 2008. Puoi installare TortoiseGit, prendere l'ultima versione portatile di MSysGit e dire a TortoiseGit dove trovarla. Ho appena spostato il mio grande repository svn su git oggi perché il supporto scarso di ridenominazione di svn alla fine mi ha fatto abbastanza arrabbiare.
Siamo tutti Monica,

4
Passando da 2 anni ora abbiamo alcuni buoni strumenti di Windows. Attualmente sto usando netbeans con MSysGit. Ho anche avuto fortuna con TortoiseGit. Penso che sia abbastanza buono per essere utilizzato in produzione. Considerare quanto sia difficile gestire semplici conflitti in gvers di sovversione è un enorme miglioramento.
Keyo,

24
Usiamo Git su Windows pesantemente e abbiamo da molto tempo ormai. Git è assolutamente fantastico su Windows.
Charlie Flowers,

13
@Oli Sarebbe bene aggiornare la tua risposta (in particolare sul client git di Windows) in base ai commenti qui e alla tua esperienza. La risposta attuale sembra distorta ora che sono trascorsi 2-3 anni da quando è stata scritta.
Amit

111

Non ho mai capito questo concetto di "git non essere buono su Windows"; Sviluppo esclusivamente su Windows e non ho mai avuto problemi con Git.

Consiglio vivamente git over sovversion; è semplicemente molto più versatile e consente lo "sviluppo offline" in un modo in cui la sovversione non potrebbe mai davvero. È disponibile su quasi tutte le piattaforme immaginabili e ha più funzionalità di quelle che probabilmente non userete mai.


9
D'altra parte, ho avuto alcuni problemi con git su Windows, ha fatto cose davvero strane al mio repository. E stavo usando la versione più recente di Cygwin (era qualcosa come un mese fa).
Roman Plášil,

7
@Roman: beh, la porta Cygwin non è quasi la stessa cosa della porta nativa win32. Mi aspetto che la porta di Cygwin sia molto meno ben testata ...
SamB

49
"più funzionalità di quelle che probabilmente userai mai" è una bandiera rossa nel mio libro
BT

26
@ BT "bandiera rossa" Non sono d'accordo. Mi ritrovo spesso a desiderare che ci sia un modo per fare qualcosa e dopo un po 'di ricerca scopro che ci sono alcuni comandi di cui non sapevo che fanno proprio questo. Uso GIT anche sul mio computer Windows e non ho ancora avuto grossi problemi.
testing123

@ testing123 ma poi non sono caratteristiche "probabilmente [n] non userai mai" perché hai finito per usarle.
Mulllhausen,

77

Ecco una copia di una risposta che ho fatto di alcune domande duplicate da allora cancellate su Git vs. SVN (settembre 2009).

Meglio? A parte il solito link WhyGitIsBetterThanX , sono diversi:

uno è un VCS centrale basato su una copia economica per filiali e tag l'altro (Git) è un VCS distribuito basato su un grafico di revisioni. Vedi anche Concetti chiave di VCS .


Quella prima parte ha generato alcuni commenti male informati fingendo che lo scopo fondamentale dei due programmi (SVN e Git) sia lo stesso, ma che siano stati implementati in modo abbastanza diverso.
Per chiarire la differenza fondamentale tra SVN e Git , vorrei riformulare:

  • SVN è la terza implementazione di un controllo di revisione : RCS, quindi CVS e infine SVN gestiscono le directory dei dati con versione. SVN offre funzionalità VCS (etichettatura e unione), ma il suo tag è solo una copia della directory (come un ramo, tranne per il fatto che non si "dovrebbe" toccare nulla in una directory di tag) e la sua unione è ancora complicata, attualmente basata su meta -dati aggiunti per ricordare ciò che è già stato unito.

  • Git è una gestione del contenuto dei file (uno strumento creato per unire i file), evoluto in un vero sistema di controllo della versione , basato su un DAG ( Directed Acyclic Graph ) di commit, in cui i rami fanno parte della storia dei dati (e non dei dati stessi ) e dove i tag sono veri metadati.

Dire che non sono "fondamentalmente" diversi perché puoi ottenere la stessa cosa, risolvere lo stesso problema, è ... semplicemente falso su così tanti livelli.

  • se hai molte fusioni complesse, eseguirle con SVN sarà più lungo e più soggetto a errori. se devi creare molti rami, dovrai gestirli e unirli, ancora più facilmente con Git che con SVN, specialmente se è coinvolto un numero elevato di file (la velocità diventa importante)
  • se si dispone di fusioni parziali per un lavoro in corso, si trarrà vantaggio dall'area di gestione temporanea Git (indice) per impegnare solo ciò di cui si ha bisogno, riporre il resto e passare a un altro ramo.
  • se hai bisogno di sviluppo offline ... bene con Git sei sempre "online", con il tuo repository locale, qualunque sia il flusso di lavoro che vuoi seguire con altri repository.

Ancora i commenti su quella vecchia risposta (cancellata) insistevano:

VonC: Stai confondendo la differenza fondamentale nell'implementazione (le differenze sono molto fondamentali, siamo entrambi chiaramente d'accordo su questo) con la differenza di scopo.
Sono entrambi strumenti usati per lo stesso scopo: ecco perché molti team che in precedenza hanno utilizzato SVN sono stati in grado di scaricarlo con successo a favore di Git.
Se non risolvessero lo stesso problema, questa sostituibilità non esisterebbe.

, a cui ho risposto:

"sostituibilità" ... termine interessante ( utilizzato nella programmazione informatica ).
Ovviamente, Git non è certo un sottotipo di SVN.

Puoi ottenere le stesse caratteristiche tecniche (tag, branch, merge) con entrambi, ma Git non ti ostacola e ti consente di concentrarti sul contenuto dei file , senza pensare allo strumento stesso.

Certamente non puoi (sempre) semplicemente sostituire SVN con Git "senza alterare nessuna delle proprietà desiderabili di quel programma (correttezza, compito svolto, ...)" (che è un riferimento alla suddetta definizione di sostituibilità ):

  • Uno è uno strumento di revisione esteso, l'altro un vero sistema di controllo della versione.
  • Uno è adatto a progetti monolitici di dimensioni medio-piccole con un semplice flusso di lavoro di fusione e (non troppe) versioni parallele. SVN è sufficiente a tale scopo e potresti non aver bisogno di tutte le funzionalità di Git.
  • L'altro consente progetti di medie e grandi dimensioni basati su più componenti ( un repository per componente ), con un numero elevato di file da unire tra più rami in un flusso di lavoro di unione complesso, versioni parallele nei rami, retrofit di fusioni e così via. Potresti farlo con SVN, ma con Git stai molto meglio.
    SVN semplicemente non può gestire nessun progetto di qualsiasi dimensione con alcun flusso di lavoro di unione. Git can.

Ancora una volta, la loro natura è fondamentalmente diversa (il che porta quindi a una diversa implementazione ma non è questo il punto).
Uno vede il controllo di revisione come directory e file, l'altro vede solo il contenuto del file (al punto che le directory vuote non si registrano nemmeno in Git!).

L'obiettivo generale generale potrebbe essere lo stesso, ma non è possibile utilizzarli allo stesso modo, né è possibile risolvere la stessa classe di problemi (in ambito o complessità).


10
Non sono d'accordo con te sul fatto che git e svn siano fondamentalmente diversi, ma non sono d'accordo su molti dei tuoi punti. svn potrebbe essere stato scritto per sostituire cvs, ma non sono in alcun modo correlati altrimenti, mentre cvs è iniziato come script sopra RCS, quindi esiste una relazione diretta. Tuttavia, la persona che stai citando ha perfettamente ragione, entrambi gestiscono fondamentalmente le revisioni dei file, l'implementazione e il processo in cui ciò accade (o come lo fa) sono dettagli di implementazione. È come la differenza tra CRC e SHA1, fondamentalmente molto diversi ma fanno la stessa cosa.
Erik Funkenbusch,

37

2 vantaggi chiave di SVN che vengono citati raramente:

  1. Supporto di file di grandi dimensioni. Oltre al codice, utilizzo SVN per gestire la mia home directory. SVN è l'unico VCS (distribuito o meno) che non si strozza con i miei file TrueCrypt (per favore correggimi se c'è un altro VCS che gestisce efficacemente 500 MB + file). Questo perché i confronti diff sono trasmessi in streaming (questo è un punto molto essenziale). Rsync è inaccettabile perché non è bidirezionale.

  2. Checkout / check-in repository parziale (sottodir). Mercurial e bzr non lo supportano e il supporto di git è limitato. Questo è negativo in un ambiente di squadra, ma ha un valore inestimabile se voglio controllare qualcosa su un altro computer dalla mia home directory.

Solo le mie esperienze.


6
"per favore correggimi se c'è un altro VCS che gestisce efficacemente 500 MB + file" - Perforce ovviamente!
James Creasy,

8
Perforce = non libero. Inoltre, Perforce non è disponibile per tutte le piattaforme.
WhyNotHugo,

4
Perché non mettere il repository SVN all'interno dei contenitori TrueCrypt? Potresti anche eseguire il tunneling di questo tramite ssh e configurare il server per archiviare quel particolare repository all'interno di un altro file TrueCrypt. Questo ha l'ulteriore vantaggio di poter effettuare checkout parziali di quel repository.
WhyNotHugo,

1
@Hugo per quanto ne so, il client Perforce è disponibile per Windows, Unix, varianti Linux, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS e Novell File Server. Manca qualche piattaforma rilevante nell'elenco?
eis,

1
Sì, OpenBSD (e questo lo sapevo per esperienza, non avevo bisogno di cercarlo su Google). Suppongo che non funzionerà neanche su maemo, anche se potrei sbagliarmi (e sì, uso git su maemo).
WhyNotHugo,

25

Dopo aver fatto ulteriori ricerche e aver esaminato questo link: https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html

(Alcuni estratti di seguito):

  • È incredibilmente veloce. Nessun altro SCM che ho usato è stato in grado di tenere il passo con esso, e ho usato molto, tra cui Subversion, Perforce, darcs, BitKeeper, ClearCase e CVS.
  • È completamente distribuito. Il proprietario del repository non può dettare come lavoro. Posso creare filiali e apportare modifiche mentre sono disconnesso sul mio laptop, quindi sincronizzarlo in seguito con un numero qualsiasi di altri repository.
  • La sincronizzazione può avvenire su molti media. Un canale SSH, su HTTP via WebDAV, tramite FTP o inviando e-mail contenenti patch da applicare al destinatario del messaggio. Un repository centrale non è necessario, ma può essere utilizzato.
  • I rami sono persino più economici di quelli di Subversion. Creare un ramo è semplice come scrivere un file di 41 byte su disco. L'eliminazione di un ramo è semplice come eliminare quel file.
  • A differenza dei rami di Subversion portano avanti la loro storia completa. senza dover eseguire una copia strana e camminare attraverso la copia. Quando ho usato Subversion ho sempre trovato scomodo guardare la storia di un file sul ramo che si è verificato prima della creazione del ramo. da #git: spearce: non capisco una cosa su SVN nella pagina. Ho creato un ramo in SVN e sfogliando la cronologia ho mostrato alla cronologia un file nel ramo
  • La fusione delle filiali è più semplice e più automatica in Git. In Subversion è necessario ricordare quale è stata l'ultima revisione da cui è stato unito in modo da poter generare il comando di unione corretto. Git lo fa automaticamente e lo fa sempre bene. Ciò significa che ci sono meno possibilità di fare un errore quando si uniscono due rami insieme.
  • Le fusioni di filiali vengono registrate come parte della cronologia corretta del repository. Se unisco due rami insieme, o se unisco nuovamente un ramo nel tronco da cui proviene, quell'operazione di unione viene registrata come parte della storia del repertorio come eseguita da me, e quando. È difficile contestare chi ha eseguito l'unione quando è proprio lì nel registro.
  • La creazione di un repository è un'operazione banale: mkdir foo; cd foo; git init Questo è tutto. Il che significa che creo un repository Git per tutto in questi giorni. Tendo a usare un repository per classe. La maggior parte di questi repository ha meno di 1 MB di spazio su disco in quanto memorizzano solo appunti di lezioni, compiti a casa e risposte di LaTeX.
  • I formati di file interni del repository sono incredibilmente semplici. Ciò significa che la riparazione è molto facile da fare, ma ancora meglio perché è così semplice che è molto difficile corrompere. Non penso che nessuno abbia mai avuto un repository Git corrotto. Ho visto Subversion con fsfs corrompere se stesso. E ho visto Berkley DB corrompersi troppe volte per fidarsi del mio codice nel backend bdb di Subversion.
  • Il formato di file di Git è molto efficace nel comprimere i dati, nonostante sia un formato molto semplice. Il repository CVS del progetto Mozilla è di circa 3 GB; è circa 12 GB nel formato fsfs di Subversion. In Git sono circa 300 MB.

Dopo aver letto tutto questo, sono convinto che Git sia la strada da percorrere (anche se esiste un po 'di curva di apprendimento). Ho usato Git e SVN anche su piattaforme Windows.

Mi piacerebbe sapere cosa hanno da dire gli altri dopo aver letto quanto sopra?


15
Git è incredibilmente veloce in alcune operazioni, principalmente perché l'operazione ha effetto solo sul repository locale. Un check-in Git, ad esempio, non dovrebbe essere paragonato giustamente a un check-in SVN, perché un check-in SVN è anche una spinta della modifica a un repository di gestione temporanea per il resto del team. Ciò richiede un successo di rete e il confronto di nessuna rete di Git si impegna in un trasferimento di rete privo di confronti inappropriati. Se ti impegni e poi perdi il disco rigido, con Git hai perso le modifiche. Va bene se questo è ciò che ti aspetti, ma non è previsto negli SCM non distribuiti.
Edwin Buck,

1
@EdwinBuck Non prendendo in considerazione ciò che Waqar ha fatto, nei test anche tenendo conto del tempo di rete, git tende ad essere più veloce: git-scm.com/about/small-and-fast
Sqeaky

Il punto "Creare un repository è un'operazione banale" è estremamente importante, specialmente su Windows: rispetto a SVN, è molto più semplice simulare rapidamente un gruppo di repository distribuiti interconnessi, tutti collegati a un repository centrale (--bare) con Git di è fare l'analogo con SVN (installare l'applicazione server SVN di Windows, ecc.). Inoltre (stranamente) trovo Git più coerente tra i sistemi operativi: la riga di comando è molto ben progettata e quindi sufficiente per la maggior parte del tempo (e praticamente identica tra i sistemi operativi) rispetto a varie app client / server native SVN ...
Shivan Dragon

1
L'articolo wiki a cui ti riferisci è pieno di errori. Pertanto, la tua risposta è sbagliata. Downvoted. C'è una pagina di discussione sul wiki che si riferisce a svnvsgit.com che spiega perché il confronto è sbagliato.
bahrep,

Incredibilmente veloce? Ho spostato il progetto ciforth da un CVS locale a Github. Questo è un progetto semplice ma ha un grande file sorgente principale di 10.000 righe. Se provo ad usare la colpa su questo file, Github cade in un timeout. Soprattutto se uno non si accontenta di dire velocemente, e insiste nell'usare un tale qualificatore, non è un'opinione equilibrata, rendendomi sospettoso di tutto ciò che dici. Groetjes Albert
Albert van der Horst,

12

Vorrei impostare un repository Subversion. In questo modo, i singoli sviluppatori possono scegliere se utilizzare i client Subversion o Git (con git-svn). L'utilizzo git-svnnon offre tutti i vantaggi di una soluzione Git completa, ma offre ai singoli sviluppatori un grande controllo sul proprio flusso di lavoro.

Credo che ci vorrà un tempo relativamente breve prima che Git funzioni altrettanto bene su Windows come su Unix e Mac OS X (da quando lo hai chiesto).

Subversion ha strumenti eccellenti per Windows, come TortoiseSVN per l'integrazione con Explorer e AnkhSVN per l'integrazione con Visual Studio.


11

La cosa divertente è: ospito progetti in Subversion Repos, ma accedo ad essi tramite il comando Git Clone.

Leggi Sviluppa con Git su un progetto codice Google

Sebbene Google Code parli in modo nativo di Subversion, puoi facilmente usare Git durante lo sviluppo. La ricerca di "git svn" suggerisce che questa pratica è diffusa e anche noi ti incoraggiamo a sperimentarla.

L'uso di Git su un repository Svn mi dà vantaggi:

  1. Posso lavorare distribuito su più macchine, impegnandomi e tirandole da e verso di loro
  2. Ho un repository svn centrale backup/public per gli altri a dare un'occhiata
  3. E sono liberi di usare Git per conto proprio

3
Solo una nota: a partire da luglio 2011, Google Code supporta Git in modo nativo.
Jeremy Salwen,

9

Non rispondo davvero alla tua domanda, ma se vuoi i vantaggi del Controllo di revisione distribuito - sembra come te - e stai usando Windows Penso che sarebbe meglio usare Mercurial piuttosto che Git come Mercurial ha un supporto Windows molto migliore. Anche Mercurial ha una porta per Mac.


9

Se il tuo team ha già familiarità con i software di controllo di versione e sorgente come cvs o svn, quindi, per un progetto semplice e di piccole dimensioni (come affermi che lo sia), ti consiglierei di attenersi a SVN. Mi sento davvero a mio agio con svn, ma per l'attuale progetto di e-commerce che sto facendo su Django, ho deciso di lavorare su git (sto usando git in modalità svn, cioè con un repository centralizzato su cui spingo e tiro da al fine di collaborare con almeno un altro sviluppatore). L'altro sviluppatore è a proprio agio con SVN e, sebbene le esperienze degli altri possano essere diverse, entrambi stiamo passando un brutto momento ad abbracciare git per questo piccolo progetto. (Siamo entrambi utenti Linux hardcore, se è importante).

Il tuo chilometraggio può variare, ovviamente.


8

Sicuramente svn, dato che Windows è, nella migliore delle ipotesi, un cittadino di seconda classe nel mondo di git(vedi http://en.wikipedia.org/wiki/Git_(software)#Portability per maggiori dettagli).

AGGIORNAMENTO: Ci scusiamo per il collegamento interrotto, ma ho smesso di provare a far funzionare SO con URI che contengono parentesi. [link corretto ora. -ed]


1
Cordiali saluti: racchiudi l'URL tra parentesi angolari o sostituisci le parentesi con% 28 e% 29.
PhiLho,

1
La codifica URL funzionerà per la sintassi [] ()?
Hank Gay,

16
Questo è FUD errato. Git è fantastico su Windows. E SVN è piuttosto male ovunque.
Charlie Flowers,

6
Per tutti coloro che mi hanno votato per favore, tornate indietro e guardate i commenti degli sviluppatori di circa 2008: è abbastanza chiaro che Linus e la banda non si sono preoccupati di supportare Windows. Va bene: non voglio nemmeno farlo, e il mio software non è così complesso come VCS che si aspetta un comportamento POSIX dal filesystem. Sembra ingiusto, tuttavia, caratterizzare la mia affermazione come FUD se si guarda al contesto.
Hank Gay,

2
Forse nel 2008 git è andato male su Windows, ma uso msysgit dal 2009 e funziona perfettamente. Ciò include gitk, l'equivalente desktop offline di GitHub.
Dan Dascalescu,

8

Il punto principale è che Git è un VCS distribuito e Subversion centralizzato. I VCS distribuiti sono un po 'più difficili da capire, ma presentano molti vantaggi. Se non hai bisogno di questi vantaggi, Subversion potrebbe essere la scelta migliore.

Un'altra domanda è il supporto degli strumenti. Quale VCS è meglio supportato dagli strumenti che prevedi di utilizzare?

EDIT: Tre anni fa ho risposto in questo modo:

E Git funziona su Windows al momento solo tramite Cygwin o MSYS . Fin dall'inizio Subversion ha supportato Windows. Poiché le soluzioni git per Windows potrebbero funzionare per te, potrebbero esserci problemi, poiché la maggior parte degli sviluppatori di Git lavora con Linux e non aveva la portabilità nella mente fin dall'inizio. Al momento preferirei Subversion per lo sviluppo in Windows. Tra qualche anno questo potrebbe essere irrilevante.

Ora il mondo è leggermente cambiato. Git ora ha una buona implementazione su Windows. Anche se ho testato senza problemi su Windows (poiché non uso più questo sistema), sono abbastanza fiducioso che tutti i principali VCS (SVN, Git, Mercurial, Bazaar) abbiano un'implementazione corretta di Windows ora. Questo vantaggio per SVN è sparito. Gli altri punti (centralizzato vs. distribuito e verifica dell'assistenza dello strumento) rimangono validi.


Sono ottimista sul fatto che l'orizzonte dell'irrilevanza sarà molto più breve di qualche anno.
Greg Hewgill,

Sì, forse sarà solo un anno. Git ha una dinamica comunità di sviluppo. Ma anche la sovversione. Tra un anno o due dovrai rivedere entrambi per rispondere a questa domanda.
Mnementh,

1
Sono passati un anno o due dopo. Come va? :)
Merlyn Morgan-Graham,

3
A Git manca un'estensione del modello SCM distribuito alle altre fasi della pipeline di sviluppo del software. Non abbiamo un buon modello per sistemi di build a rilascio distribuito, test automatizzati distribuiti, controllo di qualità, controllo di rilascio, ecc. Stiamo solo ricevendo un supporto sperimentale per il backup distribuito, e questo dopo decenni di ricerche. Come tale Git offre di più allo sviluppatore e meno al processo di sviluppo del software. Tutte le implementazioni di Git alla fine benediscono un repo come quello centrale, il che semplifica le abilità Git più interessanti in facsimili di quelli SVN.
Edwin Buck,

1
@hibbelig Git non ha un repository centrale, ogni repository è effettivamente (grazie al suo design distribuito) uguale. Ciò significa che è necessario rielaborare la pipeline di produzione per gestire eventualmente tutti i repository allo stesso modo, oppure benedire artificialmente un repository con uno stato "artificialmente elevato" (ovvero il repository centrale ). Se si fa il primo, nessuno sa molto sulla costruzione di condutture parallele in cui un rilascio potrebbe provenire dalla scrivania di qualsiasi sviluppatore, se si fa il secondo, la promessa dell'elaborazione distribuita è tradita da una convenzione centralizzata.
Edwin Buck,

6

Opterei per SVN poiché è più ampiamente diffuso e meglio conosciuto.

Immagino, Git sarebbe meglio per l'utente Linux.


1
Questo, tuttavia, sta cambiando rapidamente. SVN perde quote di mercato, mentre GIT guadagna: Ad esempio: wikivs.com/wiki/Git_vs_Subversion#Popularity o programmers.stackexchange.com/questions/136079/…
Zelphir Kaltstahl

@Zelphir: non chiamerei 7 anni in fretta, ma sì, GIT guadagna quote di mercato ed è particolarmente migliore per unire i file.
Burkhard,

4

Git non è supportato nativamente in Windows, per ora. È ottimizzato per i sistemi Posix. Tuttavia, l'esecuzione di Cygwin o MinGW consente di eseguire correttamente Git.

Oggi preferisco Git a SVN, ma ci vuole un po 'per superare la soglia se vieni da CVS, terra SVN.


8
Definisci "nativamente". msysgit funziona bene
Milan Babuškov,

4

Probabilmente sceglierei Git perché sento che è molto più potente di SVN. Sono disponibili servizi di hosting di codice a basso costo che funzionano alla grande per me - non è necessario eseguire backup o interventi di manutenzione - GitHub è il candidato più ovvio.

Detto questo, non so nulla riguardo all'integrazione di Visual Studio e dei diversi sistemi SCM. Immagino che l'integrazione con SVN sia notevolmente migliore.


4

Ho usato SVN per molto tempo, ma ogni volta che ho usato Git, ho sentito che Git è molto potente, leggero e anche se un po 'di curva di apprendimento coinvolto, ma è meglio di SVN.

Quello che ho notato è che ogni progetto SVN, man mano che cresce, diventa un progetto di dimensioni molto grandi a meno che non venga esportato. Laddove, il progetto GIT (insieme ai dati Git) ha dimensioni molto ridotte.

In SVN, ho avuto a che fare con sviluppatori da principianti a esperti e i novizi e gli intermedi sembrano introdurre conflitti di file se copiano una cartella da un altro progetto SVN per riutilizzarla. Considerando che, penso in Git, basta copiare la cartella e funziona, perché Git non introduce le cartelle .git in tutte le sue sottocartelle (come SVN).

Dopo aver lavorato molto con SVN da molto tempo, sto finalmente pensando di spostare i miei sviluppatori e me su Git, poiché è facile collaborare e unire il lavoro, oltre a un grande vantaggio è che le modifiche di una copia locale possono essere impegnate tanto desiderato, e infine spinto alla filiale sul server in una volta, a differenza di SVN (dove di volta in volta dobbiamo eseguire il commit delle modifiche nel repository sul server).

Qualcuno che può aiutarmi a decidere se dovrei davvero andare con Git?


Non chiamerei nessuno sviluppatore che abbia copiato una cartella controllata da SVN in un altro progetto per riutilizzarla e non si aspettasse che i problemi evidenti fossero "intermedi". Li definirei novizi. Sì, hai ragione, è dovuto alla sottocartella .svn che dice a SVN a quale archivio appartengono i file. Se l'utente ha eliminato questa sottocartella .svn, potrebbe importare la cartella nel nuovo progetto SVN. Sono ancora con SVN, ma i miei bisogni sono pochi. GIT è ottimo per progetti più grandi.
dyasta,

3
Gli ultimi client svn non hanno bisogno di una .svncartella in ogni sottodirectory. Che "corregge" l'errore di copia prima che accada.
Edwin Buck,

4

Si riduce a questo:

Il tuo sviluppo sarà lineare? In tal caso, dovresti rimanere con Subversion.

Se, d'altra parte, il tuo sviluppo non sarà lineare, il che significa che dovrai creare ramificazioni per diverse modifiche e quindi ricollegarle alla linea di sviluppo principale (nota a Git come diramazione principale), Git farà MOLTO altro per te.


3

hai provato Bzr ?

È abbastanza buono, connesso (le persone che creano Ubuntu) ce l'hanno fatta perché non gli piaceva nient'altro sul mercato ...


Il supporto di Windows ha davvero bisogno di un po 'di lavoro qui, però. Non così tanto che non l'ho usato abbastanza felicemente per tutta la mia recente programmazione su Windows (di cui ho fatto un bel po '), o altro, ma comunque ...
SamB

Quasi il 100% delle volte con il sistema operativo, le persone "lo hanno reso [qualsiasi software] perché non piaceva nient'altro sul mercato".
WhyNotHugo,

@Hugo Con l'open source, se gli fosse piaciuto qualcos'altro sul mercato, avrebbero contribuito ad esso invece di fare qualcosa di nuovo.
gridò il

Questa non è una risposta alla domanda
Albert van der Horst,

@AlbertvanderHorst No, non lo è, la domanda ha avuto una risposta nei giorni del selvaggio west di SO quando nessuno sapeva niente di meglio e offriva un'alternativa. Discutibile nella fretta sembra che abbia anche sbagliato a scrivere il nome di Canonical. Mi vergogno!
Omar Kooheji,

3

Posso espandere la domanda e chiedere se Git funziona bene su MacOS?

Rispondi ai commenti: grazie per la notizia, non vedevo l'ora di provarlo. Lo installerò a casa sul mio Mac.


1
Sì, funziona magnificamente. L'ho installato tramite MacPorts e lo uso quotidianamente.
Greg Hewgill,

Lo fa. È ottimo su qualsiasi sistema basato su POSIX (Unix, Linux, Solaris, BSD, ecc.). È proprio Windows che si trova il problema.
Oli,

e git-gui e gitk probabilmente funzionano allo stesso modo su OS-X come su Linux e Windows. Contrariamente a tartaruga SVN, quale AFAIK è solo per Windows?
David Schmitt,

@David Schmitt: beh, tortoisesvn.tigris.org lo chiama "Estensione della shell di Windows per Subversion", quindi suppongo di sì, sì ;-).
SamB

@Robert: come è stata la tua esperienza con git su OS X?
David Schmitt,


2

SVN sembra una buona scelta sotto Windows, come sottolineato da altre persone.

Se qualcuno del tuo sviluppatore desidera provare GIT, può sempre utilizzare GIT-SVN in cui il repository SVN viene ricreato in un repository GIT. Quindi dovrebbe essere in grado di lavorare localmente con GIT e quindi utilizzare SVN per pubblicare le sue modifiche nel repository principale.


1

Devi andare con un DVCS, è come un salto di qualità nella gestione delle fonti. Personalmente uso Monotone e il suo tempo di sviluppo accelerato non ha fine. Lo stiamo usando per Windows, Linux e Mac ed è stato molto stabile. Ho persino buildbot che esegue build notturne del progetto su ciascuna delle piattaforme.

DVCS durante la distribuzione di solito significa che creerai un server centrale solo per consentire alle persone di inviare e modificare le modifiche.

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.