2009-02-11 15 views
5

Quale sistema di controllo versione dovrei utilizzare per un'applicazione Rails: Git o SVN?Git o SVN per l'app Rails?

Ecco alcuni fattori da considerare:

  • Sono l'unico sviluppatore
  • ho familiarità con SVN
  • Ho usato solo Git per una settimana, sembra molto simile a SVN davvero.
  • Voglio mettere il mio repository su una postazione remota e connettermi ad esso via SSH o altro protocollo (cosa che faccio già con SVN).

Edit: Grazie per le risposte finora. Sembra che Git sia leggermente più favorito. Ha qualche funzionalità SSH?

+0

Che cosa ha a che fare Rails con la decisione di usare SVN o Git? – Robert

+2

La community di Rails è salita sul carrozzone di Git e la maggior parte degli sviluppatori di Rails ora utilizza Git. –

+0

Ha il supporto SSH, così come molti altri: http://www.kernel.org/pub/software/scm/git/docs/git-pull.html#URLS – sebnow

risposta

12

Direi di andare per Git. Principalmente perché sono di parte, ma anche perché non hai bisogno di configurare alcun tipo di server con Git, ti basta git init e vai. Git is generally just better, offre maggiore flessibilità e potenza rispetto a SVN.

Modifica: questo è un po 'un dupe di Why is Git better than Subversion o almeno rilevante.

Edit2: Git ha 3 principali metodi di comunicazione, il protocollo Git, SSH e HTTP. Github utilizza SSH per "accesso push", ad es. [email protected]/user/repo.git.

+1

Non è necessario configurare un server per usare svn o se sei l'unico sviluppatore, e puoi anche usare svn su ssh. E puoi sempre ottenere il meglio da entrambi i sistemi usando git svn :) – bluebrother

+0

A meno che non ci sia qualcosa di cui non sono a conoscenza, devi configurare il server per avviare un repository con Subversion. Devi creare un "database" con 'svnadmin create', afaik. Direi che usare git-svn potrebbe limitare la tua capacità di usare git correttamente. Se usi SVN, usa solo SVN e viceversa. – sebnow

5

Come singolo sviluppatore che è già familiare con SVN - se si desidera essere il più produttivi possibile utilizzare SVN.

Se invece vuoi davvero imparare GIT e puoi permetterti un po 'più di tempo per impararlo, usa GIT.

+1

Direi che si può essere molto più produttivi con git. Farei attenzione a non confondere la produttività il giorno 1 rispetto alla produttività nel giorno n. – Dustin

+0

Se per produttivo, intendete "aspettare i trasferimenti di rete lenti di svn richiesti da ogni operazione", quindi sì ... svn è produttivo. – jrockway

+0

Quanto spesso si aspetta seriamente su svn? Se le velocità di trasferimento di svn stanno davvero danneggiando la tua produttività, dovresti imparare a fare il multitasking. –

1

Dato che sei da solo e vuoi metterlo in una posizione remota: SVN, ma dovresti anche imparare/usare Git. È anche possibile combinare i due, utilizzare Git localmente e SVN per il telecomando.

+0

Perché preoccuparsi? Git può anche avere repository remoti/centrali. Perché usare Git se finisci comunque a limitarti a Subversion alla fine? – sebnow

+0

Bene, nel mio caso, utilizziamo un server Windows Subversion e non esiste un deamon/server git stabile per Windows. Sono d'accordo sul fatto che Git sia una scelta migliore ma non è mainstream come Subversion è ... dipende tutto dalla sua situazione;) – Tuxified

+0

È vero. Essendo un utente Mac/Linux, dimentico che Git non è compatibile con Windows. Un motivo in più per cambiare sistema operativo, ho ragione? : P – sebnow

1

Probabilmente è una buona idea utilizzare una sorta di controllo di versione. Probabilmente è anche una buona idea avere backup remoti del tuo codice.

Git e svn sono entrambe buone soluzioni di controllo delle versioni e sono entrambi popolari all'interno della comunità Ruby/Rails.

Se si fosse in un gruppo di sviluppo distribuito, suggerirei git potrebbe essere più appropriato poiché uno dei suoi obiettivi di progettazione specifici era per quella situazione.

Se fossi su Windows, suggerirei che TortoiseSVN fornisce probabilmente un'esperienza meno impegnativa di, ad esempio, msysGit.

Principalmente, anche se entrambi sembrano fare un lavoro simile e farlo bene.

Se si desidera imparare un nuovo sistema di controllo del codice sorgente durante la creazione del progetto, fare clic su git. Oppure, se intendi passare molto tempo, ad esempio, Edge Rails, che vive a Github, potrebbe anche tornare utile.

Altrimenti direi che dovresti attenersi a svn.

4

Utilizzare Git, se non altro per il fatto che è possibile utilizzarlo quasi esattamente come SVN (inclusa la gestione remota di più rami su SSH) ed è molto, molto più veloce e più affidabile.I check-in e le filiali locali, il controllo della versione distribuita, la gestione della cronologia delle revisioni, ecc. Sono solo vantaggi secondari.

Nella mia esperienza gli unici motivi per preferire SVN su Git sono: un repository SVN legacy o il requisito per utilizzare Windows sul client.

0

Direi che non c'è alcuna differenza particolare.

Entrambi i sistemi sono solo strumenti, e entrambi ti forniranno le funzionalità che stai cercando. Se non ci sono altri parametri da considerare, direi di andare con SVN come già lo sai e non hai bisogno di tempo per impararlo.

1

Se hai un giorno per imparare Git, allora impara Git. Ha tutte le funzionalità che svn ha, oltre a branching/merging economici, commit locali e l'opzione di sviluppo distribuito.

È facile lavorare con i repository remoti. Se stai cercando un qualche tipo di hosting pubblico, potresti voler dare un'occhiata allo Github, che ha hosting pubblico gratuito, buona integrazione con Ruby e molti bei grafici.

0

Vorrei aggiungere una domanda di follow-up: ci stai lavorando da soli? Il supporto dello strumento GUI per Git è generalmente in ritardo rispetto a Subversion, quindi se questo è o potrebbe diventare una considerazione, allora opterei per Subversion.

Ad esempio, se i progettisti utilizzano Adobe CS4, possono utilizzare il supporto Subversion incorporato (e non è necessario insegnare a Git). Quindi considera la composizione attuale e futura della tua squadra come un fattore nel tuo processo decisionale.

0

Mi piaceva git, ma di recente sono passato a mercurial. Ha esattamente la stessa sintassi di git, ma è scritto in python e ha un sacco di belle campane e fischietti fuori dalla scatola, come un server web per il tracciamento visivo dei commit.

So che questo può essere impostato per git utilizzando gitweb per esempio, ma richiede un po 'di lavoro.

3

Avrei risposto nei commenti ma non posso ancora.

Per chi non lo sapesse, Git funziona con Windows. Se non ti piace la versione di msys, TortoiseGit è già utilizzabile.