1 / 27

Systemy kontroli wersji

Systemy kontroli wersji. Sebastian Wojczyk wojczyk@math.uni.lodz.pl. 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,

nicola
Download Presentation

Systemy kontroli wersji

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systemy kontroli wersji Sebastian Wojczyk wojczyk@math.uni.lodz.pl

  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 systemyRCS Revision Control System • 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 systemyCVS ConcurrentVersions 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 systemySVNSubversion • 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 systemyGIT • 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 • RCSCVSSVN • 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 http://git-scm.com/

  16. GIT – wstęp • gitconfiguser.name "Jan Nowak" • gitconfig user.email "jan@domena.pl" • 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 configuser.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, uzytkownik@serwer (z użyciem ssh)

  18. GIT – statusy plików • Pliki nieś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> • 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 diffHEAD <plik> • Pokazuje różnice pomiędzy wskazanym plikiem roboczym a repozytorium, • git diffHEAD^ <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 --cachedlub 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 poczekalniró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 --statwyś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="2000-01-01" –until="2005-12-31" • 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 checkoutHEAD^ <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 remoteadd <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 repozytoriumi dodatkowo scala je (merge) z naszą kopią roboczą,

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

More Related