Programowanie w językach skryptowych - Python i Linux Bash

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie w językach skryptowych - Python i Linux Bash"

Transkrypt

1 Programowanie w językach skryptowych - Python i Linux Bash Maciej Wielgosz Wydział Informatyki, Elektroniki i Telekomunikacji 2015, semestr zimowy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

2 Część II Git M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

3 Git 1 Systemy kontroli wersji 2 Systemy scentralizowane a rozproszone 3 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami 4 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów 5 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja 6 Organizacja pracy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

4 VCS System kontroli wersji (ang. Version Control System) Program służacy do śledzenia zmian w kodzie/dokumencie źródłowym oraz ułatwiajacy łaczenie modyfikacji pochodzacych z wielu źródeł. Obecnie VCS stały się standardem przy pracy nad różnego typu projektami informatycznymi, ale za VCS można uznać także np. śledzenie zmian w systemach typu Wiki czy pakietach biurowych. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

5 Dlaczego warto używać VCS? Do najważniejszych zalet VCS można zaliczyć: proste przegladanie i przywracanie poprzednich wersji plików, łatwość synchronizacji źródeł pomiędzy różnymi maszynami i członkami zespołu, możliwość rozwijania projektu w wielu kierunkach jednocześnie (np. naprawianie błędów z ostatniej wersji przy równoczesnej pracy nad nowa funkcjonalnościa), opcje integracji z automatycznymi narzędziami do np. testowania czy deploymentu. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

6 Popularne systemy W chwili obecnej najczęściej można spotkać się z następujacymi systemami: Apache Subversion (SVN) stworzony w roku 2000 jako (w większości kompatybilny) następca Concurrent Version System (CVS), Mercurial (Hg) pojawił się w roku 2005; jego zamierzonym pierwotnym zastosowaniem była praca nad rozwojem jadra Linuksa, jednak w tym celu ostatecznie wybrano Git, Git stworzony kilka dni przed Mercurialem i w tym samym celu; obecnie prawdopodobnie najpopularniejszy system kontroli wersji. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

7 Git 1 Systemy kontroli wersji 2 Systemy scentralizowane a rozproszone 3 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami 4 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów 5 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja 6 Organizacja pracy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

8 Systemy lokalne Proste bazy danych, która przechowuja wszystkie zmiany w plikach jako kolejne wersje, jednym z pierwszych systemów tego typu był RCS (Revision Control System), systemy te działaja na zasadzie przechowywania różnic pomiędzy plikami tzw. patchy, można odtworzyć jak plik wygladał w dowolnym momencie czasu poprzez zsumowanie wszystkich patchy. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

9 Systemy scentralizowane Systemy scentralizowane powstały z potrzeby współdzielenia kodu pomiędzy różnymi developerami i maszynami, oparte sa na idei głównego serwera przechowujacego cała historię i dowolnej ilości klientów, którzy kopiuja z centralnego serwera pliki, jednym z najpopularniejszych przykładów takich systemów jest Apache Subversion (SVN), przez wiele lat systemy scentralizowane były standardem w obszarze kontroli wersji. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

10 Zalety i wady systemów scentralizowanych Zalety (w stosunku do systemów lokalnych): każdy do pewnego stopnia orientuje się, co robia inni członkowie zespołu, szczegółowa kontrola uprawnień użytkowników, łatwiejsze zarzadzanie (łatwiej zarzadzać jednym repozytorium niż wieloma lokalnymi). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

11 Zalety i wady systemów scentralizowanych Wady: niedostępność centralnego repozytorium powoduje paraliż pracy całego zespołu, ze względu na brak komunikacji z baza danych, awaria centralnego serwera powoduje utratę całej historii pracy (chyba że były tworzone kopie zapasowe). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

12 Systemy rozproszone Zasada działania Systemy rozproszone przechowuja lokalnie cała historię zmian, co pozwala użytkownikowi na pracę niezależnie od dostępności innych węzłów. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

13 Zalety systemów rozproszonych Zalety: każda kopia repozytorium służy jednocześnie jako kompletne repozytorium, istnieje możliwość używania kilku zdalnych ( centralnych ) serwerów, taka architektura umożliwia stosowanie wielu modeli organizacji pracy, obecnie najpopularniejszym przykładem systemu rozproszonego jest git. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

14 Podsumowanie Systemy scentralizowane sa tworzone z założeniem, że istnieje jedno właściwe (absolutne) źródło. Systemy rozproszone: zostały stworzone z założeniem, że każde repozytorium jest tak samo dobre jak inne, dzielenie i scalanie repozytoriów jest po prostu forma komunikacji, decyzja o znaczeniu danego repozytorium jest podejmowania indywidualnie i nie jest kontrolowana przez oprogramowanie. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

15 Git 1 Systemy kontroli wersji 2 Systemy scentralizowane a rozproszone 3 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami 4 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów 5 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja 6 Organizacja pracy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

16 Git jako system lokalny Główna zaleta systemów rozproszonych jest ich autonomiczność: aby z nich korzystać, nie jest potrzebny żaden serwer, w podstawowej wersji wszystko może odbywać się tak, jak przy stosowaniu najprostszego lokalnego systemu. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

17 Git CLI Program git działa na zasadzie komend (podprogramów), z których niemal każda ma odrębny zestaw argumentów. Listę wspólnych opcji oraz najczęściej używanych komend można zobaczyć wpisujac: $ git --help Szczegółowe opcje poszczególnych komend można zobaczyć używajac: $ git <command> --help M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

18 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

19 Nowe repozytorium Założenie nowego, lokalnego repozytorium w wybranym katalogu (moga wcześniej istnieć w nim jakieś pliki; w przykładach używany będzie katalog acai): $ cd acai $ git init Initialized empty Git repository in /[...]/acai/.git/ M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

20 Dodanie istniejacych plików Stworzone w ten sposób repozytorium nie śledzi jeszcze żadnych zmian w plikach. Aby rozpoczać kontrolowanie wersji dla już istniejacych w katalogu plików należy wydać dwa polecenia. Pierwsze z nich to: $ git add. Powoduje ono dodanie do kontroli wersji wszystkich plików z bieżacego (.) katalogu. Co dokładnie zostało dodane można sprawdzić wydajac polecenie git status. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

21 Dodanie istniejacych plików $ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: new file: new file:....gitignore LICENSE.txt README.md M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

22 Pierwszy commit Druga komenda instruuje gita, aby zapamiętał ten punkt w historii. W wersji podstawowej wyglada ono tak: $ git commit Po wykonaniu polecenia otwierany jest domyślnie skonfigurowany edytor tekstowy w którym należy podać opis właśnie tworzonego punktu. Standardowo opis ten musi zostać dodany w przeciwnym razie tworzenie punktu zostanie anulowane. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

23 Pierwszy commit Często opis (wiadomość, ang. message) podaje się bezpośrednio z linii poleceń: $ git commit -m "Project skeleton" [master (root-commit) ] Project skeleton 19 files changed, 718 insertions(+) create mode gitignore create mode LICENSE.txt create mode README.md... M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

24 Pełna inicjalizacja Podsumowujac, rozpoczęcie lokalnej pracy z gitem najczęściej przebiega następujaco: $ cd <project_dir> $ git init... $ git add. $ git commit -m "Initial commit"... M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

25 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

26 Możliwe stany plików Pliki w gicie moga znajdować się w jednym z 2 stanów: nieśledzone (ang. untracked) pliki, których stanu git nie przechowuje śledzone (ang. tracked) takie, o których git wie Aby plik był śledzony, należy go dodać do gita, np. używajac polecenia git add. Usunięcie pliku z listy śledzonych (i z dysku!) po stworzeniu commita odbywa się za pomoca git rm. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

27 Śledzenie zmian Śledzone pliki moga być: niezmodyfikowane (ang. unmodified) takie, które nie zmieniły się od czasu ostatniego zapisu stanu zmodyfikowane (ang. modified) takie, w których sa wprowadzone jakieś zmiany M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

28 Śledzenie zmian Każdy zmodyfikowany plik zawiera jedna lub więcej zmian. Warto pamiętać, że git ma możliwość zapisu stanu każdej zmiany z osobna. Każda zmiana może być zatwierdzona (w nomenklaturze gita staged) lub nie. Zwykle jednak nie rozpatruje się każdej zmiany pojedynczo, tylko zatwierdza wszystkie w danym pliku. To, na jakim etapie cyklu życia jest dana zmiana można podejrzeć używajac komendy git status. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

29 Status pliku $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: modified: LICENSE.txt README.md no changes added to commit (use "git add" and/or "git commit -a") M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

30 Zatwierdzenie zmian Zatwierdzenie (wszystkich) zmian w danych plikach odbywa się przy użyciu polecenia git add: $ git add LICENSE.txt README.md $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: modified: LICENSE.txt README.md M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

31 Zatwierdzenie zmian Do zatwierdzenie wszystkich zmian we wszystkich zmodyfikowanych plikach, a także dodania do kontroli wersji nowych (i usunięcia z niej już nieistniejacych), przydatna jest opcja -A: $ git add -A Oznacza ona w skrócie zatwierdź wszystko. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

32 Wycofanie zmian Jeśli któraś z zatwierdzonych zmian jednak nie powinna zostać zapisana, można użyć git reset, aby ja wycofać: $ git reset README.md Unstaged changes after reset: M README.md Polecenie to (w tej formie) nie powoduje żadnych zmian w pliku informuje tylko gita, że dana zmiana (zmiany) maja jeszcze nie być zapisywane. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

33 Podejrzenie zmian Do podgladania, co zostało zmienione od ostatniego zapisu stanu (ogólnie lub w danym pliku) służy polecenie git diff: $ git diff README.md Otworzy ono edytor, w którym zaznaczone będa miejsca wystapienia zmian. W najprostszym przypadku lista różnic będzie miała postać pliku tekstowego, zawierajacego informacje o tym, które linie i w jakich plikach zostały zmienione. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

34 git diff 1 diff --git a/readme.md b/readme.md 2 index e69de29..1edb8e a/readme.md b/readme.md -0,0 6 +ACAI - ACcelerated AI Suite of Artificial Intelligence algorithms implemented with future hardware acceleration (via OpenCL) in mind. git diff README.md M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

35 Podwójny status pliku Czasami może zdarzyć się, że plik znajduje się zarówno na liście zmian zatwierdzonych do zapisu (staged), jak i na liście zmian jeszcze nie zatwierdzonych (unstaged). Wynika to ze wspomnianego wcześniej śledzenia pojedynczych zmian jeśli zatwierdzony był cały plik, to tak naprawdę zatwierdzone były wszystkie zmiany znajdujace się w nim w danym momencie. Jeśli uległ on dalszej modyfikacji (nawet nadpisujacej zatwierdzone zmiany), to nowe modyfikacje również trzeba zatwierdzić, by mogły być zapisane. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

36 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

37 Komenda commit Zatwierdzone zmiany zapamiętuje się używajac polecenia git commit. Tworzy ono opisany punkt na osi czasu, do którego można powracać. Każdy commit identyfikowany jest przez unikalny hash, automatycznie generowany na podstawie danych takich jak bieżacy czas, autor commita czy wprowadzony opis. Hash ten pozwala stwierdzić, czy dwa commity posiadajace ten sam opis faktycznie sa takie same. Wiele poleceń gita przyjmuje hash jako jeden ze swoich argumentów. Cały identyfikator jest jednak kłopotliwy w użyciu (SHA1 generuje ciagi o długości 40 znaków), więc często stosuje się tylko 7 pierwszych jego znaków. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

38 Always commit, you must Stworzony commit zabezpiecza przed utrata wyników pracy. Często okazuje się, że poprzednie rozwiazanie było tym właściwym... Jeżeli zapisany został tylko stan po wszystkich poprawkach, nie ma jak podejrzeć i/lub wykorzystać w tym celu pierwotnego rozwiazania trzeba napisać je od nowa. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

39 Always commit, you must Jeżeli natomiast stan był zapisywany po każdym etapie pracy, to z łatwościa można przywrócić plik do poprzedniego stanu czy to w celu zastapienia obecnej wersji, czy tylko podejrzenia i ekstrakcji potrzebnych fragmentów. Miedzy innymi z tego powodu warto jest wyrobić sobie nawyk tworzenia częstych i dobrze opisanych commitów. Przyda się to także w późniejszej, zespołowej pracy z gitem a czasami może okazać się jedyna deska ratunku w przypadku wystapienia jakichś problemów. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

40 Podstawowe użycie $ git commit Uruchomienie powyższej komendy otworzy domyślny edytor (vim), w którym należy wprowadzić opis. Standardowo plik ten zawiera komentarz, dostarczajacy dodatkowych informacji o tworzonym właśnie commicie. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

41 Podstawowe użycie 1 2 # Please enter the commit message for your changes. Lines starting 3 # with # will be ignored, and an empty message aborts the commit. 4 # On branch master 5 # Changes to be committed: 6 # modified: LICENSE.txt 7 # 8 # Changes not staged for commit: 9 # modified: README.md 10 # Domyślna zawartość pliku z opisem M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

42 Podstawowe użycie Domyślnie, jeśli nie wpiszemy treści opisu, commit zostanie anulowany: Aborting commit due to empty commit message. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

43 Opis z linii poleceń Często używa się parametru -m, aby wprowadzić opis bezpośrednio z linii poleceń: $ git commit -m "Change license to MIT" [master 3278ed2] Change license to MIT 1 file changed, 21 insertions(+), 1 deletion(-) rewrite LICENSE.txt (100%) M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

44 Zatwierdzenie wszystkich zmian przy zapisie Aby nie dodawać ręcznie zmian w każdym śledzonym już pliku, można użyć opcji -a: $ git commit -a -m "Add basic repo description" [master fc13f88] Add basic repo description 1 file changed, 3 insertions(+) Opcja ta dotyczy tylko już śledzonych plików. Jeżeli w repo zostały stworzone nowe, należy dodać je normalnie, używajac np. git add -A. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

45 Edycja commita Zdarza się, że przy tworzeniu commita nastapiła pomyłka, np. literówka w opisie czy pominięty plik. Z pomoca przychodzi wtedy opcja --amend, pozwalajaca na łatwa edycję ostatniego commita: $ git commit --amend -m "Add basic project description" [master bb3823f] Add basic project description Date: Wed Oct 14 13:45: file changed, 3 insertions(+) M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

46 Edycja commita To, co tak naprawdę git robi, to usuwa ostatni commit i w jego miejsce tworzy nowy, zawierajacy wszystkie zmiany z tego usuniętego oraz nowo zatwierdzone. Można to zaobserwować porównujac ich identyfikatory. W wyniku edycji powstaje nowy commit. Nie ma to wielkiego znaczenia w przypadku lokalnego użycia gita, jest jednak ważne przy bardziej zaawansowanych zastosowaniach. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

47 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

48 Ostatni commit Opis i zmiany zapisane w ostatnim commicie można zobaczyć korzystajac z polecenia git show. Analogicznie jak git diff otworzy ono edytor z plikiem zawierajacym listę zmian i dodatkowo informacjami o commicie: 1 commit bb3823f63f a60b319fcc3a1b1a7 2 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 3 Date: Wed Oct 14 13:45: Add basic project description 6 7 diff --git a/readme.md b/readme.md M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

49 Ostatni commit 8 index e69de29..8dd37ac a/readme.md b/readme.md -0,0 12 +ACAI - ACcellerated AI Suite of Artificial Intelligence algorithms implemented with future hardware acceleration (via OpenCL) in mind. git show M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

50 Przeglad historii Skrócona historię commitów można przegladać przy użyciu polecenia git log. Będzie ona otworzona w domyślnym edytorze. 1 commit bb3823f63f a60b319fcc3a1b1a7 2 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 3 Date: Wed Oct 14 13:45: Add basic project description 6 7 commit 3278ed255627fa64ede6ab587e0d2c8c2711d203 8 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 9 Date: Wed Oct 14 13:23: Change license to MIT M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

51 Przeglad historii 13 commit a0ce d5fd88224d9582aaa0a 14 Author: Maciej Wielgosz 15 Date: Mon Oct 12 22:28: Project skeleton git log Pełna informację o zmianach można wyświetlić podajac argument w postaci hasha do polecenia git show, np. git show 3278ed2. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

52 Historyczne wersje pliku Aby zobaczyć, jak wygladał dany plik w konkretnym punkcie historii lub przywrócić go do tego stanu, można użyć komendy git checkout podajac hash interesujacego commita i ścieżkę do pliku. $ git checkout LICENSE.txt Przywrócenie go do bieżacej wersji (z najnowszego commita) odbywa się analogicznie (HEAD odpowiada ostatniemu commitowi): $ git checkout HEAD LICENSE.txt M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

53 Historyczne wersje pliku Dostępne sa również pewne skróty, np. $ git checkout HEAD~2 LICENSE.txt cofa plik LICENSE.txt o 2 wersje. Należy zauważyć, że wynikiem polecenia git checkout nie jest tylko podglad dokonywane sa faktyczne zmiany w pliku, które w razie potrzeby można zatwierdzić i zapisać. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

54 Podglad historycznej wersji pliku Jeżeli pożadany jest tylko podglad, bez wprowadzania zmian do pliku, można skorzystać z wariantu polecenia git show: $ git show HEAD~2:./LICENSE.txt Jako separatora pomiędzy identyfikatorem wersji, a ścieżka do pliku używa się : (bez spacji!). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

