git vs Subversion - pro e contro [chiuso]


11

Sono un utente di SVN da molti anni ormai e non posso dire di esserne totalmente felice. Pochi giorni fa il mio partner mi ha chiesto di dare un'occhiata a Git dicendo che "ha prestazioni migliori, fusione e ramificazione più facili".

Ho letto alcuni articoli di confronto git vs. SVN e sarei felice se le persone potessero riassumere i pro ei contro usando entrambi i sistemi di controllo della versione.

Ora sto esaminando le persone che sono passate da un sistema all'altro e ascolto opinioni soggettive.

So per me che mi piace molto il modo in cui funziona SVN, avere un repository centrale da cui le persone possono effettuare il checkout, sapendo che posso distribuire da esso una copia di sviluppo dal vivo e una copia di produzione dal vivo, ma a volte abbiamo mal di testa che ordinano conflitti o altri errori e ogni volta che abbiamo bisogno di diff o esaminare la cronologia di un file, abbiamo la latenza di rete da affrontare.

D'altra parte, avere una piattaforma distribuita suona anche come un mal di testa, come puoi controllare gli accessi? hai un repository centrale da cui esegui il push e l'aggiornamento?

Grazie per avere chiarito meglio la questione.

Risposte:


15

Stai cercando di confrontare i due strumenti dalla percezione di un amministratore di sistema o come programmatore? Se stai guardando questo dal punto di vista dei programmatori, forse dovresti chiedere questo su StackOverflow. O meglio, forse dovresti guardare a ciò che è già stato chiesto di " git svn ".

La cosa su git e svn è che non è una o / o proposizione. Puoi eseguire un repository SVN e i tuoi sviluppatori possono usare git-svn per interagire con esso se pensano che git sia uno strumento migliore in un caso particolare.


2

Non ci sono davvero professionisti da sovvertire su git, davvero. Mentre git è distribuito, tutti possono lavorare fuori da un repository centrale usando filiali di tracciamento remote. git è più veloce, più flessibile e la fusione funziona davvero. Inoltre, puoi realisticamente lavorare offline mentre con sovversione non puoi eseguire il commit delle modifiche se non lo hai Puoi lavorare più facilmente con i singoli commit in git contro avere un singolo ID di commit che rappresenta lo stato del repository in svn.

L'accesso è controllato dagli account utente / gruppo sul server git (è necessario inizializzare il repository di origine con 'git init --bare --shared' per impostare le autorizzazioni in modo appropriato) o usando i tasti ssh. Il controllo degli accessi molto granulare può essere impostato usando 'gitosis' che è un componente aggiuntivo di terze parti.

Ci vuole un po 'di tempo per abituarsi a lavorare con git quando sei abituato a svn (ne abbiamo appena parlato nel mio ufficio), ma git è molto più potente.

Se hai bisogno di una soluzione dettagliata, dai un'occhiata a http://progit.org : è una copia online completa di un libro open source.


svn può gestire file più grandi di git
Joshua,

Non ero a conoscenza del fatto che Git avesse una dimensione massima del file - qual è il limite?
Aaron Brown,

2
Soprattutto dal momento che Git porta la storia in giro con ogni copia funzionante, un file grande e pesantemente modificato occuperà molto spazio. Se il file di grandi dimensioni è sostanzialmente invariato, va bene
Phil Miller,

Direi che il commento di Giosuè è fuorviante. I file che sono stati estratti hanno le stesse dimensioni sia per SVN che per git. Ciò che accadrà è che, poiché git mantiene localmente una copia delle informazioni sui repository, lo spazio su disco totale richiesto per tutti i file più la cronologia dei repository aumenterà man mano che si modificano i file, ma per SVN questo spazio è fisso (poiché la cronologia dei repository non è memorizzato localmente).
Walter,

1

Nel mio team siamo nel bel mezzo di cambiare i nostri sistemi di versione di controllo da svn a git. Git ha una curva di apprendimento leggermente più difficile, quindi ho iniziato a familiarizzare con esso e quindi ho insegnato agli sviluppatori come usarlo. Devono conoscere tutti i vantaggi di un sistema di controllo distribuito: più rami, nessun repository centrale, velocità, ecc.

Come te, disponevamo di un sistema per distribuire i nostri siti in modo da mantenere qualcosa come un server centrale git in cui i cambiamenti vengono trasferiti e trasferiti da e verso le macchine degli sviluppatori. I nostri siti estraggono le modifiche da questo "server centrale" e il resto del processo di distribuzione è simile a quello che utilizza svn.

Abbiamo cercato di non mescolare i repository svn e git, iniziando a migrare i nostri siti minori e creare nuovi repository git per i siti principali come se fossero una nuova versione. L'accesso è gestito con chiavi ssh. Inoltre usiamo gitweb come interfaccia web (il nostro sistema svn è basato su http)

Funziona, non è un cambiamento da un giorno all'altro e stiamo provando gli sviluppatori a non prendere questo cambiamento come un fastidio, ma una nuova abilità per imparare uno strumento che alla fine migliorerà il nostro sistema.

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.