czwartek, 4 lipca 2013

Jak usunąć pakiet pod kontrolą wersji?

Gdy pracujemy nad modelem, który jest powiązany z systemem kontroli wersji, na przykład SVN jesteśmy w stanie sprawniej kontrolować zawartość takiego modelu. Przynajmniej do czasu, gdy postanowimy pousuwać jakieś pakiety...




Usuwanie pakietu jest również formą jego edycji. Gdy próbujemy usunąć pakiet, który jest w stanie checked-out - operacja kończy się wyświetleniem stosownego komunikatu.
W tym przykładzie próba usunięcia pakietu dotyczy Pakiet1.
checked-out package 'Package1' in Project Browser window

Wybieramy z menu kontekstowego opcję Delete 'Package1'.
A w rezultacie dostajemy komunikat o treści:
You cannot delete the selected package tree at this time.
The contained package 'Pakiet1', is currently checked-out in this model.
(Only reporting first found checked-out package...)

A zatem nie możemy usunąć tego pakietu, bo jest w stanie checked-out.
Naturalną czynnością jest zatem "wczekowanie" tego pakietu (check-in).

Nie powinniśmy jednak wczekować pakietu nadrzędnego, bo wówczas opcja usuwania pakietu będzie niedostępna.
checked-in package 'Pakiet1' and parent


 Rozwiązanie

Aby usunąć pakiet wraz z całą zawartością z modelu opartego o system kontroli wersji (np. SVN lub TFS) pakiet nadrzędny powinien być w stanie checked-out (w przykładzie pakiet o nazwie Widok), a usuwany pakiet w stanie checked-in (w przykładzie pakiet o nazwie Pakiet1). Jeśli usuwany pakiet posiadałby jeszcze podpakiety, wówczas wszystkie one również muszą być w stanie checked-in.

Poprawną sytuację prezentuje poniższy rysunek.

Teraz po wskazaniu pakietu Pakiet1 i wybraniu opcji Delete z menu kontekstowego spowoduje wyświetlenie spodziewanego komunikatu z pytaniem, czy na pewno chcemy usunąć pakiet.
Wybór odpowiedzi Yes sprawi, że pakiet zostanie usunięty z modelu. 
Aby inni użytkownicy zobaczyli zmiany w modelu musimy jeszcze "wczekować" (check-in) pakiet nadrzędny (w przykładzie o nazwie Widok).
W repozytorium SVN zostanie jeszcze plik XMI z zawartością usuniętego pakietu. Gdybyśmy chcieli usunąć go również stamtąd, musimy to wykonać ręcznie.

1 komentarz:

  1. Działa :) A próbowałem obejść ten komunikat bez google'i chyba godzinę.

    OdpowiedzUsuń