55 Znaczace opisy Dobre opisy commitów znaczaco ułatwiaja prace z historia zmian. Moga pomóc znacznie zawęzić przeszukiwany przedział czasu w przypadku np. pojawienia się nowych błędów czy ułatwić znalezienie konkretnej wersji pliku. Czytelne opisy sa istotne zwłaszcza w przypadku pracy w grupie oraz korzystania z narzędzi automatycznie generujacych listę zmian (changelog) w projekcie. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

56 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami Tworzenie Łaczenie Konflikty Usuwanie Rebase M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

57 Branch Branch Odgałęzienie projektu, zwykle wydzielone w celu realizacji konkretnej funkcjonalności. Wszystkie repozytoria git maja domyślny, główny branch o nazwie master. Zwykle stanowi on bazę, na podstawie której tworzy się inne branche. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

58 Istniejace branche Sprawdzenie, jakie branche istnieja w projekcie odbywa się za pomoca polecenia git branch. $ git branch * master W momencie stworzenia nowego repozytorium branch master nie jest widoczny na liście branchy pojawia się on tam dopiero po pierwszym commicie. Aktywny branch (czyli ten, do którego przynależa wersje plików znajdujace się obecnie na dysku) oznaczony jest *. W danej chwili aktywny może być tylko jeden branch. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

59 Tworzenie Jednym ze sposobów stworzenia nowego brancha jest: git branch <branch_name> Polecenie to tworzy nowy branch, ale go nie aktywuje. Aby zaczać pracę należy się na niego przełaczyć: git checkout <branch_name> Jest to standardowy sposób przełaczania się między branchami. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

60 Tworzenie Wygodniejszym sposobem jest stworzenie nowego brancha równocześnie z jego aktywacja, przy użyciu opcji -b: $ git checkout -b documentation Switched to a new branch documentation Nowo stworzony branch domyślnie poczatkowo znajduje się w tym samym punkcie, co obecnie aktywny. Można także podać, który branch ma stanowić bazę nowo tworzonego: $ git checkout -b docs master Switched to a new branch docs M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

61 Merge Po zakończeniu pracy nad dana funkcjonalnościa i jej przetestowaniu przychodzi czas na właczenie jej do głównego brancha. Jednym ze sposobów, by to zrobić, jest użycie polecenia git merge. Aby połaczyć branche za jego pomoca, należy najpierw przełaczyć się na docelowy branch (zwykle master ). $ git checkout master Switched to branch master $ git merge docs Updating e8690 Fast-forward README.md file changed, 5 insertions(+) M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

62 Merge M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

63 Konflikty Nie zawsze merge przebiega bez problemów. Jeśli dany plik został zmieniony zarówno w branchu, który chcemy dołaczyć, jak i w branchu docelowym, moga pojawić się konflikty, z którymi git nie poradzi sobie automatycznie. $ git checkout documentation Switched to branch documentation $ git merge docs Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

64 Konflikty W takim wypadku dostępne sa dwie opcje postępowania: 1 anulowanie operacji: $ git merge --abort 2 manualne rozwiazanie konfliktów i stworzenie commita łacz acego konfliktowe zmiany w pożadany sposób. Wykorzystywane w tym celu sa polecenia git add i git commit. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

65 Rozwiazywanie konfliktów Git dodaje do pliku charakterystyczne znaczniki w miejscach, w których nastapił konflikt: 1 ACAI - ACcellerated AI 2 ====================== 3 4 <<<<<<< HEAD 5 Lorem ipsum dolor sit amet, consectetur [...] 6 ======= 7 Suite of Artificial Intelligence algorithms [...] 12 >>>>>>> docs Plik README.md z konfliktami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

66 Rozwiazywanie konfliktów Przy wystapieniu konfliktu jako pierwsze wyświetlane sa zmiany, które były zapisane na aktywnym branchu. Następnie (po =======) wyświetlane sa zmiany, które pochodza z dołaczanego brancha. Rozwiazywanie konfliktów polega na wyszukania wszystkich wystapień takich alternatyw i zastapieniu ich (łacznie z markerami ograniczajacymi) pożadan a zawartościa. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

67 Rozwiazywanie konfliktów 1 ACAI - ACcellerated AI 2 ====================== 3 4 Suite of Artificial Intelligence algorithms [...] 5 6 Lorem ipsum dolor sit amet, consectetur [...] 7 8 ## Idea 9 10 [...] README.md z rozwiazanymi konfliktami M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

68 Rozwiazywanie konfliktów Rozwiazanie konfliktu oznaczamy używajac git add. $ git add README.md Jeśli wszystkie konflikty zostały rozwiazane, to można zakończyć merge: $ git commit [documentation 33693fc] Merge branch docs into documentation M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

69 Rozwiazywanie konfliktów M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

70 Usuwanie Jeśli chcemy usunać jakiś branch, nie może on być aktywny. Aby usunać branch, który został dołaczony do bieżacego ( bezpieczne usunięcie ), używa się opcji -d: $ git checkout master Switched to branch master $ git branch -d docs Deleted branch docs (was 48e8690). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

71 Usuwanie Aby usunać branch, który już nie jest potrzebny, a nie jest dołaczony do bieżacego (np. w międzyczasie powstała zupełnie inna koncepcja rozwiazania danego problemu), należy skorzystać z opcji -D (-d zwróci bład): $ git branch -d documentation error: The branch documentation is not fully merged. If you are sure you want to delete it, run git branch -D documentation. $ git branch -D documentation Deleted branch documentation (was 33693fc). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

72 Rebase Alternatywnym podejściem do scalania zmian jest stosowanie komendy git rebase. Jej działanie polega na edycji kolejności commitów (a co za tym idzie, na edycji zawartości samych commitów) tak, by commity z brancha podlegajacego operacji rebase wydawały się stworzone chronologicznie po wszystkich commitach brancha bazowego. Pozwala to na późniejsze bezkonfliktowe zastosowanie polecenia git merge. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

73 Rebase Załóżmy, że przed merge brancha docs został na bazie brancha master stworzony branch setup. Porównanie historii commitów w branchach master i setup pozwala stwierdzić, że różnia się one jednym commitem. $ git checkout setup Switched to branch setup $ git log M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

74 Rebase 1 commit 8e4bd6bf762a577795c42a33fb5ca27f9d2d43d7 2 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 3 Date: Wed Oct 14 22:28: Correctly configure console entry point 6 7 commit a4b1118f7a75e10dad7f8271d2d28e4ed 8 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 9 [...] git log dla brancha setup M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

75 Rebase 1 commit 48e8690b2f7019dfc811bcc6f88e6d197198f796 2 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 3 Date: Wed Oct 14 19:42: Added some formatting & idea description 6 7 commit a4b1118f7a75e10dad7f8271d2d28e4ed 8 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 9 [...] git log dla brancha master M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

76 Rebase Chcielibyśmy, by docelowa kolejność commitów w branchu master zawierała najpierw commit 48e8690, a następnie 8e4bd6b bez żadnych dodatkowych commitów wynikajacych z merge (tzw. merge fast-forward). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

77 Rebase M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

78 Rebase Oznacza to, że przed właczeniem brancha setup do master musimy zawrzeć wszystkie commity z master (będacego baza) w setup. Innymi słowy: ustalić nowa bazę dla setup (branch setup musi być aktywny): $ git rebase master First, rewinding head to replay your work on top of it... Applying: Correctly configure console entry point M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

79 Rebase M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

80 Rebase Po rebase historia brancha setup wyglada następujaco: 1 commit 3fe7e9e e39f17c8cef6e b Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 3 Date: Wed Oct 14 22:28: Correctly configure console entry point 6 7 commit 48e8690b2f7019dfc811bcc6f88e6d197198f796 8 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

81 Rebase 9 Date: Wed Oct 14 19:42: Added some formatting & idea description commit a4b1118f7a75e10dad7f8271d2d28e4ed 14 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> 15 [...] git log dla brancha setup po rebase Warto zwrócić uwagę na identyfikatory commitów nawet w przypadku braku konfliktów (które rozwiazuje się analogicznie jak przy użyciu merge) git tak naprawdę zastępuje wszystkie unikatowe commity stworzone w branchu podlegajacemu rebase nowymi. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

82 Rebase Ostatnim krokiem jest właczenie brancha setup do master : $ git checkout master Switched to branch master $ git merge setup Updating 48e fe7e9e Fast-forward acai/main.py 2 +- setup.cfg files changed, 5 insertions(+), 8 deletions(-) M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

83 Używanie rebase Zalety: bardziej przejrzysta historia (unika się potencjalnie sporej ilości merge commitów ), ponieważ rebase de facto tworzy nowe commity, może on zostać wykorzystany do uporzadkowania historii brancha podlegajacego tej operacji (np. edycja starych opisów, łaczenie i rozdzielanie commitów). Aby skorzystać z tej możliwości używa się trybu interaktywnego (git rebase -i <base_branch>). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

