poniedziałek, 23 lipca 2012

Jak usunąć masowo kontrolę wersji z modelu?

Zawartość modelu może być poddana kontroli wersji przy użyciu SVN lub TFS. Zastosowanie takiego mechanizmu niesie ze sobą wiele zalet, które opiszę przy innej okazji.
Gdy model jest poddany kontroli wersji, wówczas jednak mamy ograniczone możliwości, bo możemy stworzyć kopię repozytorium w postaci pliku EAP lub testowej bazy danych - korzystając z funkcjonalności Project Transfer, ale co z tego, skoro i tak kopia repozytorium jest nadal "spięta" z tym samym systemem kontroli wersji.
Co zrobić zatem, gdy potrzebujemy przekazać klientowi kopię naszego modelu albo wykonać jakieś testy w modelu bez obaw o przypadkowe "uszkodzenie" zawartości modelu wykorzystywanego przez zespół?


Powinniśmy mieć możliwość łatwego "odpięcia" modelu z systemu kontroli wersji.

W menu kontekstowym po wskazaniu pakietu: Package Control --> Configure... możemy sprawdzić stan kontroli wersji wybranego pakietu (patrz poniższy rysunek) i odłączyć ten pakiet z systemu kontroli wersji odznaczając checkbox Control Package.
Po usunięciu pakietu z systemu kontroli wersji, zawartość tego okna jest wyświetlana w następujący sposób:

Tylko co z tego, jeśli:
  • Nie można tego zrobić za jednym zamachem dla całej gałęzi - zaznaczenie opcji na tym ekranie Include sub-packages - nic nie daje. Pakiety podrzędne nadal pozostają w takim stanie, jak przedtem.
  • Nie można tego zrobić na wybranym podrzędnym pakiecie, bez względu na to, czy gałąź jest w stanie "check-in" czy "check-out", trzeba zaczynać od roota. EA wyświetla w takim wypadku uparcie komunikat "Cannot remove a package from version control unless it is checked in."
  • Należałoby to wykonać dla każdego pojedynczego pakietu - w sytuacji, gdy mamy w modelu kilkaset wersjonowanych pakietów - zadanie takie mogłoby nas przerosnąć.
Z pomocą przychodzą dwa sposoby:

EnAr Spy for Enterprise Architect

Pierwszym sposobem jest wykorzystanie darmowego dodatku do EA, czyli narzędzia EnAr Spy. Narzędzie to można pobrać stąd: blog.lieberlieber.com/2011/03/01/free-tool-enar-spy-for-enterprise-architect. Po wybraniu odpowiedniej opcji z menu (patrz rysunek poniżej) za jednym zamachem usuwana jest konfiguracja dla wszystkich pakietów w modelu.
Oprócz funkcjonalności usuwania konfiguracji kontroli wersji dodatek posiada również inne możliwości, jak chociażby ułatwia wykonywanie dowolnych zapytań SQL na bazie EA.

Własne zapytanie SQL

Drugi sposób to własnoręczne wykonanie zapytania SQL, które realizuje to zadanie.

Informacja o tym, że pakiet jest kontrolowany przechowywana jest w bazie danych repozytorium (w przypadku pracy na pliku EAP mamy również do czynienia z bazą danych w formacie MS Access, czyli domyślnie silnik MS JET 3.5). A konkretnie w tabeli t_package decydują o tym następujące atrybuty:
  • IsControlled = 1
  • XMLPatch = <nazwa pliku XML>, np. 'ea4\4D99E948BFE6.xml'
  • PackageFlags='VCCFG=<UniqueID>;', gdzie UniqueID to nazwa konfiguracji kontroli wersji.
Najprostszym sposobem na wyłączenie wszystkich pakietów z kontroli wersji jest wysłanie następującego zapytania SQL dla plików EAP:
UPDATE t_package SET IsControlled = 0,     XMLPath = NULL WHERE IsControlled = -1
oraz dla innych baz danych (np. MySQL lub Oracle):
UPDATE t_package SET IsControlled = 0,     XMLPath = NULL WHERE IsControlled = 1

Wprawdzie w kolumnie PackageFlags zostanie nadal informacja o nazwie konfiguracji (VCCFG=<UniqueID>;), ale nie stanowi to problemu w działaniu Enterprise Architecta.

Tak naprawdę działanie dodatku EnAr Spy  sprowadza się właśnie do wykonania wyżej wymienionego polecenia SQL, z tym że działa ono poprawnie w przypadku plików EAP, a w przypadku innych repozytoriów (np. MySQL lub Oracle) zwraca zero zmodyfikowanych rekordów.

Brak komentarzy:

Prześlij komentarz