Binärdateien in subversion und die global ignore list

Manchmal kann es notwendig sein, binäre Build-Artefakte zu versionieren (z.B. wenn der Build zu zweitaufwendig ist, die Tools aus Lizenzgründen nicht überall verfügbar sind oder der Quelltext im Fall einer Binärzulieferung gar nicht vorliegt).

Subversion ist hier zwar auch nicht ideal, hat aber im Gegensatz zu verteilten Versionsverwaltungssystemen wie git nicht den Nachteil, daß die komplette History gespiegelt wird. Meist ist man ja nur an der letzten Version interessiert.

Wenn man also Libraries/Executables in subversion speichert, sollte die folgende Option in ~/.subversion/config explizit leer gesetzt sein:

global-ignores =

Hintergrund:

Es gibt eine fest eingebaute Liste von Dateien, die global ignoriert werden. Die Liste umfasst auch sämtliche *.so und *.a– Dateien. Nachdem die Liste weder über Properties gesetzt noch irgendwie vom Subversion-Server vorgegeben werden kann muß sie leider jeder Entwickler in seiner persönlichen Konfiguration angeben.

Ohne diese Einstellungen läuft ein update zwar problemlos durch. Wenn man aber aktiv selbst Dateien ändert kann es zu seltsamen Effekten kommen. Beispielsweise kann es passieren, daß man existierene *.so – Dateien in guten Glauben ändert oder sogar neue hinzufügt, sie aber vom Client nie zum Server geschickt werden. Sind noch andere Dateien vorhanden, die nicht auf der Ignore-Liste stehen, fällt daß eventuell gar nicht auf, weil die Dateien in der global ignore – Liste auch nicht als “untracked” aufgelistet werden.