Se uno sviluppatore usa sempre il controllo di versione [duplicato]

41

Ho sentito affermazioni sull'effetto di: "Beh, sono solo io che lavoro su questo progetto, quindi non ho bisogno di metterlo sotto controllo del codice sorgente", così come "Non c'è bisogno di controllare la versione controllata su questo progetto, è così piccolo ".

È mia opinione che non importa quanto piccolo sia il progetto, a patto che aggiunga valore al client (e stiano pagando anche per questo) che noi, gli sviluppatori, dovremmo controllarne la versione; soprattutto dal momento che la sua politica aziendale.

Sono pazzo o il mio punto di vista ha senso.

Domanda: il lavoro di sviluppo dovrebbe sempre essere controllato in versione?

    
posta user77232 17.12.2010 - 03:05
fonte

11 risposte

88

Oh wow, sì.

Uso sia SVN che Git e non posso dirti quante volte mi hanno salvato il culo. Più Git di SVN, ma non iniziamo qui flamewars. Questo è su progetti su cui lavoro da solo, oltre a progetti su cui lavoro con altre persone. Nessuna scusa per non farlo, davvero.

Essendo umano, sono fondamentalmente autorizzato a fare stupide cazzate tutto il tempo. Usando il controllo della versione, posso tranquillamente continuare a fare cose fantastiche e impegnarmi a intervalli dove ha senso. Quando faccio qualcosa di incredibilmente stupido, posso semplicemente ritirare le mie modifiche all'ultimo punto in cui ho commesso. Anche con Git, posso ripristinare parti specifiche di modifiche in un file piuttosto che l'intero file.

