Manuals

Importowanie danych do repozytorium

Import

Jeśli dane są importowane do istniejącego repozytorium, które zawiera już pewne projekty, struktura repozytorium została już ustalona. Jeśli importujecie dane do nowego repozytorium, warto poświęcić czas, aby zastanowić się, jak będzie ono zorganizowane. Przeczytajcie „Układ repozytorium” w celu zasięgnięcia porady.

W tej sekcji opisano polecenie Subversion import, którego przeznaczeniem jest importowanie hierarchii katalogów do repozytorium w jednym ruchu. Chociaż wykonuje tą pracę, posiada kilka niedociągnięć:

  • Nie ma sposobu, by wybrać pliki i foldery, które dołączyć, oprócz wykorzystania z globalnych ustawień ignorowania.

  • Importowany folder nie staje się kopią roboczą. W tym celu musicie pobrać na powrót pliki z serwera.

  • Łatwo jest zaimportować do folderu na zły poziom w repozytorium.

Z tych powodów zaleca się nie korzystać w ogóle z polecenia import, ale raczej po dwuetapowej metody opisanej w „Import w miejscu”, chyba że wykonuje się prosty krok tworzenia wstępnej struktury /trunk /tags /branches w repozytorium. Ponieważ to czytacie, oto w jaki sposób działa podstawowe polecenie import ...

Przed importem projektu do repozytorium należy:

  1. Usuńcie wszystkie pliki, które nie są potrzebne do budowy projektu (pliki tymczasowe, pliki, które są generowane przez np. kompilator *. obj, binarki, ...)

  2. Zorganizujcie pliki w folderach i podfolderach. Choć można zmienić nazwę / przenieść pliki później, zaleca się, aby otrzymać projekt struktury już przed importem!

Teraz wybierzcie folder najwyższego poziomu w strukturze katalogów projektu w eksploratorze Windows i kliknąć prawym przyciskiem myszy, aby otworzyć menu kontekstowe. Wybierzcie polecenie TortoiseSVNImportuj... co otworzy okno dialogowe:

Rysunek 4.6. Dialog importu

Dialog importu


W tym oknie należy wprowadzić adres URL repozytorium, do którego chcecie zaimportować projekt. Bardzo ważne jest uświadomienie sobie, że sam lokalny folder importu nie pojawi się w repozytorium, a tylko jego zawartość. Na przykład, jeśli macie strukturę:

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images

i importujecie C:\Projects\Widget do http://mydomain.com/svn/trunk to możecie być zaskoczeni, że podkatalogi trafiły prosto do folderu trunk zamiast pozostać w podkatalogu Widget. Musicie wskazać podkatalog jako część adresu URL, http://mydomain.com/svn/trunk/Widget-X. Zauważcie, że polecenie importu automatycznie utworzy podkatalogi w repozytorium, jeśli one nie istnieją.

Wiadomość importu jest wstawiana do dziennika wiadomości.

Domyślnie, pliki i foldery, które odpowiadają ogólnym wzorcom pomijania nie są importowane. Aby to zmienić należy zaznaczyć pole wyboru Dołącz pliki ignorowane. Zapoznajcie się z „Ustawienia ogólne” by uzyskać więcej informacji na temat ustawienia ogólnego wzorca pomijania.

Po naciśnięciu OK TortoiseSVN zaimportuje pełne drzewo katalogów, w tym wszystkie pliki, do repozytorium. Projekt jest teraz przechowywany w repozytorium pod kontrolą wersji. Należy pamiętać, że folder, który został zaimportowany NIE znajduje się pod kontrolą wersji! Aby uzyskać wersjonowaną kopię roboczą konieczne jest pobranie właśnie zaimportowanej wersji. Lub przeczytajcie dalej, aby dowiedzieć się, jak zaimportować folder w miejscu.

Import w miejscu

Zakładając, że macie już repozytorium, do którego chcecie dodać nową strukturę folderów, po prostu wykonajcie następujące kroki:

  1. Skorzystajcie z przeglądarki repozytorium, aby utworzyć nowy folder projektu bezpośrednio w repozytorium. Jeśli używacie jednego ze standardowych układów będziecie prawdopodobnie chcieli utworzyć go jako podfolder linii głównej, a nie w katalogu głównym repozytorium. Przeglądarka repozytorium przedstawia strukturę repozytorium tak jak eksplorator Windows, dzięki czemu można zobaczyć, jak foldery są zorganizowane.

  2. Pobieranie nowego folderu nadrzędnego do tego, który macie zamiar zaimportować. Pojawi się ostrzeżenie że folder lokalny jest niepusty. Należy je zignorować. Teraz macie wersjonowany folder najwyższego poziomu z niewersjonowaną zawartością.

  3. Użyjcie TortoiseSVNDodaj... na tym wersjonowanym folderze, aby dodać część lub całą zawartość. Możecie dodawać i usuwać pliki, ustawić atrybut svn:ignore na folderach i dokonywać inne potrzebne zmiany.

  4. Zatwierdźcie katalog najwyższego poziomu, i macie nowe wersjonowane drzewo oraz lokalną kopię roboczą, utworzoną z istniejącego folderu.

Pliki specjalne

Czasami trzeba trzymać pod kontrolą wersji plik, który zawiera dane specyficzne dla użytkownika. Oznacza to, że macie plik, który każdy programista/użytkownik musi zmodyfikować w celu dostosowania do swoich lokalnych ustawień. Ale wersjonowanie takiego pliku jest trudne, ponieważ każdy użytkownik chciałby za każdym razem zatwierdzić swoje zmiany do repozytorium.

W takich przypadkach zalecamy użycie szablonu plików. Utwórzcie plik, który zawiera wszystkie dane, jakich programiści będą potrzebować, dodajcie ten plik do kontroli wersji i niech programiści pobiorą ten plik. Następnie każdy programista powinien wykonać kopię z tego pliku i zmienić nazwę tej kopii. Po tym modyfikacja kopii nie stanowi już problemu.

Jako przykład można spojrzeć na skrypt wbudowany w TortoiseSVN. Wywołuje on plik o nazwie default.build.user, który nie istnieje w repozytorium. Za to jest tam plik default.build.user.tmpl. default.build.user.tmpl jest plikiem szablonu, z którego każdy programista musi utworzyć kopię i zmienić jej nazwę na default.build.user. Wewnątrz tego pliku dodaliśmy komentarze wskazujące użytkownikom, które linie mają edytować i zmienić w zależności od lokalnej konfiguracji, aby móc go poprawnie stosować.

Jednocześnie, aby nie przeszkadzać użytkownikom, dodaliśmy także plik default.build.user do listy ignorowanych w jego folderze nadrzędnym, czyli mamy ustawić atrybut Subversion svn:ignore aby włączyć ten plik. W ten sposób nie będzie się pojawiać jako niewersjonowany przy każdym zatwierdzeniu.

TortoiseSVN homepage