archITekt Merger
Funkcjonalność archITekt Merger umożliwia rozwiązywanie konfliktów w plikach serwera wersji podczas pracy w środowisku plikowego serwera wersji zintegrowanego z repozytorium Git.
Aplikacja została zaprojektowana jako narzędzie wspierające proces scalania zmian w sytuacji wystąpienia konfliktów pomiędzy różnymi wersjami plików. W tym celu powinna zostać zintegrowana z repozytorium Git i skonfigurowana jako domyślne narzędzie do scalania (merge). W momencie wykrycia konfliktów podczas pracy z repozytorium Git narzędzie jest automatycznie uruchamiane w środowisku archITekt Studio, umożliwiając ich analizę oraz rozwiązanie.
Narzędzie do scalania zmian instalowane jest wraz z komponentem VSoft archITekt Launcher, dzięki czemu może być wykorzystywane przez wszystkie aplikacje utworzone przy jego użyciu, działające w oparciu o plikowy serwer wersji zintegrowany z repozytorium Git.
W przypadku wystąpienia konfliktów w plikach serwera wersji narzędzie automatycznie identyfikuje właściwą instancję środowiska archITekt Studio dla danego serwera wersji, a następnie otwiera w niej odpowiednie pliki wymagające przeprowadzenia procesu scalania i rozwiązania konfliktów.
Konfiguracja
Aby korzystać z aplikacji archITekt Merger do rozwiązywania konfliktów, konieczne jest odpowiednie skonfigurowanie narzędzia scalającego Git.
W tym celu należy dokonać edycji pliku konfiguracyjnego gitconfig i dodać odpowiedni wpis definiujący narzędzie archITekt Merger jako program wykorzystywany do scalania zmian:
[mergetool "VSoft.archITekt.Merger"]
path = c:/Program Files/VSoft/archITekt/Launcher/Tools/VSoft.archITekt.Merger.sh
cmd = \"c:/Program Files/VSoft/archITekt/Launcher/Tools/VSoft.archITekt.Merger.sh\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
a następnie ustawić jako domyślne narzędzie mergujące:
[merge]
tool = VSoft.archITekt.Merger
guitool = VSoft.archITekt.Merger

Lokalizacja pliku zazwyczaj jest tutaj: C:\Users\TwojUzytkownik\.gitconfig
Następnie należy dokonać edycji pliku
C:\Program Files\VSoft\archITekt\Launcher\Tools\VSoft.archITekt.Merger.sh
Gdzie należy ustalić ścieżkę do pliku archITektMerger.exe np.:
"C:/Program Files/VSoft/archITekt/Launcher/VSoft.archITekt.Merger.exe" -v "$git_root_path" -b "$base_file_full" -l "$local_file_full" -r "$remote_file_full" -o "$merged_file_full"
oraz ścieżkę z odpowiednimi parametrami do domyślnego programu mergującego pliki np.
"C:/Program Files (x86)/WinMerge/winmergeu.exe" -e -u -wl -wr -fm -dl "Mine: $local_file" -dm "Merged: $merged_file" -dr "Theirs: $remote_file" "$local_file_full" "$base_file_full" "$remote_file_full" -o "$merged_file_full"

Taka konfiguracja zapewnia, że archITekt Merger będzie wykorzystywany wyłącznie do scalania plików obsługiwanych przez archITekt Studio.
W przypadku plików, które nie są obsługiwane przez to środowisko, a w których wystąpią konflikty, proces scalania zostanie przeprowadzony przy użyciu domyślnego narzędzia do mergowania skonfigurowanego w Git.
Uruchamianie archITekt Merger
W przypadku wystąpienia konfliktów w plikach serwera wersji należy uruchomić tryb scalania zmian, korzystając z odpowiednich poleceń dostępnych w Git Extensions.
Jeżeli w trakcie operacji zostanie wykryty konflikt, aplikacja poinformuje o tym użytkownika poprzez wyświetlenie odpowiedniego komunikatu. W takiej sytuacji należy potwierdzić komunikat, wybierając przycisk OK, aby przejść do procesu rozwiązywania konfliktu.

- W kolejnym oknie wybierz Start mergetool.

Porównywanie i rozwiązywanie konfliktów
Po uruchomieniu aplikacji archITek Merger zostanie wyświetlony interfejs służący do określenia prawidłowej, końcowej wersji pliku.
Następnie przejdź do karty Version server conflict merger, w której prezentowane są różne wersje edytowanego pliku:
- Base version (wersja bazowa) – wersja pliku sprzed wprowadzenia zmian przez użytkowników.
- Main version (wersja lokalna) – aktualna wersja pliku należąca do użytkownika, który wprowadził zmiany.
- Their version (wersja z innej gałęzi) – wersja pliku zmodyfikowana przez innego użytkownika w innej gałęzi.
- Resolved version (wersja wynikowa) – wersja zawierająca efekt końcowy po rozwiązaniu konfliktów między poszczególnymi wersjami pliku.

