Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy kontroli wersji

Podobne prezentacje


Prezentacja na temat: "Systemy kontroli wersji"— Zapis prezentacji:

1 Systemy kontroli wersji
Sebastian Wojczyk

2 Plan wykładu Kilka dat z historii, Przydane pojęcia,
Do czego służą systemy kontroli wersji, Architektury systemów kontroli wersji, Najbardziej znane systemy kontroli wersji, System kontroli wersji GIT, Ogólne informacje, instalacja, konfiguracja, Tworzenie repozytorium, Statusy i cykl życia plików, Praca z repozytorium lokalnym, Praca z repozytorium zdalnym,

3 Rys historyczny 1969 – system UNIX, 1972 – język C, 1976 – diff,
1982 – RCS, 1983 – język C++, 1986 – patch, 1986 – CVS, 1991 – system Linux, 2000 – SVN, 2000 – język C#, 2003 – system Linux – jądro w wersji 2.6, 2005 – GIT,

4 Definicja System kontroli wersji - oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu zmian dokonanych w plikach przez wiele osób w różnych momentach czasowych. Repozytorium - miejsce uporządkowanego przechowywania dokumentów (definicja ogólna), w przypadku systemów kontroli wersji miejsce przechowywania plików wraz z informacjami o wszystkich zarejestrowanych zmianach, Rewizja/Wersja - stan plików po wykonaniu określonej liczby zmian, każda operacja zapisu do repozytorium tworzy nową rewizję, Kopia robocza – kopia plików (najczęściej początkowo pobrana z repozytorium) służąca bieżącej pracy. Kopia robocza jest w pełni prywatna. Dokonane w niej zmiany mogą być zapisane do repozytorium.

5 Główne zadania Przechowuje bieżący stan projektu,
Pomaga synchronizować pracę grupy programistów, Przechowuje historię zmian w projekcie, Pozwala przeglądać historię zmian projektu, Automatyzuje wiele czynności programistów, Porównywanie plików, Śledzenie zmian: zakres zmian, czas wprowadzenia, autora, Ułatwia zarządzanie wydaniami i wersjami projektu, Umożliwia tworzenie gałęzi projektu, Ułatwia poszukiwanie błędów.

6 Systemy lokalne

7 Systemy scentralizowane

8 Systemy rozproszone

9 Narzędzia wspomagające
diff – program komputerowy działający w konsoli, wyświetlający różnice między dwoma plikami tekstowymi na poziomie poszczególnych wierszy. Ukazuje które wiersze występują w obu plikach, a które są unikalne. wiersze wspólne dla porównywanych plików nie są oznaczane, wiersze występujące tylko w pierwszym pliku są oznaczane -, wiersze występujące tylko w drugim pliku są oznaczane +, Czasami znaki -/+ zamieniane są na znaki >/<, wdiff – wersja diff operująca na pojedynczych słowach, patch – program komputerowy działający w konsoli, służący do zakładania/nakładania patchy (łat, łatek).

10 Popularne systemy RCS Revision Control System
Kontrola zmian w pojedynczych plików, Możliwość opisu każdej zmiany, Możliwość śledzenia i przeglądania zmian, Rozgałęzianie wersji (ang. branching), Scalanie wersji (ang. merging), Automatyczne porównywanie i scalanie plików, Praca nad projektem w jednej lokalizacji (system lokalny), Podstawowe blokowanie dostępu (ang. locking),

11 Popularne systemy CVS Concurrent Versions System
Podstawowe funkcje wzięte jak w RCS, Zarządzanie dużymi projektami (tysiące plików), Równoległa praca nad tymi samymi plikami, Synchronizacja równoczesnych zmian przez wielu autorów, Centralne repozytorium dla całego projektu, Decentralizacja i rozproszenie pracy autorów, Synchronizacja repozytoriów z użyciem sieci, Złożona konfiguracja i zarządzanie repozytorium,

