Systemy kontroli wersji

Slides:



Advertisements
Podobne prezentacje
Ewidencja Wyposażenia PL+
Advertisements

Tworzenie stron internetowych
Zarządzanie konfiguracją oprogramowania
Interfejs użytkownika do zarządzania konfiguracją oprogramowania
przetwarzaniu informacji
Rola komputera w przetwarzaniu informacji.
1 / 47 WARSZAWA 2005 Przemysław Siekierko Stanisław Andraszek Rational Unified Process.
OGÓLNIE O LINUKSIE Co to jest Linux?
Task HEP Aplikacja – Procedura do poszukiwania obszarów niezgodności danych z oczekiwanym tłem i wyznaczania ich statystycznej znaczoności. Opiera się
czyli: jak zostać nieomylnym
Dokumentowanie wymagań w języku XML
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Inżynieria Oprogramowania dla Fizyków
Usługa Windows Server Update Services (WSUS)
SO – LAB3 Wojciech Pieprzyca
Wykład 6 Wojciech Pieprzyca
Artur Szmigiel Paweł Zarębski Kl. III i
Rozproszone bazy danych
SAMBA JAKO SERWER PLIKÓW
Budowa, przeglądanie i modyfikacja
ZASOBY KOMPUTERA I PRACA W SYSTEMIE OPERACYJNYM WINDOWS XP
Łukasz Sobczak. 1)Co to jest Office 2010 Web Apps 2)SharePoint 2010 a narzędzia pakietu office 3)Integracja Office Web Apps z SharePoint )Problemy.
Nowoczesny system zarządzania firmą
Temat: Eksplorator Windows - wędrówka po drzewie folderów
Opracowanie: Maria Wąsik
Podstawowa obsługa magazynu.
Systemy kontroli wersji Public enemy number one czy twój największy przyjaciel? Not Yet Another Conference Kraków, Maciej Hryniszak.
Opracowanie zbiorów i normalizacja
Budowa systemu komputerowego
Użytkowanie komputerów
Programowanie strukturalne i obiektowe
System operacyjny i jego usługi
Prezentacja i szkolenie
Systemy operacyjne. Komputer aby mógł realizować zadania oraz aby wszystkie urządzenia w systemie komputerowym mogły działać poprawnie, musi być wyposażony.
Sieciowe Systemy Operacyjne
Systemy operacyjne.
Maszyna wirtualna ang. virtual machine, VM.
Robimy własne notatki - Notatnik
Zarządzanie informacją
Sieciowe systemy operacyjne - UNIX
GIT.
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Bazy danych Microsoft access 2007.
System Kontroli wersji GIT
Komputerowe wspomaganie projektowania
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Systemy kontroli wersji Autorzy:  Mirosław Jedynak  Adam Łączyński.
Czym jest Mantis? Mantis jest to system śledzenia błędów napisany w języku PHP. Współpracuje z SQL, MySQL oraz PostgreSQL. Można go zainstalować na systemach:
Microsoft Disk Operating System
Beata Sanakiewicz. Spis treści  Łączenie dokumentów Łączenie dokumentów  Mechanizm OLE Mechanizm OLE  Obiekt osadzony Obiekt osadzony  Obiekt połączony.
Temat: Normy prawne dotyczące rozpowszechniania programów komputerowych, oraz ochrony prawa autorskiego. Podstawowe definicje Systemu.
Systemy wspomagające pracę grupową i zarządzanie komunikacją
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Systemy kontroli wersji Podstawy. Cz 1. Systemy kontroli wersji  Czym są i po co stosuje się systemy kontroli wersji  Architektury systemów kontroli.
Bazy danych Podstawy relacyjnych baz danych Autor: Damian Urbańczyk.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Podstawy programowania
How to GIT?. Co to? Szybki, rozproszony system kontroli wersji Na licencji GNU PL w wersji 2 Lokalny Łatwy.
Wersjonowanie i konfiguracja Rafał Hryniów. Zarządzanie konfiguracją Każdy artefakt jednoznacznie identyfikowany Zawsze wiadomo który artefakt jest najnowszy.
Analiza, projekt i częściowa implementacja systemu wspomagania pracy Referatu Reprografii Promotor: mgr inż. Dariusz OlczykWykonała: Katarzyna Ściwiarska.
Systemy operacyjne W projekcie brali udział Rabiniak Mateusz, Marek Mycek Damian Kostecki, Piotr Dojlido.
Instalacja i konfiguracja kontrolera domeny. Jest to komputer, na którym uruchomiono usługę Active Directory W małej sieci wystarczy jeden kontroler w.
GIT - System kontroli wersji
Linux ssh.
Git - system kontroli wersji
Ewidencja Wyposażenia PL+
Czym są i jak służą społeczeństwu?
Zapis prezentacji:

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, Ogólne informacje, instalacja, konfiguracja, Tworzenie repozytorium, Statusy i cykl życia plików, Praca z repozytorium lokalnym, Praca z repozytorium zdalnym,

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,

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.

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.

Systemy lokalne

Systemy scentralizowane

Systemy rozproszone

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).

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),

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,

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ść),

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,

Przechowywanie historii zmian RCS CVS SVN Git

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/

GIT – wstęp git config user.name "Jan Nowak" git config 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 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).

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)

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,

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

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 !

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>”,

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.

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,

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

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,

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ą,

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