2008-09-26 12 views
67

Al momento sono uno sviluppatore solitario; per favore condividi le tue esperienze su quello che è un buon setup VC per uno sviluppatore solitario.Miglior controllo versione per sviluppatore indipendente

I miei limiti sono;

  • Io lavoro su più macchine e la necessità di tenerli sincronizzati fino
  • volte lavoro offline

Attualmente sto usando Subversion (solo il client a un server remoto), e che è funziona bene Sono interessato a Mercurial e git DVCS, ma nessuno dei loro casi d'uso ha senso per la mia situazione.

MODIFICA: ho migrato il mio sviluppo attivo in Fossil http://www.fossil-scm.org/ dopo averlo provato con un client. Mi piacciono molto le funzionalità di autosync dei miei repository (riduzione delle forcelle accidentali), il supporto della documentazione (sia wiki che embedded/versioned) che supporta la mia necessità di documentare il codice e il progetto in spazi diversi, il tracker dei problemi facile da configurare, un accesso gradevole controllo, interfaccia web personalizzabile e comunità utile.

+1

Questa domanda ha aiutato http://stackoverflow.com/questions/97850/version-control-on-a-2gb-usb-drive#97955 – Stephen

+0

Non mi piace VSS ALL ALL. Tuttavia, ha un vantaggio che gli altri non lo fanno: il suo file system basato. Quindi, per UNO sviluppatore, cercando di sincronizzare in diverse posizioni, mettere un db VSS in una cartella mesh.com è un modo rapido per iniziare e iniziare – Will

+0

Sono anche molto contento che Fossil giri o compili su tutto ciò che ho provato a fare dev on: xp, vista, ppc macs, intel macs e Windows 7. – Stephen

risposta

43

Potrei suggerire un controllo di versione piuttosto nuovo chiamato fossile.

Questo non è un progetto anch'io, è stato scritto dal Dr. Richard Hipp, lo stesso ragazzo che ha fatto SQLite. L'intero repository è un file SQLite, quindi è molto solido. Hai un wiki e un sistema di ticket integrato. Puoi avere molti utenti con vari diritti, così puoi ad esempio dare ai tuoi utenti il ​​diritto di emettere biglietti ma non visualizzare il codice sorgente.

Questo è piuttosto semplice, semplice e funziona come un sistema distribuito, il che significa che è possibile clonare e eseguire il checkout a livello locale e remoto.

Ulteriori informazioni possono essere viste su http://www.fossil-scm.org/ e se si guarda da vicino si vede che l'intero sito è in realtà fossile.

Una cosa che mi ha davvero impressionato con fossili è che è solo un file, questo è tutto. L'intero programma sui fossili è piuttosto piccolo, ma considerando chi è l'autore, non è davvero una sorpresa.

E poiché il repository è un file sqlite, è sufficiente copiarlo e si dispone di un backup.

+1

