Ich versuche, ein bestehendes System durch das Hinzufügen einer Versionskontrolle auf Vordermann zu bringen. Das Problem ist, dass sich das System nicht gut auf ein Dateisystem wie das Layout übertragen lässt. Nach einigen Gedankenexperimenten habe ich einen rudimentären Weg gefunden, dies zu handhaben, aber bevor ich die Nutzung dieses Chaos zulasse, möchte ich es mit dem Kollektiv besprechen.
Das System besteht aus typisierten Objekten und Links. Die Objekte sind über eine Verknüpfungstabelle miteinander verbunden, um sinnvolle Beziehungen herzustellen. Die Links sind ebenfalls typisierte Objekte und können ihre eigenen Attribute haben.
Die Benutzer können die Ansicht der Objekte auf jeder beliebigen Ebene erreichen und den Links nach oben und unten folgen, um die Beziehungen zu sehen.
Die meisten Objekte haben Hunderte von Verknüpfungen zu anderen Objekten. Nicht alle Objekte oder Links unterliegen der Versionskontrolle, da einige als statisch angesehen werden können. Es ist erlaubt, einen versionskontrollierten Link zu einem nicht versionskontrollierten Objekt zu haben.
Änderungen an den Objekten kommen als Stapel an, der das gesamte Layout eines Abschnitts der Hierarchie enthält, ohne oder nur mit minimalen Benutzerkommentaren oder Versionsinformationen selbst. Änderungen werden daher durch den Vergleich des neuen Objekts mit dem vorherigen Objekt erkannt. Auch Linkänderungen werden auf diese Weise erkannt. Objekte können in einer Version hinzugefügt, in der nächsten entfernt und in der nächsten wieder hinzugefügt werden. Die meisten Objekte verfügen über genügend eindeutige Informationen, um zu erkennen, dass es sich tatsächlich um dasselbe Objekt handelt, das immer wieder auftaucht und verschwindet.
Für Objekte und Links, die sich nicht ändern, sollte keine neue Version für die einzelnen Objekte erstellt werden, aber der Gesamtinhalt, der aus dem Batch-Update resultiert, sollte immer noch als Gruppe identifizierbar sein.
95 % der Benutzer werden nur an der neuesten Version der Objekte/Beziehungen interessiert sein, aber ich muss in der Lage sein, für die verbleibenden 5 % die zuvor festgelegten Objekte/Beziehungen anzuzeigen.
Meine ersten Gedanken sind eine allgemeine Version uid für die Charge von Änderungen zu implementieren und es mit allen aktuellen Objekten / Links für diese Iteration zu verknüpfen. Der Rest ist frei wählbar. Wenn Sie es bis hierher geschafft haben, danke ich Ihnen. Was denken Sie?