84 Używanie rebase Wady i niebezpieczeństwa: w przeciwieństwie do merge, rebase jest potencjalnie destrukcyjna operacja. Oznacza to, że w razie pomyłki można zaprzepaścić wyniki pracy, nigdy nie powinno się używać rebase na tzw. publicznych branchach czyli takich, których w jakimś celu używa też ktoś inny (albo na podstawie którego powstały inne branche). Z punktu widzenia gita commity przepisane po rebase i oryginalne commity to dwie zupełnie różne rzeczy (nawet jeśli prowadza do tego samego rezultatu). W efekcie próba połaczenia oryginalnych i nowych zmian wygeneruje ogromna ilość konfliktów. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

85 Używanie rebase Przydatne uwagi: nigdy nie powinno się przeprowadzać operacji rebase na branchu master, przed nieudanym rebase można się w pewnym stopniu zabezpieczyć, tworzac tymczasowy branch: $ git checkout feature-branch $ git checkout -b temporary-branch $ git rebase -i master $ git checkout master $ git merge temporary-branch M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

86 Git 1 Systemy kontroli wersji 2 Systemy scentralizowane a rozproszone 3 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami 4 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów 5 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja 6 Organizacja pracy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

87 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

88 Zdalne repozytorium W większości zastosowań jedno z repozytoriów dostępne dla całego zespołu służy jako repozytorium centralne, analogicznie jak w systemach scentralizowanych. Repozytorium takie zwykle tworzone jest zanim zacznie się jakakolwiek praca na kodem lub tuż po stworzeniu minimalnego szkieletu projektu. Pozwala to na zminimalizowanie późniejszego konfigurowania lokalnych kopii. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

89 Remote Remote Repozytorium, najczęściej zdalne, które jest powiazane z dana instancja repo (nie musi być to repozytorium centralne, może to być np. kopia na maszynie innego developera). Przyjęło się, że domyślny remote dla danego repozytorium nosi nazwę origin. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

90 Ustawienie remote w istniejacym repo Aby dodać remote do istniejacego repo (przykładowo, gdy cała praca odbywała się lokalnie, a teraz została podjęta decyzja o upublicznieniu wyników) należy posłużyć się wariantem komendy git remote: $ git remote add origin git@bitbucket.org:maciekwielgosz/acai.git Aby zobaczyć dostępne remote y wraz z ich URLami, można użyć: $ git remote -v origin git@bitbucket.org:maciekwielgosz/acai.git (fetch) origin git@bitbucket.org:maciekwielgosz/acai.git (push) M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

91 Ustawienie remote w istniejacym repo Samo dodanie remote jednak nie wystarczy. Dla wygody użytkowania powinno się także ustawić dodany właśnie remote jako domyślny przy żadaniu synchronizacji pomiędzy repozytoriami (tzw. upstream). W przeciwnym razie będzie trzeba go podawać przy każdym tego typu żadaniu. Dalsze postępowanie zależy od tego, czy zdalne repozytorium ( origin ) zawiera już jakieś dane, czy też jest puste. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

92 Puste zdalne repozytorium Jeśli użyte ma być puste repozytorium, to pierwsza czynnościa po dodaniu remote do istniejacego projektu powinno być powielenie istniejacej lokalnej struktury w zdalnym repozytorium. Równocześnie w trakcie tej operacji można ustawić nowy remote jako domyślny do synchronizacji dla istniejacych branchy (opcja -u lub --set-upstream). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

93 Puste zdalne repozytorium Wysłanie (push) na remote origin wszystkich (--all) istniejacych lokalnie branchy: $ git push -u origin --all Counting objects: 50, done. Delta compression using up to 8 threads. Compressing objects: 100% (41/41), done. Writing objects: 100% (50/50), KiB 0 bytes/s, done. Total 50 (delta 13), reused 0 (delta 0) To git@bitbucket.org:maciekwielgosz/acai.git * [new branch] master -> master Branch master set up to track remote branch master from origin. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

94 Zdalne repozytorium z zawartościa Jeśli w zdalnym repozytorium już istnieje branch, który ma być ustawiony jako domyślny przy synchronizacji, można zastosować to samo polecenie (wysłanie lokalnych zmian z równoczesnym zapamiętaniem remote): $ git push -u origin master Branch master set up to track remote branch master from origin. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

95 Zdalne repozytorium z zawartościa Alternatywa jest skorzystanie z wariantu polecenia git branch (nie dokonuje ono równocześnie synchronizacji): $ git branch -u origin/master Branch master set up to track remote branch master from origin. Warto zwrócić uwagę na różnicę w składni powyższych poleceń. git branch przyjmuje jako argument tylko nazwę brancha (origin/master traktowane jest jako całość). Pozwala ono na ustawienie jako upstream zdalnego brancha o nazwie innej niż lokalna, podczas gdy przy użyciu push nazwy musza się zgadzać. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

96 Klonowanie Jeżeli chcemy dopiero zaczać pracę z repo, które już gdzieś zdalnie istnieje, najprostszym sposobem jest użycie git clone. Pobierze ono automatycznie wszystkie istniejace branche, pozwalajac na natychmiastowe rozpoczęcie pracy (będa one domyślnie skonfigurowane, by pobierać i wysyłać zmiany na origin, czyli repo, z którego sklonowano instancję). M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

97 Klonowanie $ git clone git@bitbucket.org:maciekwielgosz/acai.git acai-clone Cloning into acai-clone... remote: Counting objects: 50, done. remote: Compressing objects: 100% (41/41), done. remote: Total 50 (delta 13), reused 0 (delta 0) Receiving objects: 100% (50/50), KiB 0 bytes/s, done. Resolving deltas: 100% (13/13), done. Checking connectivity... done. Dodatkowy argument ustawia nazwę lokalnego katalogu na acai-clone. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

98 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

99 Wysyłanie zmian Zmiany wysyłane sa do zdalnego repo przy użyciu znanego już git push. To, jakie branche git będzie próbował wysłać na serwer zależy od konfiguracji. Od wersji 2.0 git domyślnym zachowaniem (przy braku innych parametrów) jest wysyłanie zmian tylko z aktywnego brancha. Branch ten musi mieć ustawiony upstream i ta sama nazwę lokalnie, jak i w zdalnym repo. Wcześniejsze wersje wysyłały zmiany do wszystkich branchy, których nazwy lokalne pokrywały się ze zdalnymi. Mogło prowadzić to do opublikowania niechcianych zmian, więc zachowanie to zostało zmienione. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

100 Wysyłanie zmian $ cd ~/acai $ git status On branch master Your branch is ahead of origin/master by 1 commit. (use "git push" to publish your local commits) nothing to commit, working directory clean $ git --no-pager show --no-patch commit 3c7730e cd79daf925a568e36c8fca06c8 Author: Maciej Wielgosz <wielgosz@agh.edu.pl> Date: Thu Oct 15 20:13: Add acai ASCII art M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

101 Wysyłanie zmian $ git push Counting objects: 5, done. Delta compression using up to 8 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 1.17 KiB 0 bytes/s, done. Total 5 (delta 2), reused 0 (delta 0) To git@bitbucket.org:maciekwielgosz/acai.git 3fe7e9e..3c7730e master -> master M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

102 Pobieranie zmian Zmiany ze zdalnego repozytorium pobiera się poleceniem git fetch. Aby jednak zostały one zaaplikowane (faktycznie wprowadzone w plikach), należy następnie użyć git merge. $ cd ~/acai-clone $ git fetch remote: Counting objects: 5, done. remote: Compressing objects: 100% (5/5), done. remote: Total 5 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (5/5), done. From bitbucket.org:maciekwielgosz/acai 3fe7e9e..3c7730e master -> origin/master M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

103 Pobieranie zmian $ git merge Updating 3fe7e9e..3c7730e Fast-forward acai/acai.txt acai/main.py files changed, 39 insertions(+), 5 deletions(-) create mode acai/acai.txt M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

104 Pobieranie zmian Częściej używany jest git pull, będacy ich połaczeniem: $ git pull remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From bitbucket.org:maciekwielgosz/acai 3c7730e..6c207ea master -> origin/master Updating 3c7730e..6c207ea Fast-forward.env file changed, 1 insertion(+) create mode env M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

105 Możliwości fetch/pull fetch pobiera zmiany dla wszystkich branchy istniejacych na domyślnym remote, domyślny remote dla polecenia fetch może różnić się od domyślnego remote a dla polecenia push, pull może zostać tak skonfigurowany, by opierać swoje działanie na rebase zamiast na merge. Należy wtedy wziać pod uwagę te same punkty, które dotycza rebase. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

106 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

107 Fork Fork Kopia repozytorium, zwykle stworzona w tym samym serwisie co repozytorium centralne. Może posłużyć do rozwijania odrębnej wersji projektu, jako sposób kontroli uprawnień użytkowników czy też dodatkowy poziom zabezpieczenia głównego repozytorium przed błędami. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

