Da sviluppatore, avrai certamente sentito parlare di Source Code Control (SCC). Quando lavori da solo non hai necessità di condividere i sorgenti con altri sviluppatori e l'utilizzo di SCC è generalmente superfluo. Tuttavia, quando lavori in team devi condividere i sorgenti.
Potresti dire: "È semplice: metti tutti i sorgenti in un'unità di rete e diversi sviluppatori potranno lavorarci sopra?" Sì, è una soluzione possibile. Tuttavia, cosa accade se due sviluppatori modificano lo stesso file? Esatto; le modifiche di uno di loro andranno perse. I sistemi di controllo del codice sorgente aiutano a evitare questo problema.
L'idea è memorizzare i sorgenti appena aggiunti su un server e non modificarli direttamente. Ogni sviluppatore ottiene invece una propria copia. Se uno sviluppatore vuole modificare un file, esegue il checkout (informa gli altri che modificherà quel file); una volta completata la modifica, carica (o archivia) il file sul server. Il server risolve i conflitti (quando due utenti modificano lo stesso file) automaticamente a livello di riga, cioè se uno sviluppatore modifica le righe superiori e un altro quelle inferiori, il file verrà unito automaticamente. Se modificano le stesse righe, lo sviluppatore che per ultimo carica le modifiche deve risolvere il conflitto manualmente, ma ciò accade molto raramente.
Questa è la funzione principale di un sistema di controllo del codice sorgente. Inoltre, i sistemi di controllo del codice sorgente forniscono alcune funzioni aggiuntive utili come: confronto delle versioni (visivo), rollback, notifiche, tag, branch, cronologia e blocchi e così via. Grazie a queste funzioni, l'utilizzo del controllo del codice sorgente è utile anche per un singolo sviluppatore nel suo lavoro, poiché rende non necessario il backup di diverse versioni del codice sorgente.