Ich möchte in meinem Repository als Tagged oder Submodule die verschiedenen Versionen von .NET haben, wie es mit anderen externen Produkten nunit, ninject, rhinomocks möglich ist. ProjectX wird mit .NET 3.0 und nunit 2.4.x erstellt Projekty wird mit .NET 3.5 und nunit 2.5.x erstellt Projekt Z wird mit .NET 4.0B2 und einer Vorabversion von nunit erstellt
Ich möchte dies tun, um Änderungen von einem Rechner aus vornehmen zu können, ohne dass ich Änderungen an diesem Rechner vornehmen muss, wie z. B. die Aktualisierung auf die neueste Version von .NET, wenn sie nicht vorhanden ist. Wenn ich ein Projekt der Version 3.0, 3.5 oder sogar 4.0B2 auf einem Rechner ändern möchte, der noch auf Version 2.0 ist (vielleicht gehört er mir nicht und ich habe keine Administratorrechte). Ich möchte das Projekt auschecken, die Version von .net, die es benötigt (und andere versionierte Bibliotheken nunit, ninject, rhinomocks usw. aus dem Repository), meine Änderungen mit Notepad2 oder einem anderen NICHT-Visual-Studio-Editor vornehmen (da VS eine Installation sowie das installierte Framework erfordern würde), das Build-Skript ausführen und die Änderungen committen/pushen. Danach lösche ich die ausgecheckten/geklonten Verzeichnisse und Dateien, als wäre ich nie auf diesem Rechner gewesen.
Hintergrund: Mein Repository besteht aus vielen kleineren, nicht zusammenhängenden Projekten, nicht aus einer einzigen großen Webanwendung/Seite. Warum Versionen von externen Bibliotheken pflegen? Weil ich nicht immer ALLE Projekte auf einmal aktualisieren möchte. Wenn doch, dann gibt es ein Skript dafür. Jeder Entwickler ist ein Berater in Telearbeit. Wer weiß schon, was sich auf seinem Rechner befindet? Wen kümmert es, dass das Build-Skript auf alles (außer .NET Framework) verweist. Vielleicht geht mein Rechner kaputt und ich muss meine Oma benutzen. Vielleicht bin ich im Urlaub und jemandes Code ist kaputt (natürlich nicht meiner) und ich muss die Hotels benutzen.