108 Kontrola dostępu Często, zwłaszcza w większych projektach, każdy z pracujacych developerów ma uprawnienia do pobrania zmian z głównego repozytorium (read access), ale tylko część z nich może bezpośrednio dokonywać w nim zmian (write access). Każdy z członków zespołu pracuje na swoim forku (jest to jego origin ), co jakiś czas synchronizujac go z głównym repozytorium (remote ten przyjęto nazywać upstream ). Gdy zakończy implementować dana funkcjonalność, stworzone przez niego zmiany sa zatwierdzane i właczane do głównego repozytorium przez kogoś posiadajacego odpowiednie uprawnienia. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

109 Pull request Proces zgłaszania, akceptowania (badź odrzucania) i właczania zmian do głównego repozytorium zazwyczaj odbywa się przy pomocy tzw. pull requestów. Pull requesty pozwalaja na łatwe przegladanie zmian, ich komentowanie, automatyczne testy kodu czy też prosta synchronizację z główna wersja kodu. W możliwość łatwego tworzenia forków i pull requestów wyposażona jest obecnie większość serwisów udostępniajacych usługę przechowywania repozytoriów. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

110 Tworzenie forka M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

111 Tworzenie forka M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

112 Praca z forkiem $ git clone git@bitbucket.org:yuijim/acai.git acai-fork Cloning into acai-fork... [...] $ cd acai-fork $ git remote add upstream git@bitbucket.org:maciekwielgosz/acai.git $ git remote origin upstream $ git branch * master M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

113 Praca z forkiem W czasie pracy z forkiem zwykle nie robi się zmian bezpośrednio na branchu master. Ma on służyć jako branch referencyjny, który można łatwo synchronizować z głównym repozytorium ( upstream ) przed rozpoczęciem kodowania. $ git pull upstream master remote: Counting objects: 4, done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From bitbucket.org:maciekwielgosz/acai * branch master -> FETCH_HEAD * [new branch] master -> upstream/master [...] M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

114 Praca z forkiem Wszystkie zmiany wprowadzane sa na dedykowanych branchach. W ten sposób można pracować nad kilkoma poprawkami/funkcjonalnościami jednocześnie, zawsze majac jako bazę aktualna wersję kodu z głównego repozytorium. Dzięki takiemu postępowaniu nie ma problemów, jeśli np. część zmian zostanie zaakceptowana, a część odrzucona. $ git checkout -b fix-autoenv Switched to a new branch fix-autoenv M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

115 Pull request Gdy proponowane zmiany znajda się już na forku danego developera, należy stworzyć pull request, który następnie będzie oczekiwał na akceptację. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

116 Pull request M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

117 Pull request M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

118 Git 1 Systemy kontroli wersji 2 Systemy scentralizowane a rozproszone 3 Git jako system lokalny Inicjalizacja Stany plików Zapis stanu Historia Praca z branchami 4 Git jako system rozproszony Zdalne repozytorium Podstawowa synchronizacja Model pracy oparty o wiele repozytoriów 5 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja 6 Organizacja pracy M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

119 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

120 Ignorowanie plików Plik.gitignore pozwala na ignorowanie niektórych plików i katalogów w projekcie, np. plików wynikowych kompilacji czy automatycznych kopii zapasowych plików. Zazwyczaj tworzy się go w głównym katalogu projektu. Może on zawierać konkretne ścieżki lub ogólne wzorce nazw plików. Działa on tylko dla nieśledzonych plików pliki które zostały dodane przed jego stworzeniem (lub ich dodanie zostało wymuszone pomimo ustawień w.gitignore) w dalszym ciagu będa śledzone. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

121 Ignorowanie plików 1 # Filesystem helper files 2.DS_Store 3 4 # Temporary and binary files 5 *~ 6 *.py[cod] 7 *.so 8 *.cfg 9!setup.cfg 10 *.orig 11 *.log Fragment przykładowego.gitignore M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

122 Inne możliwości Ignorowanie plików Konfiguracja Więcej o komendach i opcjach Dodatkowa dokumentacja M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

123 Konfiguracja Konfiguracja zachowania gita odbywa się na trzech poziomach, z których każdy nadpisuje ustawienia poprzedniego: systemowy przechowywany w /etc/gitconfig, definiuje zachowanie gita dla wszystkich użytkowników, globalny zwykle zapisany w $HOME/.gitconfig, definiuje zachowanie dla danego użytkownika, lokalny znajduje się w pliku.git/config w każdym repozytorium i definiuje specyficzne dla niego ustawienia. M. Wielgosz (AGH - IET) Programowanie w językach skryptowych - Python i Linux Bash / 138

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie Adam Wójs git --wprowadzenie Życie programisty A) Rozwój projektu B) Naprawianie błędów C) Refaktoryzacja kodu Ekstremalny przykład Wersja jądra Lb-a programistów Lb-a linii kodu

Bardziej szczegółowo

System kontroli wersji Git

System kontroli wersji Git System kontroli wersji Git dr inż. Sebastian Ernst Katedra Informatyki Stosowanej W prezentacji wykorzystano ilustracje z: Scott Chancon, Pro Git, http://git-scm.com/book Systemy kontroli wersji Rejestracja

Bardziej szczegółowo

System kontroli wersji git

System kontroli wersji git System kontroli wersji git Adam Prochownik 13 października 2016 Adam git 13 października 2016 1 / 26 Plan prezentacji 1 Wstęp Materiały Po co kontrola wersji? Dlaczego git? 2 Podstawowe operacje Konfiguracja

Bardziej szczegółowo

GIT. System Kontroli wersji GIT. Rafał Kalinowski

GIT. System Kontroli wersji GIT. Rafał Kalinowski GIT System Kontroli wersji GIT Rafał Kalinowski Agenda Czym jest GIT? Modele pracy Możliwości GIT a Kilka słów o terminologii Obiekty w GIT ie? Struktura zmian Operacje zdalne i lokalne Podstawowe operacje

Bardziej szczegółowo

Co zostanie wypisane na ekranie? (1)

