Porównywanie kodu


Okno porównywania

Okno zbudowane jest z dwóch, sąsiadujących ze sobą edytorów: lewego – pokazującą archiwalnątreść obiektu oraz prawego zawierającego treść aktualną. Nad edytorami widnieją podpisy pokazującektóra wersja obiektu znajduje się w edytorze.

 

Prawy edytor z wersją lokalną jest zintegrowany z głównym edytorem designera, tzn. zmiany w nimdokonywane automatycznie dokonują się także w głównym edytorze programu, a zapis treści jestrównoznaczny z zapisem z poziomu okna głównego.

Wywołanie okna porównywania

W celu porównania różnych wersji obiektu należy kliknąć prawym przyciskiem myszy na zaznaczony obiekt,  co spowoduje pojawienie się menu, następnie wybrać opcję „Zespół”, po czym wybrać jedną z dostępnych opcji:

W oknie historii obiektu domyślnie wyświetlane są jedynie modyfikacje, które były w zawarte w rewizji. Zaznaczenie opcji „Wyświetl automatyczne archiwizacje” powoduje, że wyświetlone zostaną również automatyczne archiwizacje danego obiektu.

 

 

W Przypadku zaznaczenia jednej archiwalnej wersji oraz wciśnięcia prawego przycisku myszy, pojawia się menu z „Porównaj z wersją lokalną”, które powoduje porównanie zaznaczonej wersji obiektu, z wersją lokalną.

 

 

W Przypadku zaznaczenia dwóch archiwalnych wersji oraz wciśnięcia prawego przycisku myszy, pojawia się menu z „Porównaj zaznaczone wersje”, które powoduje porównanie zaznaczonych wersji archiwalnych.

 

Markery podświetlające różnice

Podstawową funkcjonalnością okna porówywania jest pokazanie różnic w treściach dwóch różnych wersjach obiektu. Graficznie róznice reprezentowane są poprzez półprzezroczyste markery podświetlające odpowiadające sobie fragmenty kodu.

W zależności od rodzaju zmiany dokonanej w kodzie wyróżnia się 3 podstawowe różnice oznaczane odrębnymi markerami:

Przenoszenie wszystkich różnic

W prawym górnym rogu okna porównywania obiektów widnieje przycisk „Kopiuj wszystkie różnice”.  Służy on do usuwania wszystkich różnic poprzez przeniesienie zarchiwizowanej zawartości (lewego edytora) to lokalnej wersji obiektu. Po wciśnięciu przycisku cała treść lokalnej wersji obiektu zastępowana jest przez zarchiwizowaną umieszczoną w lewym edytorze. Funkcjonalność ta, może zatem służyć do przywracania archiwalnych wersji obiektu.

Porównywanie dwóch wersji archiwalnych

Okno to może służyć także nie tylko do porównywania ze sobą wersji lokalnej i archiwalnej ale także dwóch wersji archiwalnych. W tym wypadku istnieje jedynie możliwość podglądu treści obiektu w danych wersjach i różnic między nimi bez możliwości wprowadzania zmian w zarchiwizowanych treściach. Nie pojawiają się zatem przyciski pozwalające na przenoszenie treści z lewego edytora do prawego, prawy edytor jest w trybie tylko do odczytu a przycisk „Kopiuj wszystkie różnice” jest nieaktywny.

Mechanizm porównywania

Porównywanie zawartości obiektów jest dokonywane jeszcze przed wyświetleniem na ekranie i nie jest na bieżąco aktualizowane, tzn. dokonane w prawym edytorze zmiany w wersji lokalnej nie są już aktualizowane i nowe różnice już nie są podświetlane. Aby zobaczyć nowe różnice należy wcisnąć przycisk „Porównaj ponownie” umiejscowiony w lewym górnym rogu okna.

Przy ponownym porównywaniu można określić tryb porównywania, tzn w jaki sposób algorytm ma dzielić kod na elementy do porównywania. Pojedynczy element ma taką właściwość, że odpowiadające sobie w dwóch wersjach elementy porównywane są ze sobą jak zwykłe ciągi tekstowe, tzn. nawet różnica w pojedynczym znaku elementu powoduje, że elementy traktowane są jako różne. Jedynie zgodność co do każdego znaku powoduje, że elementy uznawane są za tożsame.

 

Aby wybrać tryb porównywania wystarczy z umiejscowionej obok przycisku „Porównej ponownie” listy wybrać odpowiednią opcję. Dostępne są 2 tryby porównywania: