Diese Posts scheinen miteinander verwandt zu sein, aber mein Gehirn beginnt zu schmelzen und versucht, Folgendes zu überdenken: P
Mein Arbeitgeber hat gerade damit begonnen, die Quellcodeverwaltung zu verwenden, hauptsächlich, weil das "Repository" vor der Einstellung weiterer Entwickler die Festplatte des einzelnen Entwicklers war, der hauptsächlich von zu Hause aus arbeitet. Der gesamte von ihm geschriebene .NET-Code wurde massenhaft eingecheckt , und es gibt viele duplizierte (read: copy-paste) Funktionen. Im Moment ist unser SCM-System eine verherrlichte Sicherung.
Ich möchte einen Teil des duplizierten Codes in gemeinsam genutzte Bibliotheken ziehen. Ich lasse das ursprüngliche Repo in Ruhe, damit wir nichts kaputt machen - wir können vorhandenen Code nach Bedarf verschieben und / oder umgestalten. Deshalb habe ich ein Repo nur für neuen Code eingerichtet, einschließlich Bibliotheken.
Mein Problem besteht darin, die Bibliotheken zu versionieren, ohne uns in einen übermäßigen Prozess zu verstricken: Nachdem ich erkannt habe, dass wir einen kohärenteren Ansatz benötigen, bei dem mehr Entwickler alle sehr ähnlichen Code schreiben, ist das Management und die anderen Entwickler offen für Reorganisationen, aber das wird es wahrscheinlich nicht Gehen Sie gut runter, wenn die Lösung beginnt, die Produktivität zu beeinträchtigen.
Ich bin der Meinung, dass die beste Lösung darin besteht, die Bibliotheken separat zu erstellen, wobei jedes abhängige Projekt anhand von absichtlich ausgewählten, kompatiblen Versionen erstellt wird. Auf diese Weise wissen wir genau, welche Clients über welche Versionen von welchen Bibliotheken verfügen, können Fehler zuverlässiger reproduzieren, unabhängige Release-Zweige für Produkte und Bibliotheken pflegen und die Projekte des jeweils anderen nicht unterbrechen, wenn gemeinsam genutzter Code geändert wird.
Dies macht das Aktualisieren der Bibliotheken jedoch umständlich, insbesondere für Entwickler, die von zu Hause aus arbeiten. Ich erwarte, dass sich die Bibliotheken schnell ändern, zumindest anfangs, wenn wir (endlich) die gemeinsamen Bits zusammenziehen. Es ist durchaus möglich, dass ich das völlig überdenke und wir alles nur gegen die neuesten Bibliotheks-Commits bauen, aber ich möchte zumindest auf den Tag vorbereitet sein, an dem wir entscheiden, dass einige Komponenten unabhängig voneinander versioniert werden müssen und verteilt. Die Tatsache, dass einige der Bibliotheken im GAC installiert werden müssen, macht die Versionierung besonders wichtig.
Meine Frage lautet also: Was fehle ich? Ich habe das Gefühl, ich habe mich auf eine Lösung festgelegt und versuche nun, Variationen zu finden, die die Änderungen reibungsloser machen. Mit welchen Strategien haben Sie dieses Problem bisher gelöst? Mir ist klar, dass diese Frage allgegenwärtig ist. Ich werde mein Bestes tun, um alle Ungewissheiten zu beseitigen und zu klären.
Und so sehr ich Mercurial auch gerne nutzen würde, wir haben bereits Geld für ein zentrales kommerzielles SCM (Vault) ausgegeben, und das Wechseln ist keine Option. Außerdem denke ich, dass das Problem hier tiefer geht als die Wahl des Versionskontrolltools.