Potresti essere interessato a [Monotone] (http://www.monotone.ca) che è un altro DVCS che utilizza SQLite come memoria di back-end. Dalla mia esperienza personale devo ammettere che è davvero bello poter così facilmente fare il backup o copiare un intero repository. –

+3

Fossil è fantastico !!! Non ho mai visto un'app simile, semplicità e flessibilità !!! – zengr

7

Subversion funziona alla grande (specialmente con TortoiseSVN). Non penso che nessun VC distribuito possa avere un vantaggio in un singolo scenario di sviluppo.

Modifica: Non avevo notato la parte "a volte lavoro offline", quando inizialmente ho risposto. In questo caso, suppongo tu debba pesare la complessità aggiuntiva di un DVCS con il fatto che ti dà cronologia/revisioni offline.

+0

Sono interessato a come * tu * * usi * svn. – Stephen

+1

git è incredibilmente facile da configurare per una persona, hai solo bisogno di una directory e un set di strumenti. Non c'è un server richiesto. –

+2

Anche senza lavorare offline, DVCS ha forti vantaggi su quelli centralizzati. Creare un repository è molto più facile e lavorare in parallelo su più filiali. –

0

SourceGear Vault è gratuito per uno sviluppatore ed è molto buono.

+0

Perché è buono per uno sviluppatore solitario? – Stephen

+2

Grande. Vorresti davvero scegliere un VCS che non puoi più usare quando qualcuno è pronto ad aiutarti ?! Sembra matto per me. Allo stesso modo, –

30

Il funzionamento offline è assolutamente logico per Git. Puoi sfogliare l'intera cronologia, eseguire commit, fondere, creare filiali, in pratica fare tutto ciò che è correlato al tuo repository offline. Inoltre, è possibile impostare un repository centrale che è il "master", cioè si sposteranno tutte le modifiche su quel repository centrale. In questo modo sai sempre dove si trova l'ultimo codice, ma ottieni anche il vantaggio di poter inviare modifiche da una macchina all'altra, se mai ne hai bisogno.

Recentemente ho convertito tutti i miei repository Subversion 80+ in Git e non ho guardato indietro.

+0

ha migrato di recente tutti i miei repository cvs personali su git. perfetto da usare per qualsiasi directory locale che si può decidere per la versione, o spingere i repository su github.com o assembla.com per l'uso su molte macchine. – tardate

+0

seconding su git, fantastico e potente. – Valentin

+0

Concordato ... Conservo una copia centrale della mia fonte su GitHub e spingo una copia di backup del mio repository su una chiave USB –

3

Io consiglio sempre darcs per questa situazione (here's my answer to a similar question) come la sua interfaccia utente a riga di comando è una gioia da usare e la gioia è quello che voglio dal mio proprio sviluppo :)

Git viene fornito in bundle con alcune interfacce grafiche praticabili, ma L'ho trovato troppo ingombrante in confronto a Darcy quando ho colpito la riga di comando da utilizzare per progetti personali.

O soddisferà il tuo bisogno di lavorare offline ed entrambi sono facili da sincronizzare con i cambiamenti.

0

mi raccomando assembla.com - forniscono svn, wiki e trac gratuiti. Non c'è niente di meglio!

+0

supportano anche il suggerimento git – tardate

2

Subversion richiede l'accesso a un repository centralizzato. Se lavori offline e da più computer, significa che non puoi effettuare revisioni offline.

Una soluzione Unix nuda sarebbe quella di conservare una cronologia all'interno della directory di lavoro con RCS e sincronizzare la directory di lavoro (inclusa la cronologia) tra diversi computer utilizzando Unison.L'avvertenza principale sarebbe che, se si cambiano le macchine, è necessario prima sincronizzarle prima di iniziare a commettere nuove revisioni. Se questo è un problema, è meglio guardare in un vero DVCS.

+0

! Non sapevo di unisono. – Stephen

0

Se stai comfortabel con la sovversione, vi consiglio di dare un'occhiata al SVK

49

Ogni persona probabilmente vi dirà che il loro preferito DVCS è la migliore per voi. Ti direi che Mercurial è il migliore! ;-)

Ma questa è una schifezza. Hai sicuramente bisogno di un DVCS, ma provali tutti, o almeno quelli più usati, e fai la tua scelta da solo. Scegliere il DVCS per cui conosci un guru è anche una scelta sensata, a proposito. Consiglierei di provare (o di leggere la documentazione di) almeno Mercurial, Git e Bazaar. SVK potrebbe avere la caratteristica desiderabile che è progettato per interagire con SVN, ma l'ultima volta che ho controllato hanno avuto problemi di prestazioni. Git ha anche un plugin di interazione SVN, AFAIK.

+0

So che non ha più voti. Ma mi piace. – Stephen

+0

Hg ha anche un pacchetto non ufficiale chiamato "hgsvn" per interagire con un server svn. Non è maturo come Git's, anche se, ad esempio, non è stato in grado di clonare il nostro repository - passato a git e mai guardato indietro. –

+0

@Greg: prova hgsubversion anziché hgsvn: http://bitbucket.org/durin42/hgsubversion/ È un bridge a due vie tra Mercurial e Subversion. –

2

Dovete provare un DVCS (o quello che io chiama un VCS peer2peer). Sono d'accordo con Nowhereman. Non perdere tempo con svn e tutti i soft realizzati attorno per renderlo utile. A DVCS è più intuitivo quello vecchio e deprecato stile client-server. SVN non sa cosa sia un tag o un ramo. Per Svn tutti sono solo copie.

Ad esempio: è così difficile da implementare un tag come sinonimo di un numero di revisione.

In mercurial un tag è proprio questo. Non puoi tenere traccia delle versioni di un tag come puoi in Svn.

Leggi qui dvcs guide per iniziare. Quindi puoi usare svk, mercurial aka hg o git. Ma per favore non tornare indietro nel tempo

+0

Dovresti riformulare la tua risposta, per favore! Sono rimasto sorpreso nel vedere "SVN non sa cosa sia un tag o un ramo". Questo mi ha dato l'idea che SVN non può fare rami o tag; quelle sono cose che ho già fatto per me stesso! Il fatto è che, anche se SVN non è in grado di distinguere tra copie e rami o tag, consente di eseguirli! – sergiol

1

Sono un grande fan del controllo di versione distribuito. Ho giocato con git, mercurial e bzr, e ora uso git per tutti i miei progetti. Tutti e tre questi sono grandi per uso personale perché è così semplice creare un nuovo repository sul tuo computer. Non è necessario eseguire alcun server.

Ecco alcune idee per condividere il repository su più computer. 1) Utilizza alcuni servizi in hosting come github. Di solito questi sono gratuiti per progetti open source e bassi costi per progetti commerciali. Stiamo usando github al lavoro. 2) Utilizza la casella personale per creare un disco di backup condiviso da Internet a cui tutti i tuoi computer possono accedere. È gratuito per meno di 2 GB. (Se sei su Ubuntu, Ubuntu One è un'altra alternativa.) Metti il ​​tuo master git repository su dropbox e poi metti repository locali su ciascuno dei tuoi computer. (Quindi, dropbox ha lo stesso ruolo di github.) È completamente gratuito, ti permette di lavorare offline facilmente, ti permette di condividere il repository con altri sviluppatori in seguito, se necessario, ed è eseguito il backup automatico.

Inoltre, se si desidera veramente utilizzare SVN, esaminare una soluzione ospitata come cvsdude (nonostante il nome, eseguono SVN) anziché eseguire il proprio server. Sarai in grado di accedere al tuo codice da qualsiasi luogo e ti costerà solo $ 5-10/mese.

+2

Anche Bitbucket.org è interessante. Fornisce conti pubblici * e privati ​​* illimitati sia per Mercurial che per Git (per un massimo di 5 committer). Ha un wiki e un tracker di problemi integrati e ha un'interfaccia potente, proprio come GitHub. È diventato il mio repository di scelta per uso personale. –