Come lo descrivi, hai già una sorta di controllo di versione, anche se attualmente ci sono alcuni problemi con esso rispetto a un controllo di versione tipico:
Un commit intenzionale nel controllo della versione indica che lo sviluppatore crede fermamente che lo stato corrente del sistema possa essere realizzato correttamente.
(Esistono eccezioni, come suggerito da Il commento di Jacobm001 . In effetti, sono possibili diversi approcci e alcuni team preferirebbero non provare a rendere possibile ogni commit possibile: un approccio è avere build notturni, dato che durante il giorno il sistema potrebbe ricevere diversi commit che non costruiscono.)
Dato che non hai commit, il tuo sistema spesso genera uno stato che non genera. Questo ti impedisce di impostare l'integrazione continua .
A proposito, un sistema di controllo delle versioni distribuito ha un vantaggio: si può fare il commit locale quanto necessario mentre si porta il sistema in uno stato in cui non può essere generato, e quindi fare un commit pubblico quando il sistema è in grado di costruire .
-
Il controllo della versione ti consente di applicare alcune regole sul commit . Ad esempio, per i file Python, è possibile eseguire PEP 8, impedendo il commit se i file impegnati non sono conformi.
-
La colpa è estremamente difficile da fare con il tuo approccio.
-
Esplorando quali modifiche sono state apportate quando e da chi è troppo difficile. Controllo della versione log , l'elenco dei file modificati e a diff
è un modo eccellente per trovare esattamente ciò che è stato fatto.
-
Qualsiasi unione sarebbe un dolore (o forse gli sviluppatori non vedrebbero nemmeno che i loro colleghi stiano modificando i file prima di salvare le modifiche). Hai dichiarato che:
It's rare that the same project is worked on by two programmers
Rare non significa mai, quindi le fusioni si verificano prima o poi.
-
Un backup ogni quindici minuti significa che gli sviluppatori potrebbero perdere fino a quindici minuti di lavoro . Questo è sempre problematico: è difficile ricordare esattamente quali cambiamenti sono stati fatti nel frattempo.
-
Con il controllo del codice sorgente puoi avere messaggi di commit significativi. Con i backup tutto quello che sai è che sono passati x minuti dall'ultimo backup.
Un controllo di versione reale garantisce che è sempre possibile ripristinare il commit precedente; questo è un enorme vantaggio. Ripristinare un backup usando il tuo sistema sarebbe un po 'più difficile di un rollback con un clic , che puoi fare nella maggior parte dei sistemi di controllo delle versioni. Inoltre, nel tuo sistema Branching è impossibile.
C'è un modo migliore per eseguire il controllo della versione e dovresti considerare di cambiare il modo in cui lo fai attualmente. Tanto più che, come Eric Lippert menziona , il tuo sistema attuale è probabilmente molto più doloroso da gestire rispetto a qualsiasi altro sistema di controllo di versione comune. Ad esempio, disporre di un repository Git o Mercurial su un'unità di rete è semplice.
Nota: anche se passi a un sistema di controllo versione comune, dovresti comunque avere un backup giornaliero / settimanale dei repository. Se stai utilizzando un sistema distribuito, è meno importante, poiché da quel momento la copia di lavoro di ogni sviluppatore è anche un backup.