Il mio controllo di versione (ab?) usando il flusso di lavoro, come sviluppatore di Rails (e sì, so che usi C #, si applica lo stesso flusso. Solo i miei comandi git per i tuoi comandi tfs ), va come questo per un nuovo progetto:

  • Prendi una nuova funzione da Pivotal Tracker e scopri cosa diavolo dovrebbe fare. Conosciuto anche come traduzione da client a inglese.
    • Crea una nuova directory per il progetto e poi immediatamente :
    • git init
    • git add .
    • git commit -m "Initial setup for [project]"
    • git remote add origin [email protected]:radar/project.git
    • git push origin master

Ora ho un repository Git pronto per il commit, con un ramo master . Questo ramo master dovrebbe rimanere sempre "puro". I test dovrebbero essere sempre al 100% -passando-senza-scuse-o-qualcuno-andando-a-finire-licenziato-molto-gravemente-ferito-ho-menzionato-no-scuse su questo ramo. Se la funzione è sufficientemente complessa (prendendomi più di un'ora o due o se il cambiamento sarà più di un singolo commit sensibile) Creerò il mio ramo usando git checkout -b [feature-name] , altrimenti lavorerò su master .

In questo ramo, posso fare qualunque cosa diavolo mi piace. master sarà ancora "puro" e io posso eliminare efficacemente il posto e poi git checkout . per recuperare tutto. È in questo ramo che sviluppo la nuova funzionalità, effettuando commit incrementali e sensibili lungo il percorso. Crea una pagina in cui un utente può compilare un modulo e quindi qualcosa per gestire quel modulo? Questo è un impegno. Aggiunta una nuova funzione a una classe e testata? Nuovo commit. Potrei essere incline a spingere questo ramo da qualche parte in modo che altre persone possano lavorare con me su di esso, nel qual caso vorrei git push origin [feature-name] e poi potrebbero clonare il repository e git checkout origin/[feature-name] -b [feature-name] per ottenere le mie modifiche e potremmo lavorare insieme su di esso .

Quando ho finito con la funzione, eseguo i test sul ramo [nome-caratteristica]. Quindi, posso tornare al ramo master , verificare che tutto sia ancora "puro" eseguendo i test e quindi git merge [feature-name] per unire il ramo in master. Quindi eseguo i test di nuovo per assicurarmi che sia ancora "puro" (ricorda, non ci sono scuse) e infine spingo le mie modifiche al ramo master su GitHub.

Risciacquare, ripetere.

Senza il controllo della versione, sarei completamente perso. Farei una stupida merda e poi passare un bel po 'di tempo manualmente a rotolare indietro e non essere sicuro di averlo capito o meno. Il controllo della versione è un ottimo strumento per prevenire la stupidità (come lo è il testing, ma questo è un argomento tangenziale) e lo incoraggio davvero molto strongmente.

Nessuna scusa.

    
risposta data 17.12.2010 - 03:24
fonte
10

Sì, uno sviluppatore dovrebbe sempre usare il controllo di versione, di qualche tipo. Chissà quanto può diventare grande un progetto, o quante persone potrebbero usarlo, o quale bug hai appena introdotto. VC dovrebbe andare di pari passo con la memorizzazione off-site del progetto.

    
risposta data 17.12.2010 - 03:10
fonte
6

È una decisione assolutamente personale.

Per quanto mi riguarda, ho inserito la versione di controllo qualsiasi cosa . Letteralmente - qualsiasi cosa. Non importa: è una lista da comprare in negozio o da un progetto.

    
risposta data 17.12.2010 - 03:08
fonte
4

Assolutamente. Se non altro (e che GRANDE se), ti libera di giocare con il tuo codice senza preoccuparti di perdere la tua implementazione lavorativa.

    
risposta data 17.12.2010 - 03:08
fonte
3

Quanto lavoro di sviluppo puoi permetterti di perdere? Cosa succede quando hai bisogno di ritirare un cambiamento? Prima o poi ne avrai bisogno.

    
risposta data 17.12.2010 - 03:09
fonte
2

Non c'è assolutamente alcun motivo per non farlo ogni volta che si scrive codice. Se hai git installato, puoi anche farlo localmente per cose che consideri buttare via. Fondamentalmente, se hai intenzione di modificare il file più di una volta, dovrebbe andare nel controllo della versione. Semplice.

Perché non dovresti farlo? Sembra che il carico cognitivo di cercare di capire se farlo o meno è più che il costo di farlo sempre. Seriamente, quale sforzo qualcuno vorrebbe salvare qui?

La mente esagera.

    
risposta data 17.12.2010 - 03:58
fonte
1

Sì, dovresti usare tutto il controllo dell'origine dell'orario ....

Anche se il progetto è piccolo, c'è un grande vantaggio nell'usarlo. Inoltre, il sovraccarico è praticamente nullo se il team sa come usare il sistema di controllo delle versioni.

Anche avere una tracciabilità rispetto a un piccolo progetto è importante, puoi lavorare sugli stessi file senza pestarci l'un l'altro, agire come backup, ecc ... ecc. quindi, perché non usarlo.

    
risposta data 17.12.2010 - 03:09
fonte
1

Sì, hai ragione. Il controllo della versione consente di tornare a un punto precedente se si rimane bloccati e consente inoltre di conservare i backup del codice (particolarmente importante per gli ambienti aziendali). Se ritieni che, per qualche ragione, la creazione di un repository per questo piccolo progetto sia troppo onerosa, allora considera di utilizzare un VCS distribuito come git o mercurial per creare un repository localmente.

    
risposta data 17.12.2010 - 03:09
fonte
1

Dovresti, e dovresti anche usare uno strumento di controllo del codice sorgente in cui è molto economico farlo.

Ho avuto la brutta abitudine di non usare immediatamente il controllo del codice sorgente quando ho usato subversion, ma con strumenti come Git & Mercuriale, è così economico iniziare

    
risposta data 17.12.2010 - 03:13
fonte
1

IMHO Direi che è una buona pratica. Posso essere un risparmiatore di vita in quei casi in cui hai provato diverse soluzioni e vuoi eseguire il backup di una versione sana del tuo codice.

Lo uso anche per piccoli progetti personali. Mi sono ritrovato a scimmiottare nel mio codice così tante volte imprecando sul Ctrl-Z che non si estendeva abbastanza indietro nel tempo.

    
risposta data 17.12.2010 - 09:53
fonte
1

Chiunque ti dica che è un idiota.

Qualsiasi azienda che impiega uno sviluppatore (o gestore) che dice che non è da qualche parte che si desidera lavorare, a meno che non si pensi di poter iniziare a cambiare cose del genere.

Onestamente, senti storie di guerra, ma seriamente non pensavo esistessero più posti del genere.

    
risposta data 01.02.2011 - 17:08
fonte

Leggi altre domande sui tag