Mam ukierunkowaną strukturę danych wykresu, w której próbuję zaimplementować indywidualną kontrolę wersji dla każdego wierzchołka. Stwarza to ciekawe scenariusze i będę wdzięczny za wszelkie pomysły, które macie. W szczególności, staram się rozwiązać domyślne zachowanie systemu podczas napotkania określonych scenariuszy.Grafy i kontrola wersji
Zobacz następujący obraz: Graph versions
Scenariusz 1: "Null Pointer Paradox"
Vertex A jest przywracana do wersji 1.0. Ponieważ to wycofanie zniknie z podkatalogu, C nie będzie już wskazywać na D. Mogłoby to spowodować zagrożenie. W przypadku, gdy zachowanie się do:
- 1,1: Usuwanie krawędzi C -> D, tworząc złamane wykres
- 1,2: usuwanie D, pozostawiając e osierocony
- 1,3: Usuwanie D i E
- 1,4 : Odmowa wykonania wycofania, zanim wszystkie krawędzie wskazujące na D (w tym przypadku E -> D) zostaną usunięte.
- 1.X: Alternatywne rozwiązania?
Scenariusz 2: "skutki pośrednie"
Vertex D jest aktualizowane tak, że zachodzi:
- D jest teraz wersja 1.2
- E jest obecnie wersja 1.1
- C jest teraz wersją 1.3
- A jest teraz wersją 1.3
wierzchołek A jest teraz przywracana do wersji 1.2, tak, że zachodzi:
- A jest teraz w wersji 1.2
- C jest wersja 1.2
- D jest wersja 1.1
Jeżeli domyślne zachowanie jest:
- 2.1: Przywróć E do 1.0
- 2.2: Odmowa wycofania z powodu zagrożenia wersjami, w efekcie pogarszając funkcjonalność
- 2.X: Alternatywne rozwiązania?
Przepraszam, że nie jest to bardziej jednoznaczne. –
Zakłada się tu, że krawędzie należą do wierzchołka i są wersjonowane. W związku z tym podrzędny węzeł podrzędny, taki jak A, jest wersjonowany zgodnie ze zmianami w całym podgraphie. Jak wspomniano, w efekcie tworzy nie tylko zagnieżdżone, ale wielowymiarowe płaszczyzny integralności (lub warstwy), które mogą się przecinać. Jest oczywiste, że wszelkie możliwe rozwiązanie tego problemu wykracza poza moje osobiste zdolności matematyczne. –
Jedynymi realnymi rozwiązaniami, jakie widzę w tym miejscu, są: A) Tylko vertexy wersji nie uwzględniają jej sub-i supergraph. Zasadniczo wartość, ale nie struktury B) obniżyć do struktury drzewa C), znamienny kompromisu konteksty kontroli wersji są dokładnie określona dla każdej podgrafu, ale nie pozwala na zagnieżdżone kontekst; lub, gdy kontekst zagnieżdżony jest ignorowany przez kontekst wyższego poziomu, co w pewnym stopniu uniezależnia strukturę danych i strukturę kontroli wersji. Czy mógłbyś wskazać mi badania, o których wspomniałeś? –