12 Popularne systemy SVN Subversion
Rejestruje historię dodatkowych informacji o pliku, nazwa, atrybuty, położenie, Dodatkowe dowolnie zdefiniowane atrybuty, Obsługa historii folderów, Atomowość transakcji na wielu plikach, Śledzenie operacji na plikach: Tworzenie, Kopiowanie, Przenoszenie, Zmiana nazwy, Usuwanie, Implementacja w postaci modułu serwera Apache (dostępność),

13 Popularne systemy GIT Rozproszenie systemu – każde repozytorium jest pełnowartościowe, Przyspieszenie pracy przy dużych projektach (większość operacji to praca lokalna), Prostota konstrukcji, Dwustopniowa historia plików (lokalna i globalna), Możliwość pracy offline (na lokalnym repozytorium), Możliwość edycji zmian (opis, dodanie czy wyłączenie pliku), Możliwość wycofywania zmian,

14 Przechowywanie historii zmian
RCS CVS SVN Git

15 GIT – instalacja System dedykowany dla systemu Linux,
Można korzystać pod Windows Emulator Linux (Cygwin), Konsola bash, Podstawowe GUI Uruchamiane menu kontekstowym w katalogu repozytorium, Strona domowa projektu

16 GIT – wstęp git config user.name "Jan Nowak"
git config user. Ustawia identyfikator użytkownika i adres mailowy, Informacje służące do określania autorów zmian w repozytorium, Opcja --global pozwala zrobić te ustawienia dla całego systemu, git config user.name Wyświetla aktualną nazwę użytkownika, git config --list Wyświetla aktualną pełną konfigurację repozytorium, git help <polecenie> Wyświetla tekst pomocy dla polecenia (w przeglądarce).

17 GIT – tworzenie repozytorium
git init Inicjuje nowe repozytorium w bieżącej lokalizacji, Tworzy katalog .git który przechowuje repozytorium, git add plik1.cc Dodanie pojedynczego pliku do poczekalni, git add *.cs Dodanie grupy plików do poczekalni zgodnie z wyrażeniem, git add –all Dodanie wszystkich plików do poczekalni, git commit -m ’zainicjowane repozytorium’ Zapisanie do repozytorium wszystkich plików wcześniej dodanych do poczekalni ze wskazanym komentarzem, git clone protokół://adres Klonowanie istniejącego repozytorium, Protokoły: git, http, https, (z użyciem ssh)

18 GIT – statusy plików Pliki nieśledzone, Pliki śledzone,
Pliki których nie chcemy zapamiętywać i śledzić ich historii, Pliki tymczasowe, Kopie zapasowe plików, Pliki śledzone, Niezmodyfikowane, Zawartość zgodna z ostatnio zapamiętaną w repozytorium wersją, Zmodyfikowane, Zawartość zmieniona w stosunku do ostatnio zapamiętanej w repozytorium wersji, W przechowalni, Plik oznaczony jako gotowe do zapisania w następnej wersji,

19 GIT – cykl życia plików git status Sprawdzenie statusu plików

20 GIT – pliki nieśledzone
Pliki które nie są analizowane przez GITa (nie dodane do śledzenia), Można wymusić ignorowanie pewnych plików Pliki konfiguracyjne do ignorowania plików lub katalogów, .git/info/exclude .gitignore Nazwy konkretnych plików, Nazwy konkretnych katalogów, Nazwy ścieżkowe „od bieżącego katalogu”, Wyrażenia regularne do nazw plików i katalogów, *.bak – wszystkie pliki „bak” w bieżącym katalogu, /bak/* – wszystkie pliki w katalogu bak /bak/** – wszystkie pliki w katalogu bak i jego podkatalogach **/*.bak – wszystkie pliki „ bak” w dowolnym podkatalogu Można negować wyrażenia rozpoczynając znakiem !

