git per progetti personali (one-man). Eccessivo?

83

Conosco e uso due sistemi di controllo della versione: Subversion e git. Subversion, al momento, viene utilizzato per progetti personali in cui sono l'unico sviluppatore e git viene utilizzato per progetti e progetti open source in cui credo che anche altri lavoreranno al progetto. Ciò è dovuto principalmente alle straordinarie capacità di biforcazione e fusione di git, in cui tutti possono lavorare nella propria filiale; molto utile.

Ora, uso Subversion per progetti personali, perché penso che qui non abbia molto senso. Sembra essere un po 'eccessivo. Va bene per me se è centralizzato (sul mio server di casa, di solito) quando sono l'unico sviluppatore; Prendo comunque backup regolari. Non ho bisogno della possibilità di creare il mio ramo, il ramo principale è il mio ramo. Sì, SVN ha un supporto semplice per la ramificazione, ma un supporto molto più potente non ha senso, credo. La fusione può essere un problema con esso, o almeno dalla mia piccola esperienza.

C'è qualche buona ragione per me per usare git su progetti personali, o è semplicemente eccessivo?

    
posta Anto 18.04.2011 - 20:13
fonte

11 risposte

154

Non è eccessivo. Il motivo principale per cui ho iniziato a utilizzare Git e Mercurial su Subversion per progetti personali è che l'avvio di un repository è molto più semplice.

Vuoi iniziare un nuovo progetto?

> git init

BAM! Non è necessario configurare un server di repository né archiviare una struttura di cartelle per supportare la ramificazione e i tag in un repository di subversion.

La condivisione del tuo progetto in seguito è solo una questione di: git push (oltre ad avere un repository remoto). Prova a farlo rapidamente con sovversione!

    
risposta data 18.04.2011 - 21:09
fonte
46

Direi che usare Subversion per i progetti personali locali è eccessivo, mentre Git non è decisamente. Git occuperà meno spazio (a causa dell'inefficiente concetto di "revisioni" di SVN rispetto agli snapshot dell'oggetto di Git), richiede meno setup ( git init rispetto a dozzina svnadmin comandi e impostazione delle autorizzazioni e così via), è più facile eseguire il backup ( git clone --bare [o git push origin se usi Github o simili] e il gioco è fatto) e ha strumenti migliori per la gestione del codice (la ramificazione è gratuita e la fusione è più semplice e più pulita). Solo perché nessun altro ha un clone del tuo repository non significa che i benefici di qualsiasi DVCS siano "overkill".

Inoltre, direi che il supporto per le ramificazioni di Git è meno complesso di SVN, con maggiori ricompense.

    
risposta data 18.04.2011 - 20:22
fonte
34

Pensare che non diramai mai il tuo codice è un po 'miope. Ho ramificato il mio codice più volte, in particolare quando stavo sperimentando un nuovo approccio che non ero ancora del tutto convinto. Alla fine vorresti la funzione.

Questo proviene da molto tempo da un utente di Subversion. Il consolidamento su uno strumento può davvero aiutarti a semplificarti la vita.

    
risposta data 18.04.2011 - 20:26
fonte
9

L'overkill è riservato quando c'è un danno collaterale causato dalla "soluzione". Usare una pistola per uccidere una mosca significa che c'è un danno causato dal proiettile che sta andando altrove. È eccessivo. Utilizzare qualcosa di più potente del necessario che non causa un problema non è eccessivo e può essere una buona cosa se ti aiuta a semplificare il processo di sviluppo. Non provoca danni e ti consente di aggiornare solo un set di software anziché due. Allora perché preoccuparsi di due sistemi invece di uno?

    
risposta data 18.04.2011 - 20:21
fonte
7

Uso Git per i miei progetti one-man e lo adoro. In precedenza stavo usando Subversion e devo ancora vedere uno svantaggio nell'usare Git. È più potente ma non in un modo che rende le cose semplici più complicate. Rendere le cose semplici inutilmente complicate / costose / lente / ecc. IMHO è una condizione necessaria per chiamare qualcosa di eccessivo. Inoltre, su Github ho biforcato i progetti one-man di altre persone per aggiungere una funzione che volevo e poi ho inviato loro richieste pull. Trovo piuttosto interessante se qualcuno interessato ai miei progetti abbia fatto la stessa cosa.

    
risposta data 18.04.2011 - 20:40
fonte
7