Każdy z plików prezentowany jest w postaci struktury drzewa. Widok ten można przełączyć na tryb tekstowy (XML), który stanowi bezpośrednie odwzorowanie zawartości pliku w formacie XML, przedstawiając jego elementy, atrybuty oraz wartości.

W przypadku wystąpienia różnic lub konfliktów problematyczne elementy w strukturze drzewa są wyróżniane kolorami oraz oznaczane odpowiednimi ikonami, co ułatwia ich identyfikację.
Narzędzie analizuje poszczególne wersje plików, wykrywa występujące między nimi różnice oraz – w miarę możliwości – automatycznie rozwiązuje zmiany, które mogą zostać jednoznacznie ustalone. W widoku drzewa dla każdej z wersji pliku prezentowane są odpowiednie oznaczenia ikonami i kolorami, wskazujące zarówno wykryte różnice, jak i wyniki procesu ich rozwiązywania. Dodatkowo na pasku górnym znajdziesz informacje o wykrytych konfliktach i statusie scalania zmian.

Użytkownik może poruszać się pomiędzy poszczególnymi różnicami oraz decydować, który element struktury drzewa powinien zostać przyjęty jako właściwy w procesie rozwiązywania konfliktu.
- Kliknij prawym i wybierz z menu kontekstowe Use this difference.

- Po wybraniu danej różnicy odpowiednie zmiany są automatycznie przenoszone do panelu prezentującego wersję wynikową. Status scalania zostanie zmieniony na merged.

- Po zakończeniu procesu scalania i zapisaniu zmian wynikowa wersja pliku zostaje zapisana w serwerze wersji i jest traktowana przez Git jako poprawnie rozwiązany konflikt.
- Po zamknięciu karty w archITekt Studio następuje powrót do aplikacji Git Extensions, gdzie można wykonać commit wprowadzonych zmian.

Podczas procesu scalania zmian wraz z uruchomieniem archITekt Studio otwierany jest również interfejs wiersza poleceń, w którym mogą być wyświetlane różnego rodzaju informacje diagnostyczne i techniczne związane z przebiegiem operacji. Najczęściej pojawiają się tam m.in.:
- informacje o uruchomieniu narzędzia scalającego oraz przekazanych do niego parametrach,
- ścieżki do plików tymczasowych używanych w procesie porównywania wersji (np. wersja bazowa, lokalna i zewnętrzna),
- komunikaty o wykrytych konfliktach w poszczególnych plikach,
- status wykonywanych operacji związanych z analizą i scalaniem zmian,
- informacje o zapisywaniu wersji wynikowej po rozwiązaniu konfliktu,
- komunikaty ostrzegawcze lub błędy, jeśli podczas procesu scalania wystąpią problemy,
- logi diagnostyczne pomocne przy analizie działania narzędzia lub w przypadku zgłaszania problemów.
Dzięki tym informacjom użytkownik lub administrator może śledzić przebieg procesu mergowania oraz łatwiej zidentyfikować ewentualne problemy pojawiające się podczas scalania zmian.

Jeżeli chcesz wycofać zmiany to nie zapisuj pliku tylko wybierz opcję jego zamknięcia.

- Potwierdź wybór wybierając No.

- W wierszu poleceń wprowadź n w linii Was the merge successful?

Konfiguracja pliku vsoft.architekt.merger.json
W katalogu: C:\Program Files\VSoft\archITekt\Launcher\Tools znajduje się plik vsoft.architekt.merger.json o treści:
\{
"ProjectJsonPath": "",
"StudioFilePath": "",
"VersionServerPath": ""
\}
Plik vsoft.architekt.merger.json należy stosować w sytuacji, gdy główny katalog repozytorium Git jest zorganizowany inaczej niż opisano w dokumentacji.
W pliku należy określić ścieżki do katalogów zawierających następujące elementy:
- ProjectJsonPath – ścieżka do katalogu zawierającego plik
project.json - StudioFilePath – ścieżka do katalogu zawierającego plik
archITekt.exe(wersję lokalną), - VersionServerPath – ścieżka do katalogu, w którym znajdują się pliki serwera wersji.
Plik vsoft.architekt.merger.json należy umieścić w głównym katalogu repozytorium Git, czyli w tym samym miejscu, w którym znajduje się katalog .git