Lo spazio di archiviazione è economico, quindi non è un argomento molto convincente sul perché dovresti o non dovresti fare il check-in dei file.
Invece, puoi fare appello allo scopo di SCM. Ogni file tracciato da SCM rappresenta la necessità di gestire le modifiche parallele e distribuite che il tuo team sta facendo. Niente di tutto ciò è evidente fino a quando due membri del team non provano a modificare lo stesso file. Risolvere tali cambiamenti è ciò a cui SCM è realmente interessato, prevenire la sovrascrittura accidentale del lavoro di un altro sviluppatore e, si spera, automatizzare il processo di fusione di tali cambiamenti.
L'unione di file binari di solito è una vera sfida, perché non esiste un modo sano per uno strumento di unione generico di indovinare come dovrebbe funzionare un file binario unito. Non può sapere abbastanza su come funzionano gli indici o i puntatori di offset nel file se non appositamente progettato per riconoscere quel particolare tipo di file.
Ciò significa che dipende dallo sviluppatore unire il file binario a mano, quindi dire a SCM che il file è stato unito. Dal momento che lo sta facendo uno sviluppatore, l'unione potrebbe in realtà non coprire tutte le modifiche di entrambi i check-in precedenti e poiché il file è binario, non esiste un modo automatico per verificare l'unione.
Per i formati binari che rappresentano realmente le fonti del progetto, come le risorse artistiche, questo è un passaggio sfortunato, ma necessario. Tuttavia, gli output di compilazione non sono origini. Non è necessario unirli, perché le origini possono essere unite e un output di generazione risultante può essere rigenerato. Tracciare e gestire questi cambiamenti è uno spreco del 100%. Spreca le risorse di SCM, anche se non eccessivamente, ma spreca anche tempo per gli sviluppatori a superare i fallimenti di fusione spuri. Il tempo degli sviluppatori è molto costoso e tutto ciò che lo fa perdere è un cancro.
D'altra parte, c'è un caso particolare in cui gli output di build devono essere archiviati. Qualsiasi versione del progetto che sia mai stata spedita o distribuita dovrebbe probabilmente essere conservata a tempo indeterminato. Avere una copia esatta, byte per byte della build effettiva con cui un cliente ha problemi, può facilitare il supporto di tale cliente, dato che avrai la versione esatta che ha.
Quel backup probabilmente non dovrebbe trovarsi nello stesso repository del codice sorgente, poiché generalmente seguiranno pianificazioni diverse e avranno strutture sostanzialmente diverse.