I mai usato il controllo del codice sorgente su progetti personali prima di DVCS, quindi è un po 'strano immaginare che qualcuno stia prendendo la posizione opposta. Alcuni dei miei motivi sono:

  • Facile da configurare e abbattere. Ad esempio, la scorsa settimana un collega mi ha dato un puzzle di programmazione che ho risolto in diversi piccoli passaggi. Ho fatto un repo git che è durato tutti i 45 minuti per tenere il mio lavoro, e poi non c'era più. Non so quanto sia facile qualcosa di simile in sovversione, ma non ho mai sentito nessuno che lo faccia.
  • disconnesso. Per me, essere in grado di lavorare offline è molto più di un beneficio per un progetto di hobby che uno per il lavoro. Non ho bisogno di bucare un buco nel mio firewall di casa o di ospitare un progetto pubblicamente. Posso temporaneamente inserire un repository su una pen drive o un laptop e mantenere tutto sincronizzato.
  • Tutto sistemato. Avere il repository e l'albero di lavoro insieme rende più facile tenere traccia dei piccoli progetti durante operazioni come gli aggiornamenti del sistema operativo.
  • Funzionalità potenti. Certo, non ho bisogno del potere tutto il tempo, ma è lì quando ne ho bisogno, e non consuma risorse quando non lo faccio.
risposta data 18.04.2011 - 21:29
fonte
6

Mi è stato detto che git-bisect è davvero bello per trovare il commit esatto che ha introdotto un dato comportamento, navigando avanti e indietro in commit a seconda del tuo input.

dovresti farlo un giorno per cose che semplicemente non riesci a capire cosa è successo.

EDIT: Inoltre, la possibilità di diramazione è molto importante quando devi eseguire correzioni di errori nelle vecchie versioni utilizzate dai clienti. Devi essere in grado di gestire "aggiusta questa piccola cosa ma non voglio la versione più recente perché non voglio testarla di nuovo ora".

    
risposta data 18.04.2011 - 21:29
fonte
2

Dipende da quanto seriamente vuoi ottenere sul controllo della versione del tuo codice. Se quello che stai costruendo è ad esempio una semplice libreria che avrà sempre e solo la versione corrente (o per tutto il tempo che è vero), personalmente utilizzerei solo un'opzione di backup di base come Dropbox. Se perdi tutto il codice, puoi recuperarlo dal Web e Dropbox ha una versione di backup di 30 giorni se fai davvero qualcosa di stupido.

Tuttavia, se per esempio hai bisogno di mantenere i rami Production e Dev, allora git è assolutamente un ottimo strumento - e molto più veloce di svn. Presta attenzione al rischio di guasto del disco rigido se si memorizzano i dati solo localmente, però.

    
risposta data 19.04.2011 - 02:20
fonte
2

Userei sempre, sempre, un sistema di controllo della versione per qualsiasi tipo di progetto di sviluppo . Grande o piccolo davvero non importa. Sia che io stia suonando a casa con qualche tipo di nuova tecnologia, scrivendo un piccolo aiuto per semplificare la mia vita o svilupparmi professionalmente in un team numeroso e distribuito, vorrei sempre che un sistema di controllo della versione mi sostenesse.

Certo, il più delle volte per piccoli progetti personali non utilizzerai la maggior parte delle funzionalità, ma la creazione di un repository git (o anche di un repository Subversion locale) non è un grosso problema, quindi prova! E prima che tu lo sappia, vorrai sapere "dannazione, qual era il contenuto del file X lo scorso venerdì?". Senza controllo versione - buona fortuna; -)

Quindi, non importa se usi git o SVN - personalmente sto iniziando a migrare sempre più cose da SVN a git, ma la cosa principale è usare il controllo della versione - anche per le piccole cose .

    
risposta data 19.04.2011 - 14:59
fonte
1

Solo perché nessuno lo ha menzionato: per i progetti personali, darcs è davvero buono e meno coinvolto di git per il controllo di versione diretto. Non è così veloce per i progetti più grandi, ma poi, nemmeno Subversion!

    
risposta data 19.04.2011 - 03:54
fonte
0

Può essere un potente cambio di paradigma mentale per capire che ciò che facciamo è la sperimentazione. Avere uno strumento economico / semplice per supportarlo, migliora la tua capacità di andare avanti, in parte perché migliora la tua capacità di uscire da qualsiasi esperimento quando si rivela poco efficace.

Molti sviluppatori dicono, Beh, faccio solo delle copie del mio codice. Ma queste copie diventano difficili da gestire e finiscono in disordine. Hai più copie e non riesci a ricordare quale copia per cosa, quindi cerca di capire quando è sicuro cancellarle.

Tutto ciò diventa ancora più prezioso quando l'esperimento comporta modifiche coordinate su più file. E quando si tratta di un solo pfoject usando Git diventa ancora più semplice.

Invece di chiedermi se dovrei usarlo su un progetto solista, ora penso a quale vergogna non l'avessi scoperto prima.

    
risposta data 02.09.2012 - 18:08
fonte

Leggi altre domande sui tag