Ritengo che la risposta alla tua domanda sia un clamoroso sì: i vantaggi della gestione dei tuoi file con un sistema di controllo della versione superano di gran lunga i costi dell'implementazione di tale sistema.
Proverò a rispondere in dettaglio ad alcuni dei punti che hai sollevato:
- Backup: ho già un sistema di backup in atto.
Sì, e anch'io I. Tuttavia, ci sono alcune domande da considerare sull'opportunità di fare affidamento su un sistema di backup per scopi generali per tenere traccia in modo adeguato dei file importanti e attivi relativi al proprio lavoro. Per quanto riguarda le prestazioni:
- A quale intervallo il tuo sistema di backup esegue snapshot?
- Quanto tempo ci vuole per creare un'istantanea?
- Deve creare un'immagine dell'intero disco rigido quando si scatta un'istantanea o si potrebbe facilmente dire di eseguire il backup di due file che hanno appena ricevuto aggiornamenti critici?
- Il tuo sistema di backup può mostrarti, con precisione millimetrica, cosa è cambiato nei tuoi file di testo da un backup all'altro?
E, soprattutto:
- In quante posizioni vengono salvati i backup? Sono nella stessa posizione fisica del tuo computer?
- Quanto è facile ripristinare una determinata versione di un singolo file dal sistema di backup?
Ad esempio, avere un Mac e utilizzare Time Machine per eseguire il backup su un altro disco rigido nel mio computer. Time Machine è ottimo per recuperare il file dispari o ripristinare il mio sistema in caso di problemi. Tuttavia, semplicemente non ha quello che serve per fidarsi del mio importante lavoro:
Durante il backup, Time Machine deve immaginare l'intero disco rigido che richiede una notevole quantità di tempo. Se continuo a funzionare, non vi è alcuna garanzia che il mio file venga acquisito nello stato in cui era quando ho avviato il backup. Potrei anche raggiungere un altro punto che vorrei salvare prima che finisca il primo backup.
Il disco rigido su cui sono salvati i backup di Time Machine si trova nella mia macchina, questo rende i miei dati vulnerabili a furti, incendi e altre catastrofi.
Con un sistema di controllo della versione come Git, posso avviare un backup di file specifici senza ulteriori sforzi che richiedere un salvataggio in un editor di testo e il file viene ripreso e archiviato istantaneamente. Inoltre, Git è distribuito in modo che ogni computer su cui lavoro abbia una copia completa del repository.
Ciò equivale a far riflettere il mio lavoro su quattro diversi computer: a dir poco un atto divino potrebbe distruggere i miei file e dati, a quel punto probabilmente non mi importerebbe troppo.
- Forking e riavvolgimento: non ho mai sentito la necessità di farlo, ma posso vedere come potrebbe essere utile (ad esempio, stai preparando più articoli di giornale in base allo stesso set di dati; stai preparando un rapporto che viene aggiornato mensilmente, ecc. )
Come solista, non mi sbaglio neanche tanto. Tuttavia, il tempo che ho risparmiato avendo la possibilità di riavvolgere da solo ha ripagato il mio investimento nell'apprendimento di un sistema di controllo della versione molte, molte volte. Dici di non aver mai sentito la necessità di farlo, ma il riavvolgimento di qualsiasi file nel tuo attuale sistema di backup è stato davvero un'opzione indolore e fattibile?
A volte il rapporto sembrava solo migliore 45 minuti, un'ora o due giorni fa.
- Collaborazione: il più delle volte analizzo i dati da solo, quindi non ottengo i vantaggi della collaborazione del controllo delle versioni.
Sì, ma impareresti uno strumento che potrebbe rivelarsi indispensabile se finissi per collaborare con altri a un progetto.
- Tempo di valutare e apprendere un sistema di controllo della versione
Non preoccuparti troppo di questo. I sistemi di controllo della versione sono come i linguaggi di programmazione: hanno alcuni concetti chiave che devono essere appresi e il resto è solo zucchero sintattico. Fondamentalmente, il primo sistema di controllo della versione che impari richiederà di investire più tempo, il passaggio a un altro richiede solo l'apprendimento di come il nuovo sistema esprima i concetti chiave.
Scegli un sistema popolare e provalo!
- Un possibile aumento della complessità rispetto al mio attuale sistema di gestione dei file
Hai una cartella, diciamo Projects
che contiene tutte le cartelle e i file relativi alle tue attività di analisi dei dati? In tal caso, lo schiaffo del controllo della versione aumenterà esattamente la complessità del file system 0
. Se i tuoi progetti sono sparsi sul tuo computer, allora dovresti centralizzarli prima di applicare il controllo della versione e questo finirà per ridurre la complessità della gestione dei tuoi file, ecco perché abbiamo una Documents
cartella dopo tutto.
- Il controllo della versione vale lo sforzo?
Sì! Ti dà un enorme pulsante di annullamento e ti consente di trasferire facilmente il lavoro da una macchina all'altra senza preoccuparti di cose come perdere l'unità USB.
2 Quali sono i principali pro e contro dell'adozione del controllo versione?
L'unica cosa che mi viene in mente è un leggero aumento delle dimensioni del file, ma i moderni sistemi di controllo della versione possono fare cose assolutamente sorprendenti con la compressione e il salvataggio selettivo, quindi questo è praticamente un punto controverso.
3 Qual è una buona strategia per iniziare con il controllo della versione per l'analisi dei dati con R (ad esempio, esempi, idee per il flusso di lavoro, software, collegamenti alle guide)?
Mantieni i file che generano dati o rapporti sotto il controllo della versione, sii selettivo. Se stai usando qualcosa del genere Sweave
, archivia i tuoi .Rnw
file e non i .tex
file che vengono prodotti da loro. Conservare i dati non elaborati se sarebbe una nuova acquisizione. Se possibile, scrivi e archivia uno script che acquisisce i tuoi dati e un altro che li pulisce o li modifica anziché archiviare le modifiche ai dati non elaborati.
Per quanto riguarda l'apprendimento di un sistema di controllo della versione, consiglio vivamente Git e questa guida .
Questi siti Web offrono anche alcuni suggerimenti e trucchi per eseguire azioni specifiche con Git: