Repozytorium służy do przechowywania plików - e-Swoi
Transkrypt
Repozytorium służy do przechowywania plików - e-Swoi
Repozytorium służy do przechowywania plików powstających przy pracy nad projektami we w miarę usystematyzowany sposób. Sam mechanizm repozytorium jest zbliżony do działania systemu plików, czyli składa się z podkatalogów a w nich z plików będących częściami projektu. Oprócz przechowywania plików, repozytorium służy także do ich wersjonowania. Co to oznacza? Że zapisując po raz kolejny ten sam plik w danym podkatalogu, nie powodujemy nadpisania starego pliku zawartością nowego, lecz nowy staje się najnowszą jego wersją a stara wersja wraz ze swoją zawartością staje się wersją poprzednią do której zawsze możemy sięgnąć. Jest to bardzo przydatna cecha, gdy coś co poprawialiśmy okazało się kompletnie błędną koncepcją i chcemy cofnąć się do wersji, kiedy jeszcze mieliśmy w miarę poprawną implementację bądź wersję pliku. Dla tego właśnie zapis do repozytorium powinien dotyczyć plików znajdujących się na jakimś bardziej znaczącym etapie (powszechnie w projektach IT nazywa się je kamieniami milowymi). Użytkownik sam właściwie określa co jest kamieniem milowym, mogą być duże etapy projektów, które wdrażają nową funkcję w projekcie, między nimi zaś mniejsze kamienie milowe np.: „implementacja biblioteki do sortowania tablicy z danymi użytkownika”, na które mogą składać się jeszcze mniejsze jednostki, na przykład dla wymienione wyżej sortowania, kamieniem milowym może być: „implementacja metody sortowania bez używania rekurencji”. Tak więc, określenie co jest ważne i wartościowe na tyle, że opłaca się tworzyć nowy kamień milowy a więc i nową wersję pliku jest dosyć rozmyte i zależne od użytkownika. Jeżeli jestem grafikiem i wrzucam kolejną wersję pliku jpg to oczywiście nie tworzę kolejnych wersji pliku po zmianie pojedynczych pikseli, tylko po znaczących zmianach, których powtórzenie byłoby dla mnie trudne i czasochłonne. Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie: Po pomyślnym zalogowaniu się, przechodzimy do zakładki znajdującej się w górnej części serwisu - zatytułowanej „Repo”, klikamy w jej tytuł przechodząc jednocześnie do części serwisu odpowiedzialnej za repozytorium: Widok na razie jest pusty, nie odświeżyliśmy widoku repozytorium oraz nie stworzyliśmy jeszcze żadnego. Aby zobaczyć co mamy na liście naszych repozytoriów, klikamy w przycisk znajdujący się poniżej ramki zatytułowany „Pokaż repozytoria”. Widzimy na razie pustą listę swoich repozytoriów: Teraz możemy stworzyć swoje pierwsze repozytorium. W tym celu wybieramy przycisk „Dodaj nowe repozytorium”. Otwiera się okienko z formularzem parametrów nowego repozytorium: W polu „Nazwa repozytorium” wpisujemy jak nasze repozytorium ma się nazywać. Nazwa repozytorium nie może być krótsza niż 5 znaków, nie powinno zawierać polskich liter, spacji znaków specjalnych typu „@!#$%^&*(){}[]'”;,?/”. Pole komentarz służy do głębszego opisu repozytorium ale nie jest wymagane. Klikamy „OK”. Stworzyliśmy właśnie swoje pierwsze repozytorium: Jakie są zasady tworzenia repozytoriów i przechowywania w nich własnych projektów. Otóż nie ma jednej narzuconej z góry metody w jaki sposób przechowywać projekty w repozytoriach. Generalnie każdy projekt ma swoje specyficzne wymagania i strukturę katalogów plików i właściwie pod ten konkretny projekt tworzy się pewien standard. Można na przykład przyjąć, że każdy nowy projekt znajduje się w osobnym repozytorium a wszystko co związane z pojedynczym projektem znajduje się w podkatalogach danego repozytorium. Można stworzyć jedno repozytorium a każdy z projektów to jeden podkatalog w ramach tego jednego repozytorium. Wszystko to zależy od przyjętej konwencji, od złożoności projektów (ilości plików i katalogów które wchodzą w skład projektu) w końcu jeżeli projekt, który był mało skomplikowany po jakimś czasie ewoluuje w kierunku bardziej złożonego i jego repozytorium już nie przystaje do tak skomplikowanej struktury, zmienia się strukturę jego repozytorium. Jest to więc, rzecz dosyć luźna. Na potrzeby serwisu, jako że tworzone projekty nie będą aż tak złożone, możemy przyjąć zaś, że tworzymy jedno repozytorium a w nim podkatalogi, które przechowują projekty. Stwórzmy zatem pierwszy katalog projektu w nowo utworzonym repozytorium „moje_kody”. Klikamy prawym przyciskiem myszy na pozycję wyświetlającą nowo stworzone repozytorium i menu kontekstowym wybieramy pozycję „Dodaj podkatalog”. Stworzona jest nowa pozycja w naszym drzewie w którą wpisujemy nazwę katalogu. Enter potwierdza wpisaną nazwę. Wybierając w menu kontekstowym tworzenie kolejnych podkatalogów, odtwarzamy strukturę drzewa naszego projektu. Przy wybieraniu z drzewa katalogów, poniżej przycisków dodawania repozytorium i pokazywania repozytoriów, zauważyć można żółte pole. Pokazuje się ono tylko w przypadku wybrania pozycji w drzewie, która jest katalogiem. Służy ono do dodawania plików do repozytorium: Aby dodać plik do repozytorium należy wybrać katalog, do którego chcemy dodać plik i kliknąć w żółte pole. Otworzy się standardowe okno wyboru pliku. Wybieramy plik z dysku lokalnego, który chcemy umieścić w repozytorium. Po załadowaniu pliku plik pokaże się w drzewie w kontekście podkatalogu, który wybraliśmy podczas klikania w żółte pole. Poniżej widok przykładowego repozytorium z podkatalogiem – projektem „SRU Autoinstall” i czterema podkatalogami: „bin”, „etc”, „mount” i „docs” oraz załadowanymi do nich plikami: Przy każdym z plików widoczny jest numer w nawiasach okrągłych. Numer ten to numer wersji danego pliku. Jak widać na powyższej ilustracji, większość plików ma tę wartość równą 1. Oznacza to, że jest tylko jedna pierwsza rewizja (wersja) tego pliku w repozytorium. Plik docs/README ma dla tego parametru wartość 2. Co oznacza, że są dwie wersje tego pliku w repozytorium. Mamy więc stworzone w miarę kompletne repozytorium. Jak pracujemy z repozytoriami? Samo repozytorium służy do przechowywania własnych prac i prac zespołu, który pracuje nad różnymi częściami projektu. Projekt zazwyczaj znajduje się na dysku twardym, komputera na którym pracujemy, zmieniamy pliki projektu, testujemy projekt. Jest to tak zwana kopia lokalna projektu. W momencie kiedy uznamy, że jakąś część projektu nad którą pracowaliśmy, warto zamieścić w repozytorium, wrzucamy zmienione pliki ze swojej kopii lokalnej do odpowiednich podkatalogów w projekcie na repozytorium. Tworząc jednocześnie jak to określiliśmy wcześniej kolejne wersje tych plików. Repozytorium umożliwia pracę grupową użytkowników, jeden z użytkowników może pracować nad graficzną częścią projektu, podczas gdy inny zajmuje się pisaniem kodu jakiegoś innego fragmentu projektu. Przy czym każdy z nich może pobrać cały projekt wraz ze zmianami załączonymi przez innych użytkowników. Załóżmy, że jestem nowym użytkownikiem i chciałbym pobrać całe drzewo projektu, który już istnieje. Chcę aby pobrana kopia stała się moją kopią lokalną nad którą będę pracować na własnym komputerze. Klikam więc na katalogu z repozytorium prawym przyciskiem myszki i wybieram pozycję „informacja”. Otwiera się okno dialogowe, w którym oprócz informacji o klikniętym katalogu, mam także link do archiwum przechowującym cały projekt ze wszystkimi plikami i podkatalogami, link ten jest zatytułowany „Link do katalogu”. Klikając w ten link pobieram standardowe archiwum tar spakowane przez bzip2. Mogę je rozpakować w dowolne miejsce na swoim komputerze. Wewnątrz znajdują się wszystkie pliki projektu, mogę dodawać własne i zmieniać istniejące. Przy czym należy zwrócić uwagę, że jeżeli jakiś podkatalog nie istnieje w repozytorium a jest w mojej kopii lokalnej. Muszę ten podkatalog w odpowiednim miejscu repozytorium stworzyć tak aby odwzorować strukturę drzewa swojej kopii lokalnej w drzewie repozytorium. Poniżej zrzut ekranu dla okna z informacją o katalogu: W skrócie jak wyglądają poszczególne kroki w pracy z repozytorium od jego stworzenia. 1. Na swoim komputerze w wybranym miejscu, tworzę drzewo projektu czyli podkatalog z nazwą projektu wewnątrz którego znajdują się wszystkie pliki i podkatalogi będące częścią projektu. To jest moja kopia lokalna projektu. 2. Tworzę repozytorium w serwisie a w nim podkatalog o nazwie takiej samej jak katalog mojej kopii lokalnej. Odtwarzam całe drzewo podkatalogów w repozytorium w serwisie aby wyglądało jak drzewo mojej kopii lokalnej. 3. Z mojej kopii lokalnej dla każdego katalogu i podkatalogu wrzucam wszystkie pliki z kopii lokalnej, które powinny znaleźć się w odpowiednich katalogach do repozytorium. 4. Pracuję nad plikami, wprowadzam zmiany w swojej kopii lokalnej. Jeżeli uznaję, że pewien etap zmian jest już gotowy do opublikowania w repozytorium, wrzucam zmienione pliki w odpowiednie podkatalogi na repozytorium w serwisie. 1. Jeżeli dołączam do istniejącego projektu, wtedy wchodzę na interesujące mnie repozytorium, klikam w jego katalog prawym przyciskiem myszki i pobieram archiwum ze wszystkimi jego plikami. 2. Archiwum rozpakowuję u siebie na dysku do wybranego katalogu. Staje się on moją kopią lokalną. 3. Dalsza praca wygląda jak w punkcie 4 poprzedniej listy. Uwaga! Usunięcie pliku lub katalogu z repozytorium jest bezpowrotne, nie da się odzyskać usuwanego pliku jeżeli nie masz zrobionej kopii lokalnej. Dla tego trzeba rozważnie posługiwać się usuwaniem plików i katalogów oraz co jakiś czas pobierać archiwum z kopią projektu aby w razie przypadkowego usunięcia móc odtworzyć usuwany plik z kopii.