Ś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 2. Fusco J., Linux. Niezbędnik programisty, Helion, Gliwice 2006, 3. A. Diller, LATEX wiersz po wierszu, Helion, 2001 4. C. Newham, B. Rosenblatt, bash. Wprowadzenie, Helion, 2006 5. J. E. F. Friedl, Wyrażenia regularne, Helion, 2001 6. R. L. Schwartz, T. Christiansen, Perl. Wprowadzenie, Helion, 2000 7. M. Lutz, Python. Wprowadzenie, Helion, 2009
Środowisko programisty 3/35 Plan wykładów Zagadnienia omawiane na wykładzie Kontrola wersji oprogramowania Skrypty (bash, Python) Wyrażenia regularne Automatyzacja budowy oprogramowania Narzędzia wspomagające poprawianie wydajności oprogramowania Narzędzia wspomagające diagnozowanie oprogramowania Formaty dokumentacji
Środowisko programisty 4/35 Informacje ogólne Kontakt: mail: robert.dyja@icis.pcz.pl strona: http://icis.pcz.pl/ dyja konsultacje: poniedziałek 15:00 16:00, czwartek 12:00 14:00 Obecność na wykładach nie jest wymagana Przedmiot kończy się egzaminem w formie pisemnej
Środowisko programisty 5/35 System Subversion Centralny serwer Pracownicy komunikują się za jego pośrednictwem Rysunek : System Subversion
Środowisko programisty 6/35 Lokalna przestrzeń robocza Lokalna (prywatna) kopia wybranych elementów repozytorium Zmiany wprowadzane lokalnie synchronizowane na żądanie Rysunek : Lokalna przestrzeń robocza
Środowisko programisty 7/35 Początkowe pobieranie artefaktów pobieranie artefaktów (ang. checkout) Rysunek : Początkowe pobieranie artefaktów svn checkout file:///sciezka/do/repozytorium projekt
Środowisko programisty 8/35 Cykl aktualizacji/wysyłania zmian aktualizacja/wysyłanie zmian (ang. update/commit) Rysunek : Cykl aktualizacji/wysyłania zmian svn update svn commit plik -m "komentarz"
Środowisko programisty 9/35 Linia rozwoju artefaktu Rysunek : Linia rozwoju artefaktu
Równoległe uaktualnianie artefaktów Środowisko programisty 10/35
Równoległe uaktualnianie artefaktów Środowisko programisty 11/35
Równoległe uaktualnianie artefaktów Środowisko programisty 12/35
Równoległe uaktualnianie artefaktów Środowisko programisty 13/35
Równoległe uaktualnianie artefaktów Środowisko programisty 14/35
Równoległe uaktualnianie artefaktów Środowisko programisty 15/35
Równoległe uaktualnianie artefaktów Środowisko programisty 16/35
Środowisko programisty 17/35 Równoległe uaktualnianie artefaktów Jak SVN wykonuje komendę update zmiany po stronie lokalnej przestrzeni roboczej zmiany w repozytorium
Środowisko programisty 18/35 Równoległe uaktualnianie artefaktów Zmiany lokalne i z repozytorium nie nakładają się $ svn update U INSTALL G README U bar.c Updated to revision 46.
Środowisko programisty 19/35 Równoległe uaktualnianie artefaktów Zmiany lokalne i z repozytorium nakładają się $ svn update U INSTALL G README C bar.c Updated to revision 46.
Środowisko programisty 20/35 Rozwiązywanie konfliktu i n t main ( i n t argc, char argv ) { i f ( n e r r == 0) gencode ( ) ; e l s e f p r i n t f ( s t d e r r, "No code generated" ) ; <<<<<<<. mine e x i t ( n e r r == 0? EXIT SUCCESS : EXIT FAILURE ) ; ======= e x i t (!! n e r r ) ; >>>>>>>. r6 } po modyfikacji svn resolved plik
Środowisko programisty 21/35 Nadawanie etykiet Pozwala posługiwać się nazwami, zamiast numerami wersji oznaczanie wydań (np.: R 1.0, R 2.0) oznaczanie kodu w przypadku większych zmian svn copy -r nr file:///sciezka/do/repo/trunk file:///sciezka/do/repo/tags/r1.0
Środowisko programisty 22/35 Rozgałęzianie/łączenie gałęzi Rozdzielenie pracy nad pewną częścią kodu: rozwój nowych funkcji/poprawki do starej wersji dłuższe eksperymenty na kodzie svn copy file:///sciezka/do/repo/trunk file:///sciezka/do/repo/branches/my-calc-branch svn commit file:///sciezka/do/repo/branches/my-calc-branch my-calc-branch
Struktura plików projektu Środowisko programisty 23/35
Tworzenie gałęzi projektu Środowisko programisty 24/35
Środowisko programisty 25/35 Wybrane wzorce zarządzania konfiguracją Główna linia Linia wydania Gałąź przed wydaniem Gałęzie dla zadań
Środowisko programisty 26/35 Główna linia Zamiast tego: utrzymuj gałąź bazową
Środowisko programisty 27/35 Linia wydania Linia reprezentująca logiczne grupowanie dostarczonej funkcjonalności
Środowisko programisty 28/35 Gałąź przed wydaniem Część osób wcześniej skończy pracę nad wersją Aby ich nie blokować do czasu wydania, stwórz gałąź przed wydaniem
Środowisko programisty 29/35 Gałęzie dla zadań Wiele zmian wprowadzanych w ramach dłuższego zadania może tymczasowo naruszyć spójność kodu Dla większych zadań twórz osobne gałęzie
Środowisko programisty 30/35 Przydatne komendy Przeglądanie zmian svn log plik Przedstawienie stanu kopii roboczej svn status Wyświetlenie zmian dokonanych na kopii roboczej svn diff
Środowisko programisty 31/35 Przydatne komendy Wycofywanie zmian svn revert Dodawanie (usuwanie, kopiowanie, przenoszenie) nowego pliku do repozytorium svn add plik svn delete plik svn copy plik svn move plik Wyświetlanie pomocy svn help temat
Środowisko programisty 32/35 Przydatne komendy Tworzenie repozytorium svn import katalog/z/projektem/ file:///adres/repozytorium Pobranie plików z repozytorium bez danych administracyjnych svn export file:///adres/repozytorium Sposoby podawania adresu file:/// http://, https:// svn:// svn+ssh://
Środowisko programisty 33/35 Podsumowanie Odpowiednie zarządzanie konfiguracją jest niezbędne do efektywnej pracy zespołowej Komendy systemu SVN (checkout, update, commit) rozwiązywanie konfliktów Wybrane wzorce zarządzania konfiguracją
Środowisko programisty 34/35 Podsumowanie Typowy cykl pracy z SVN Aktualizacja kopii roboczej svn update Modyfikacje kopii roboczej svn add svn delete svn copy svn move Przeglądanie dokonanych zmian svn status svn diff Cofanie dokonanych zmian svn revert Rozwiązywanie konfliktów update svn resolve Przesłanie zmian do repozytorium svn commit
Środowisko programisty 35/35 W wykładzie wykorzystano materiały Zarządzanie konfiguracją oprogramowania, Łukasz Olek, http://wazniak.mimuw.edu.pl/index.php?title=io-9-wyk-toc http://svnbook.red-bean.com/