Speicherplatz ist billig, und das ist kein sehr überzeugendes Argument dafür, warum Sie Dateien einchecken sollten oder nicht.
Stattdessen können Sie sich an den Zweck von SCM wenden. Jede Datei, die von SCM verfolgt wird, muss die parallelen, verteilten Änderungen verwalten, die Ihr Team vornimmt. Nichts davon ist wirklich offensichtlich, bis zwei Teammitglieder versuchen, dieselbe Datei zu ändern. Das Auflösen dieser Änderungen ist das eigentliche Ziel von SCM, um ein versehentliches Überschreiben der Arbeit eines anderen Entwicklers zu verhindern und hoffentlich den Prozess des Zusammenführens dieser Änderungen zu automatisieren.
Das Zusammenführen von Binärdateien ist normalerweise eine echte Herausforderung, da es für ein generisches Zusammenführungswerkzeug keine vernünftige Möglichkeit gibt, zu erraten, wie eine zusammengeführte Binärdatei funktionieren soll. Es kann nicht genug darüber wissen, wie die Indizes oder Versatzzeiger in der Datei funktionieren, es sei denn, es wurde speziell entwickelt, um diesen bestimmten Dateityp zu erkennen.
Das heißt, es liegt an dem Entwickler, die Binärdatei von Hand zusammenzuführen und dem SCM dann mitzuteilen, dass die Datei so zusammengeführt wurde. Da es sich um einen Entwickler handelt, deckt die Zusammenführung möglicherweise nicht alle Änderungen der beiden vorherigen Eincheckvorgänge ab. Da die Datei binär ist, gibt es keine automatisierte Möglichkeit, die Zusammenführung zu überprüfen.
Für binäre Formate, die wirklich Projektquellen darstellen, wie z. B. Kunstobjekte, ist dies ein unglücklicher, aber notwendiger Schritt. Build-Ausgaben sind jedoch keine Quellen. Sie müssen nicht zusammengeführt werden, da die Quellen zusammengeführt und eine resultierende Build-Ausgabe neu generiert werden kann. Das Verfolgen und Verwalten dieser Änderungen ist zu 100% Verschwendung. Es verschwendet die Ressourcen des SCM, wenn auch nicht besonders viel, aber es verschwendet auch Entwicklerzeit, um die falschen Zusammenführungsfehler zu überwinden. Entwicklerzeit ist sehr teuer und alles, was sie verschwendet, ist Krebs.
Andererseits gibt es einen bestimmten Fall, in dem die Build-Ausgaben archiviert werden sollten. Jede Version des Projekts, die jemals ausgeliefert oder bereitgestellt wurde, sollte wahrscheinlich auf unbestimmte Zeit beibehalten werden. Wenn Sie eine genaue Byte-für-Byte-Kopie des tatsächlichen Builds haben, mit dem ein Kunde Probleme hat, kann dies die Unterstützung dieses Kunden erheblich vereinfachen, da Sie über die genaue Version verfügen, die er hat.
Diese Sicherung sollte sich wahrscheinlich nicht im selben Repository wie der Quellcode befinden, da sie im Allgemeinen unterschiedlichen Zeitplänen folgen und grundsätzlich unterschiedliche Strukturen aufweisen.