21 GIT – pliki śledzone git add <plik> git diff
Dodanie nowych plików do śledzenia i do poczekalni, Dodanie już śledzonych plików do poczekalni (w chwili wykonania polecenia), git diff Pokazuje różnice pomiędzy śledzonymi plikami a poczekalnią/repozytorium, git diff <plik> Pokazuje różnice pomiędzy wskazanym plikiem a poczekalnią/repozytorium, git diff HEAD <plik> Pokazuje różnice pomiędzy wskazanym plikiem roboczym a repozytorium, git diff HEAD^ <plik> Pokazuje różnice pomiędzy wskazanym plikiem roboczym a repozytorium (poprzednia wersja), git diff --cached lub git diff --staged Pokazuje różnice pomiędzy plikami z poczekalni a repozytorium, git rm <plik> Usuwa fizycznie plik z dysku i przekazuje operację usunięcia do poczekalni, git rm --cached lub git rm --staged Usuwa plik z plików śledzonych i przekazuje operację usunięcia do poczekalni; nie usuwa fizycznie pliku z dysku (przydatne gdy chcemy plik np. ignorować), git mv <old> <new> Zmienia nazwę pliku na nową i przekazue operację zmiany do poczekalni równoważne z ciągiem pleceń „mv <old> <new>; git rm <old>; git add <new>”,

22 GIT – zatwierdzanie zmian
git commit Wysyła do repozytorium pliki z poczekalni, git commit –v Dodatkowo w komentarzu dodaje pełnego diffa zmienionych plików, git commit –a Pomija poczekalnię i dodaje do repozytorium wszystkie zmodyfikowane śledzone pliki, git commit –m ’ tekst’ Z linii komend pozwala ustalić tekst komentarza dla zapisu do repozytorium.

23 GIT – przegląd historii
git log Listuje wszystkie zmiany w kolejności od najnowszych do najstarszych, git log <plik> Listuje zmiany dotyczące wskazanego pliku w kolejności od najnowszych do najstarszych, git log -p Opcja -p dodatkowo wyświetla diff dla każdej zmiany, git log -3 Opcja -3 wyświetla tylko 3 ostatnie wpisy, git log --stat Opcja --stat wyświetla statystyki zmian Ilości plików zmienionych, dodanych, usuniętych, Ilości nowych „wstawek” i „usunięć” w plikach (diff), git log --author Wyświetla zmiany danego autora,

24 GIT – przegląd historii 2
git log --pretty=oneline Wyświetla skróty i komentarze do kolejnych rewizji, git log --pretty=format:"%ar : %s" Wyświetla raport w zadanym formacie (ar – autor, s – komentarz), Dostępnych wiele innych predefiniowanych zmiennych, git log --since=2.weeks Wyświetla zmiany z ostatnich dwóch tygodni, git log --since=" " –until=" " Wyświetla zmiany z zadanego okresu, I wiele innych opcji

25 GIT – wycofywanie zmian
git reset HEAD <plik> Usunięcie pliku z poczekalni (teraz jest tylko śledzony), git checkout <plik> Przywrócenie pliku do stanu z ostatniej rewizji (ostatni commit), git checkout HEAD^ <plik> Przywrócenie pliku do stanu z przed-ostatniej rewizji, git checkout HEAD^^ <plik> Przywrócenie pliku do stanu z przed-przed-ostatniej rewizji, git commit --amend Ponowienie operacji commit z uwzględnieniem aktualnej poczekalni; Jeśli w poczekalni nic się nie zmieniło to tylko możliwość zmiany komentarza,

26 GIT – zdalne repozytoria
git remote Wyświetla nazwy zarejestrowanych zdalnych repozytoriów, git remote -v Wyświetla nazwy zdalnych repozytoriów i ich pełne URL-e, git remote add <nazwa> <url> Dodaje nowy wpis do listy zdalnych repozytoriów, git push Wypycha zmian z lokalnego do zdalnego repozytorium git fetch Pobiera zmiany ze zdalnego do lokalnego repozytorium git pull Pobiera zmiany ze zdalnego do lokalnego repozytorium i dodatkowo scala je (merge) z naszą kopią roboczą,

27 GIT – bibliografia Scott Chackon, Pro Git, http://git-scm.com/book
Dokumentacja systemu GIT


Pobierz ppt "Systemy kontroli wersji"

Podobne prezentacje


Reklamy Google