Co zostanie wypisane na ekranie? (1) Wykład 11.05.2016 Co zostanie wypisane na ekranie? (1) class A { public: void wypisz(int n) { cout

Bardziej szczegółowo

Programowanie I

Programowanie I Programowanie I 29.05.2017 Co zostanie wypisane na ekranie? (1) class A { public: void wypisz(int n) { cout

Bardziej szczegółowo

Systemy kontroli wersji

Systemy kontroli wersji Systemy kontroli wersji Git Część I Podstawy Aleksander Lamża ZKSB Instytut Informatyki Uniwersytet Śląski w Katowicach aleksander.lamza@us.edu.pl Zawartość Czym jest Git? Dokumentacja i zasoby Ogólne

Bardziej szczegółowo

Git rozproszony system kontroli wersji

Git rozproszony system kontroli wersji Git rozproszony system kontroli wersji Piotr Macuk Wstęp System kontroli wersji (ang. version control system, VCS) służy do śledzenia zmian projektu w czasie. Umożliwia współpracę wielu osób oraz ułatwia

Bardziej szczegółowo

Systemy kontroli wersji

Systemy kontroli wersji Systemy kontroli wersji Git Część II Gałęzie Aleksander Lamża ZKSB Instytut Informatyki Uniwersytet Śląski w Katowicach aleksander.lamza@us.edu.pl Zawartość Gałęzie Wstępne wymagania Wprowadzenie do systemów

Bardziej szczegółowo

1 Tworzenie własnego zaproszenia dla powłoki bash

1 Tworzenie własnego zaproszenia dla powłoki bash Zad. 0: Git, ssh 1 Tworzenie własnego zaproszenia dla powłoki bash Postać zaproszenia do wprowadzania poleceń, które widoczne jest po otworzeniu terminala tekstowego kształtuje zawartość zmiennej systemowej

Bardziej szczegółowo

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014 Git - podstawy Błażej Kowalczyk Koło Naukowe Robotyków KoNaR 7 listopada 2014 łażej Kowalczyk (Koło Naukowe Robotyków KoNaR) Git - podstawy 7 listopada 2014 1 / 18 Wstęp Kontrola wersji Po co nam kontrola

Bardziej szczegółowo

Rozproszony system kontroli wersji GIT. Piotr Macuk <piotr@macuk.pl>

Rozproszony system kontroli wersji GIT. Piotr Macuk <piotr@macuk.pl> Rozproszony system kontroli wersji GIT Piotr Macuk O mnie Programowanie Linux + vim 19 lat 12 lat Kontrola wersji 9 lat Ruby (on Rails) 5 lat Git 2 lata Agenda Czym jest git Instalacja

Bardziej szczegółowo

Git, Bitbucket. Narzędzia i środowiska programistyczne. Laboratorium 2. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Git, Bitbucket. Narzędzia i środowiska programistyczne. Laboratorium 2. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2 Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 2 Git, Bitbucket Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Technologie Technologie będące przedmiotem laboratorium:

Bardziej szczegółowo

Programowanie zespołowe

Programowanie zespołowe Programowanie zespołowe Laboratorium 8 - wprowadzenie do systemów kontroli wersji i GitHuba mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 kwietnia 2017 1 / 25 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

git krótki przewodnik

git krótki przewodnik git krótki przewodnik Spis treści Podstawy pracy z systemem git (pojęcia)... 2 Instalacja klienta git Atlassian SourceTree... 2 Konfiguracja Atlassian SourceTree do współpracy z bitbucket.org... 3 Tworzenie

Bardziej szczegółowo

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje Git w wersji przenośnej umożliwia korzystanie z repozytoriów na każdym systemie z rodziny Windows, który nie posiada zainstalowanego

Bardziej szczegółowo

CVS system kontroli wersji

CVS system kontroli wersji CVS system kontroli wersji Agenda Podstawowe pojęcia Podstawowe polecenia Metody dostępu do repozytorium Konfiguracja i używanie aplikacji klienckich Konflikty i ich rozwiązywanie Dodatkowe możliwości

Bardziej szczegółowo

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

Ćwiczenia 9: Zarządzanie konfiguracją Zadania: Ćwiczenia 9: Zarządzanie konfiguracją Zadania: Konfiguracja repozytorium CVS: 1. Ściągnij i zainstaluj serwer CVS: CVSNT (www.cvsnt.org). 2. W konfiguracji repozytoriów (Panel Sterowania -> CVSNT) wybierz

Bardziej szczegółowo

GIT. Rozproszony system kontroli wersji

GIT. Rozproszony system kontroli wersji GIT Rozproszony system kontroli wersji Co to jest system kontroli wersji? System kontroli wersji śledzi wszystkie zmiany dokonywane na pliku (lub plikach) i umożliwia przywołanie dowolnej wcześniejszej

Bardziej szczegółowo

System kontroli wersji, system zarządzania kodem źródłowym

System kontroli wersji, system zarządzania kodem źródłowym System kontroli wersji, system zarządzania kodem źródłowym (ang. version/revision control system) VCS albo RCS Source control or (source) code management (SCM) Teoria Co to jest? Po co nam taki system

Bardziej szczegółowo

Git, Bitbucket, IntelliJ IDEA

Git, Bitbucket, IntelliJ IDEA Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 3 Git, Bitbucket, IntelliJ IDEA Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy

Bardziej szczegółowo

Zarządzanie projektami informatycznymi

Zarządzanie projektami informatycznymi Zarządzanie projektami informatycznymi Tworzenie repozytorium Repozytorium w programie git możemy stworzyć na dwa sposoby: git init albo git clone. git init git init inicjalizuje katalog jako repozytorium

Bardziej szczegółowo

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Katedra Informatyki Stosowanej Tomasz Gańko nr albumu: 244629 Praca magisterska na kierunku informatyka stosowana Gra-zabawka

Bardziej szczegółowo

Open Source w służbie developerom

Open Source w służbie developerom 5 grudnia 2011 Wstęp Plan prezentacji Agenda Dyskusja problemu Wstęp Plan prezentacji Agenda Dyskusja problemu Etapy Wstęp Plan prezentacji Agenda Dyskusja problemu Etapy Przykłady Wstęp Plan prezentacji

Bardziej szczegółowo

Drupal i GIT. Schemat pracy.

Drupal i GIT. Schemat pracy. Drupal i GIT. Schemat pracy. Bartek Filipiuk. Crople.pl Wymagania: podstawowa wiedza z Linuxa posiadanie lokalnego środowiska do tworzenia stron w Drupalu podstawowa wiedza z Drupala Czego dowiesz się

Bardziej szczegółowo

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł. Platforma GitHub 1 Cel laboratoriów Zapoznanie się z działaniem platformy GitHub. źródeł. Założenie konta i nauka współdzielenia 2 GitHub GitHub hostingowy serwis internetowy przeznaczony dla projektów

Bardziej szczegółowo

ponad 90 000 pracowników ponad 60 000 pracowników ponad 30 000 pracowników ponad 3 000 pracowników

ponad 90 000 pracowników ponad 60 000 pracowników ponad 30 000 pracowników ponad 3 000 pracowników ponad 90 000 pracowników ponad 60 000 pracowników ponad 30 000 pracowników ponad 3 000 pracowników finanse firmy Ventures Capital, a potem reklamy kwestie socjalne darmowe jedzenie, transport do pracy,

Bardziej szczegółowo

Git i platforma GitHub

Git i platforma GitHub Git i platforma GitHub 1 Cel laboratoriów Zapoznanie się z działaniem Git i platformy GitHub. Założenie konta i nauka współdzielenia źródeł. Git jest systemem kontroli wersji, którego znajomość jest często

Bardziej szczegółowo

Ciasteczka. Krishna Tateneni Jost Schenck Polskie tłumaczenie: Suse Polska Aktualny opiekun tłumaczenia: Marcin Kocur

Ciasteczka. Krishna Tateneni Jost Schenck Polskie tłumaczenie: Suse Polska Aktualny opiekun tłumaczenia: Marcin Kocur Krishna Tateneni Jost Schenck Polskie tłumaczenie: Suse Polska Aktualny opiekun tłumaczenia: Marcin Kocur 2 Spis treści 1 Ciasteczka 4 1.1 Polityka............................................ 4 1.2 Zarzadzanie.........................................

Bardziej szczegółowo

SVN sojusz, partnerstwo, współpraca

SVN sojusz, partnerstwo, współpraca SVN sojusz, partnerstwo, współpraca Bogusz Kowalski Wrocław, 16.03.2010 http://www.linuxacademy.pl 1 Coś o historii Zaczęło się od RCS w 1985... 1990 nadeszła era CVS... 2000 SVN 2 Po co system kontroli

Bardziej szczegółowo

Systemy zarządzania wersjami

Systemy zarządzania wersjami 24 października 2007 Po co? Dla kogo? Dlaczego? aby ułatwić kontrolę nad projektem aby panować nad wersjami aby móc śledzić zmiany dla każdego projektu, przy którym pracuje więcej niż jedna osoba dla ludzi

Bardziej szczegółowo

Konfiguracja i administracja systemem kontroli wersji SVN

Konfiguracja i administracja systemem kontroli wersji SVN Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska Laboratorium Administrowania Systemami Komputerowymi Konfiguracja i administracja systemem kontroli wersji

Bardziej szczegółowo

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010 System kontroli wersji - wprowadzenie Rzeszów,2 XII 2010 System kontroli wersji System kontroli wersji (ang. version/revision control system) służy do śledzenia zmian głównie w kodzie źródłowym oraz pomocy

Bardziej szczegółowo

Programowanie. Systemy kotroli wersji. Janusz Szwabiński. Plan wykładu:

Programowanie. Systemy kotroli wersji. Janusz Szwabiński. Plan wykładu: Programowanie Systemy kotroli wersji Janusz Szwabiński Plan wykładu: Motywacja Przegląd dostępnych systemów Git Git na Windows Github Subversion Subversion na Windows Dobre praktyki kontroli wersji Materiały

Bardziej szczegółowo

MentorGraphics ModelSim

MentorGraphics ModelSim MentorGraphics ModelSim 1. Konfiguracja programu Wszelkie zmiany parametrów systemu symulacji dokonywane są w menu Tools -> Edit Preferences... Wyniki ustawień należy zapisać w skrypcie startowym systemu

Bardziej szczegółowo

Środowisko programisty. Środowisko programisty 1/35

Środowisko programisty. Środowisko programisty 1/35 Środowisko programisty Środowisko programisty 1/35 Środowisko programisty 2/35 Literatura 1. Butcher P., Debugowanie. Jak wyszukiwać i naprawiać błędy w kodzie oraz im zapobiegać, Helion, Gliwice 2010

Bardziej szczegółowo

Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański

Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański Jak usprawnić tworzenie i zarządzanie stroną na drupalu Maciej Łukiański Dlaczego ta prezentacja Najczęściej A można bardziej wydajnie za darmo O czym będzie Code driven development Wersjonowanie kodu

Bardziej szczegółowo

Wprowadzenie do systemu wersjonowania svn

Wprowadzenie do systemu wersjonowania svn SubVersioN Wprowadzenie do systemu wersjonowania svn Wersjonowanie plików Po co zaprzątać sobie tym głowę? Repozytorium Problemy z współdzieleniem Zablokuj-Zmień-Odblokuj Kopiuj-Zmień-Scal Kopiuj-Zmień-Scal

Bardziej szczegółowo

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Instalacja roli kontrolera domeny, Aby zainstalować rolę kontrolera domeny, należy uruchomić Zarządzenie tym serwerem, po czym wybrać przycisk

Bardziej szczegółowo

1. System kontroli wersji. 1.1. Instalacja programu kontroli wersji CVS

1. System kontroli wersji. 1.1. Instalacja programu kontroli wersji CVS 1 1. System kontroli wersji Już przy tak małym projekcie niezbędnym okazało się wdrożenie systemu kontroli wersji, co umożliwiło grupową pracę uczestników projektu. CVS jest narzędziem pomagającym w organizacji

Bardziej szczegółowo

Narzędzia programistyczne - GIT

Narzędzia programistyczne - GIT Narzędzia programistyczne - GIT Kamil Maraś kamil.maras@gmail.com @KamilMaras Agenda Zintegrowane środowisko programistyczne Systemy kontroli wersji Narzędzia wspomagające wytwarzanie aplikacji Narzędzia

Bardziej szczegółowo

Jacek WOŁOSZYN AUTOMATYZACJA PROCESU ARCHIWIZACJI PRZYROSTOWEJ DANYCH Z WYKORZYSTANIEM GIT AUTOMATING THE PROCESS OF INCREMENTAL BACKUP DATA USING GIT

Jacek WOŁOSZYN AUTOMATYZACJA PROCESU ARCHIWIZACJI PRZYROSTOWEJ DANYCH Z WYKORZYSTANIEM GIT AUTOMATING THE PROCESS OF INCREMENTAL BACKUP DATA USING GIT Dydaktyka Informatyki 10(2015) ISSN 2083-3156 DOI: 10.15584/di.2015.10.18 http://www.di.univ.rzeszow.pl Wydział Matematyczno-Przyrodniczy UR Laboratorium Zagadnień Społeczeństwa Informacyjnego Jacek WOŁOSZYN

Bardziej szczegółowo

Assembla.com zajęcia 1

Assembla.com zajęcia 1 Assembla.com zajęcia 1 Autor: Marcin Gadamer System kontroli wersji System kontroli wersji (ang. version/revision control system) - oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym

Bardziej szczegółowo

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania Politechnika Białostocka Wydział Informatyki mgr inż. Tomasz Łukaszuk Microsoft Visual SourceSafe uproszczona instrukcja użytkowania Wprowadzenie Microsoft Visual SourceSafe jest narzędziem pozwalającym

Bardziej szczegółowo

Podstawowy warsztat informatyka

Podstawowy warsztat informatyka Podstawowy warsztat informatyka Jakub Michaliszyn Instytut Informatyki Uniwersytetu Wrocławskiego Wykład 8 Ogłoszenia Lista 12 - dzisiaj termin! Jakub Michaliszyn (II UWr) PWI 2 / 16 Ogłoszenia Lista 12

Bardziej szczegółowo

MBUM #2. Zarządzanie kopiami konfiguracji RouterOS. Jacek Rokicki

MBUM #2. Zarządzanie kopiami konfiguracji RouterOS. Jacek Rokicki MBUM #2 Zarządzanie kopiami konfiguracji RouterOS Jacek Rokicki w IT od 1998, entuzjasta systemów operacyjnych z rodziny Unix, projektowanie, budowa i utrzymanie wysoko dostępnych rozwiązań z wykorzystaniem

Bardziej szczegółowo

Systemy Kontroli Wersji

Systemy Kontroli Wersji Systemy Kontroli Wersji zarzadzanie źródłami Marcin Gryszkalis dagoon@math.uni.lodz.pl Wydział Matematyki Uniwersytetu Łódzkiego Łódź 2003 Systemy Kontroli Wersji p.1/39 VCS a SCM Systemy Kontroli Wersji

Bardziej szczegółowo

Partnerzy: Laboratorium 15

Partnerzy: Laboratorium 15 Laboratorium 15 System kontroli wersji. Mercurial wraz z Subversion, CVS czy też programem Git należy do grupy aplikacji określanych mianem systemów kontroli wersji. Umożliwiają one sprawną prace wielu

Bardziej szczegółowo

SUBVERSION TOMASZ ŁUKASZUK

SUBVERSION TOMASZ ŁUKASZUK SUBVERSION TOMASZ ŁUKASZUK STRESZCZENIE: Dokument przedstawia system Subversion jako następcę systemu CVS. Zawarto w nim instrukcję utworzenia i pracy z systemem Subversion. 1. WPROWADZENIE Subversion

Bardziej szczegółowo

Programowanie zespołowe

Programowanie zespołowe Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 6 Programowanie zespołowe Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Programowanie zespołowe Wymagania wstępne

Bardziej szczegółowo

Podstawowy warsztat informatyka

Podstawowy warsztat informatyka Podstawowy warsztat informatyka Jakub Michaliszyn Instytut Informatyki Uniwersytetu Wrocławskiego Wykład 7 Ogłoszenia Terminarz 12-20 stycznia: rozwiązywanie list 11-12, w czasie pracowni można przyjść

Bardziej szczegółowo

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4 SZYBKI START Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2 Szyfrowanie/odszyfrowanie danych 4 Szyfrowanie/odszyfrowanie tekstu 6 Tworzenie nowego połączenia w celu

Bardziej szczegółowo

VinCent Administrator

VinCent Administrator VinCent Administrator Moduł Zarządzania podatnikami Krótka instrukcja obsługi ver. 1.01 Zielona Góra, grudzień 2005 1. Przeznaczenie programu Program VinCent Administrator przeznaczony jest dla administratorów

Bardziej szczegółowo

Program dla praktyki lekarskiej

Program dla praktyki lekarskiej Program dla praktyki lekarskiej ErLab Instrukcja konfiguracji i obsługi Spis Treści 1. Wstęp... 2 2. Konfiguracja... 3 2.1. Serwer... 3 2.2. Laboratorium... 3 2.3. Punkt pobrań... 4 3. Wysyłanie skierowania...

Bardziej szczegółowo

Ćwiczenia z Git cz. 2

Ćwiczenia z Git cz. 2 Ćwiczenia z Git cz. 2 Stany plików W programie git wyróżniamy trzy rodzaje plików: pliki aktualne, pliki zmodfyikowane pliki nieśledzone. Po wykonaniu poleceń git add i git commit w rezpozytorium zostaje

Bardziej szczegółowo

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel etrader Pekao Podręcznik użytkownika Strumieniowanie Excel Spis treści 1. Opis okna... 3 2. Otwieranie okna... 3 3. Zawartość okna... 4 3.1. Definiowanie listy instrumentów... 4 3.2. Modyfikacja lub usunięcie

Bardziej szczegółowo

Tak. Konrad Ktoso Malawski konrad.malawski@java.pl - @ktosopl blog.project13.pl - SFI 2011-11.03.2011

Tak. Konrad Ktoso Malawski konrad.malawski@java.pl - @ktosopl blog.project13.pl - SFI 2011-11.03.2011 Tak. Tak. Po prostu. github.com/ktoso @ktosopl blog.project13.pl Masz pytanie? Nie czekaj do końca prezentacji! Poproszę... Pytanie do publiczności Ważne słowa (-: WAŻNE :-) System kontroli wersji Scentralizowany

Bardziej szczegółowo

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Pracownia internetowa w każdej szkole (edycja Jesień 2007) Instrukcja numer D1/04_01/Z Pracownia internetowa w każdej szkole (edycja Jesień 2007) Opiekun pracowni internetowej cz. 1 (D1) Tworzenie kopii zapasowej ustawień systemowych serwera - Zadania do wykonania

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną,

Bardziej szczegółowo

DESlock+ szybki start

DESlock+ szybki start DESlock+ szybki start Wersja centralnie zarządzana Wersja bez centralnej administracji standalone WAŻNE! Pamiętaj, że jeśli chcesz korzystać z centralnego zarządzania koniecznie zacznij od instalacji serwera

Bardziej szczegółowo

KS-ZSA. Korporacyjne grupy towarowe

KS-ZSA. Korporacyjne grupy towarowe KS-ZSA Korporacyjne grupy towarowe 1. Ustawienia po stronie KS-ZSA Aby rozpocząć pracę z korporacyjnymi grupami towarowymi system KS-ZSA należy odpowiednio skonfigurować KS-ZSA: Uprawnienia: - 61.Admin

Bardziej szczegółowo

Wprowadzenie do obsługi systemu IOS na przykładzie Routera Tryby poleceń Użytkownika (user mode) Router> Przejście do trybu: Dostępny bezpośrednio po podłączeniu konsoli. Opuszczenie trybu: Polecenia:

Bardziej szczegółowo

Podręcznik użytkownika Obieg dokumentów

Podręcznik użytkownika Obieg dokumentów Podręcznik użytkownika Obieg dokumentów Opracowany na potrzeby wdrożenia dla Akademii Wychowania Fizycznego im. Eugeniusza Piaseckiego w Poznaniu W ramach realizacji projektu: Uczelnia jutra wdrożenie

Bardziej szczegółowo

Instrukcja programu ESKUP

Instrukcja programu ESKUP Instrukcja programu ESKUP Spis treści Wstęp 4 1 Opis oknien programu 5 1.1 Okno główne programu..................................... 5 1.2 Okno Raport........................................... 5 1.3

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL Katedra Informatyki, Uniwersytet Rzeszowski 2009 Agenda System kontroli wersji CVS SVN Praca z SVN i Visual

Bardziej szczegółowo

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie: 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

Bardziej szczegółowo

Program szkolenia: Continuous Integration i Git

Program szkolenia: Continuous Integration i Git Program szkolenia: Continuous Integration i Git Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Continuous Integration i Git tools-git-ci Narzędzia developerzy testerzy 2 dni 50%

Bardziej szczegółowo

INSTRUKCJA obsługi certyfikatów

INSTRUKCJA obsługi certyfikatów INSTRUKCJA obsługi certyfikatów dla użytkownika bankowości internetowej Pocztowy24 z wybraną metodą autoryzacji Certyfikat Spis treści 1. Wstęp... 3 1.1 Wymagania techniczne... 3 2. Certyfikat jako jedna

Bardziej szczegółowo

Memeo Instant Backup Podręcznik Szybkiego Startu

Memeo Instant Backup Podręcznik Szybkiego Startu Wprowadzenie Memeo Instant Backup pozwala w łatwy sposób chronić dane przed zagrożeniami cyfrowego świata. Aplikacja regularnie i automatycznie tworzy kopie zapasowe ważnych plików znajdujących się na

Bardziej szczegółowo

Advanced Tax File Edit

Advanced Tax File Edit JDExperts Sp. z o.o. Advanced Tax File Edit Dokumentacja modyfikacji Spis treści 1 Założenia modyfikacji... 2 1.1 Elementy rozwiązania... 2 1.2 Opis rozwiązania... 2 1.3 Ograniczenia rozwiązania... 2 2

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

Silent setup SAS Enterprise Guide (v 3.x)

Silent setup SAS Enterprise Guide (v 3.x) SAS Institute TECHNICAL SUPPORT Silent setup SAS Enterprise Guide (v 3.x) Silent Setup ( cicha instalacja oprogramowania) pozwala na instalację Enterprise Guide (lub całości oprogramowania SAS) na wielu

Bardziej szczegółowo

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego 2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego produktu. 23 czerwca 2014 Spis treści 3 Spis treści...5

Bardziej szczegółowo

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika) IBM SPSS Statistics Wersja 22 Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Kod autoryzacji.............

Bardziej szczegółowo

Git Podstawowe pojęcia, instalacja i konfiguracja

Git Podstawowe pojęcia, instalacja i konfiguracja Git Podstawowe pojęcia, instalacja i konfiguracja System kontroli wersji (system kontroli rewizji) ułatwia synchronizację plików projektu przez wszystkich uczestników. Git rozproszony system kontroli wersji.

Bardziej szczegółowo

Git instrukcja dla studentów

Git instrukcja dla studentów Git instrukcja dla studentów mgr inż. Maciej Długosz mgr inż. Marek Kokot dr inż. Krzysztof Simiński 30 września 2017 Spis treści 1 Wstęp 1 2 GitHub 1 3 System kontroli wersji Git zasada działania 2 3.1

Bardziej szczegółowo

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania. Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania. Q. Jak uruchomić instalator? A. Trzeba nadać instalatorowi atrybut 'wykonywalny'. Można to zrobić wydając polecenie `chmod

Bardziej szczegółowo

Klient poczty elektronicznej - Thunderbird

Klient poczty elektronicznej - Thunderbird Klient poczty elektronicznej - Thunderbird Wstęp Wstęp Klient poczty elektronicznej, to program który umożliwia korzystanie z poczty bez konieczności logowania się na stronie internetowej. Za jego pomocą

Bardziej szczegółowo

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows. Bezpieczeństwo Systemów Informatycznych Firewall (Zapora systemu) Firewall (zapora systemu) jest ważnym elementem bezpieczeństwa współczesnych systemów komputerowych. Jego główną rolą jest kontrola ruchu

Bardziej szczegółowo

1 Tworzenie własnego zaproszenia dla powłoki bash

1 Tworzenie własnego zaproszenia dla powłoki bash Zad. 0: SVN, ssh 1 Tworzenie własnego zaproszenia dla powłoki bash Postać zaproszenia do wprowadzania poleceń, które widoczne jest po otworzeniu terminala tekstowego kształtuje zawartość zmiennej systemowej

Bardziej szczegółowo

KS-ZSA. Mechanizm centralnego zarządzania rolami

KS-ZSA. Mechanizm centralnego zarządzania rolami KS-ZSA Mechanizm centralnego zarządzania rolami 1. Opis funkcjonalności W KS-ZSA zostaje udostępniona funkcji centralnego zarządzania rolami. W samym programie jest możliwość tworzenia centralnej roli

Bardziej szczegółowo

ODCZYT PRZEZ ZŁĄCZE OBD

ODCZYT PRZEZ ZŁĄCZE OBD ODCZYT PRZEZ ZŁĄCZE OBD Zlokalizuj złącze diagnostyczne OBD pojazdu i podepnij właściwą wtyczkę dołączoną do zestawu New Genius: w menu głównym, wybierz WORK Vehicles Wybierz PRODUCENTA MODEL TYP Aby odnaleźć

Bardziej szczegółowo

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania Kraków 2010 Przeznaczenie programu. Program BKP_SQL powstał z myślą ułatwienia procesy archiwizacji baz danych MSSQL. Program umożliwia seryjne wykonanie

Bardziej szczegółowo

bla bla Guard podręcznik użytkownika

bla bla Guard podręcznik użytkownika bla bla Guard podręcznik użytkownika Guard Guard: podręcznik użytkownika data wydania środa, 03. wrzesień 2014 Version 1.0 Copyright 2006-2014 OPEN-XCHANGE Inc., Niniejszy dokument stanowi własność intelektualną

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa POWTÓRKA Z PIERWSZYCH ZAJĘĆ Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego

Bardziej szczegółowo

Data modyfikacji: 2013-08-14

Data modyfikacji: 2013-08-14 Data modyfikacji: 2013-08-14 Co zawiera ten dokument: Ten dokument przedstawia, w jaki sposób zainstalować program Kancelaris PLUS 4 za pomocą standardowego instalatora na serwerze MySQL w wersji 5.0 i

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

Spis treści MONITOR PRACY... 4

Spis treści MONITOR PRACY... 4 Co nowego Spis treści MONITOR PRACY...... 4 Konfiguracja plików... 5 Konfiguracja globalna... 6 Pliki... 6 Projekty... 6 Interfejs użytkownika... 7 Synchronizacja... 7 Typ serwera... 8 Test połączenia...

Bardziej szczegółowo

Instrukcja wprowadzania i aktualizacji danych dotyczących realizacji wypłat w Oprogramowaniu do obsługi Świadczeń SR/SW/FA

Instrukcja wprowadzania i aktualizacji danych dotyczących realizacji wypłat w Oprogramowaniu do obsługi Świadczeń SR/SW/FA Instrukcja wprowadzania i aktualizacji danych dotyczących realizacji wypłat w Oprogramowaniu do obsługi Świadczeń SR/SW/FA Dane dotyczące sposobu realizacji wypłat, w tym informację o numerze konta bankowego,

Bardziej szczegółowo

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe Fiery Remote Scan Program Fiery Remote Scan umożliwia zarządzanie skanowaniem na serwerze Fiery server i drukarce ze zdalnego komputera. Programu Fiery Remote Scan można użyć do wykonania następujących

Bardziej szczegółowo

Wprowadzenie do obsługi systemu IOS na przykładzie Routera

Wprowadzenie do obsługi systemu IOS na przykładzie Routera Wprowadzenie do obsługi systemu IOS na przykładzie Routera Tryby poleceń Użytkownika (user mode) Router> Przejście do trybu: Dostępny bezpośrednio po podłączeniu konsoli. Opuszczenie trybu: Polecenia:

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK.

Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK. FK - EDeklaracje Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK. W założeniu przyjęto, iż użytkownik

Bardziej szczegółowo

Michał (plucho) Wronkaplucho@gmail.com Subversion Wykorzystanie i administracja repozytorium

Michał (plucho) Wronkaplucho@gmail.com Subversion Wykorzystanie i administracja repozytorium Subversion Wykorzystanie i administracja repozytorium Michał (plucho) Wronka plucho@gmail.com 14.01.2006 Repozytorium Część I Odrobina Teorii Repozytorium Ogólna koncepcja Modele wersjonowania 1 Repozytorium

Bardziej szczegółowo

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo