2020-12-09
Wszystkie zadania są reprezentowane przez pliki ex-*.cast
, które są nagraniami wykonanymi przy pomocy programu asciinema
.
Zapisy te mogą zostać odtworzone przy pomocy komendy
asciinema play <recording>.cast
przy zainstalowanym programie asciinema
w systemie.
Studenci zostali podzieleni na cztery grupy ze względu na dwie ostatnie cyfry numeru indeksu i uzyskali dostęp do odpowiednich repozytoriów.
Każda grupa ma wspólnie pracować nad stworzeniem aplikacji
app_1
w swoim repozytorium. W ramach każdej grupy każdy student ma dorobić swój własny moduł dodający jakąś funkcjonalność, wykonując następujące czynności:
- utworzyć swoją kopię roboczą projektu,
- przejrzeć plik README i pozostałe pliki, aby zorientować się w zasadach organizacji projektu i nazywania plików i katalogów,
- utworzyć własne rozgałęzienie w
app1/branches
, w którym zaimplementuje swój własny podprogram,- zsynchronizować swoją gałąź z
trunk
-iem (być może kilka razy)- zreintegrować swoją gałąź z
trunk
-iem- usunąć niepotrzebną gałąź po reintegracji
- utworzyć
tag
-a z poprawną wersją projektu zawierającą własny podprogram.- w prezentacji pokazać, że program z utworzonego
tag
-a kompiluje się i wykonuje poprawnie.Wykonując polecenia należy je nagrywać z terminala wraz z wyświetlanymi komunikatami do sprawozdań
asciinema
.Można utworzyć więcej niż jedno nagranie, ale ich nazwy powinny zawierać numery wskazujące, w jakiej kolejności należy je wyświetlać. Ostatnie nagranie zakończyć wyświetleniem
svn log -v …
dla utworzonego przez siebietag
-a. Utworzone prezentacje można skleić w jedną, nagrywając wykonanie skryptu, który odtwarza je w kolejności. Przykład można obejrzeć, wykonując polecenie:svn cat https://repo.cs.pwr.edu.pl/info/asciinema/6_sklejanie_prezentacji.cast | asciinema play -i 0.1 -
W każdym repozytorium, swoje zadanie wykonał „Sztuczny Student” o numerze indeksu
999
. Nie uzyskał jeszcze zaliczenia bo zapomniał usunąć swoją gałąź i nie przygotował sprawozdania. Pozostałe czynności wykonał poprawnie i można prześledzić jego działania (poleceniamisvn log …
,svn diff …
).Uwaga: Zadania 1. nie warto odkładać na ostatnią chwilę, gdyż wtedy jest najwięcej konfliktów.
asciinema
Odpowiednie nagrania wykonane przy pomocy programu asciinema
znajdują się w plikach ex-1.1.cast
oraz ex-1.2.cast
.
bash . ../repo.sh
żeby pod zmienną $RP
znajdował się adres główny do wszystkich repozytoriów z tego kursu.bash svn co $RP/p_75
app_1/trunk
i odczytujemy plik README
.program.h
, main.c
, program_usage.c
oraz podprogramy innych studentów s*_podprogram.c
.bash svn copy $RP/p_75/app_1/trunk $RP/p_75/app_1/branches/250075
s250075_podprogram.c
z nowym programem (a dokładniej funkcją w języku C).program.h
, makefile
oraz main.c
, żeby nasz program „podpiąć” pod główny program, który uruchamia poszczególne podprogramy.bash svn commit -m 'added a new subprogram that prints a given real number in its scientific notation'
żeby zapisać nasze zmiany w aktualnej gałęzi.README
dodając opis naszego podprogramu i też commit
ujemy zmiany.^/app_1/trunk
.bash svn merge ^/app_1/branches/250075
reintegrujemy zmiany z gałęzi 250075
do trunk
a.bash svn rm ^/app_1/branches/250075
usuwamy niepotrzebną już gałąź.tag
a dla naszego stanu całego programu: bash svn copy ^/app_1/trunk ^/app_1/tags/v_250075
ex-1.cast
pokazuje, że wersja programu dostępna w katalogu ^/app_1/tags/v_250075
kompiluje się i działa jak należy.Do zadań 2. i 3. używamy tutaj skryptu pomocniczego svn-ls-all.sh
, który jest niedalekim kuzynem skryptu z rozwiązania zadania 1. z listy 1. Wypisuje on wszystkie pliki w danym pod-katalogu danego repozytorium dla danej rewizji.
Napisz skrypt, który jako argument otrzymuje:
Nr rewizji w repozytorium SVN URL do katalogu w repozytorium SVN (korzenia poddrzewa katalogów, zawierającego pliki tekstowe), który dla wszystkich słów występujących w plikach w danym poddrzewie katalogów w danej rewizji, drukuje statystyki, ile razy dane słowo wystąpiło we wszystkich tych plikach. (Odpowiednik zadania 2 z listy 1.) Niech skrypt będzie w pliku:
./l3z2.bash
. W prezentacji umieść wykonania poleceń:./l3z2.bash 15 https://repo.cs.pwr.edu.pl/info/SP-20-21/l3/a/ ./l3z2.bash 18 https://repo.cs.pwr.edu.pl/info/SP-20-21/l3/a/
Plik wykonywalny l3z2.bash
jest rozwiązaniem tego zadania. Jego działanie można zobaczyć na nagraniu ex-2.cast
.
Skrypt, wywoływany jak w zadaniu 2, który dla każdego słowa pojawiającego się w plikach danego poddrzewa katalogów w danej rewizji, drukuje liczbę plików, w których to słowo występuje. (Odpowiednik zadania 3 z listy 1.) Niech skrypt będzie w pliku:
./l3z3.bash
. W prezentacji umieść wykonania poleceń:./l3z3.bash 15 https://repo.cs.pwr.edu.pl/info/SP-20-21/l3/a/ ./l3z3.bash 18 https://repo.cs.pwr.edu.pl/info/SP-20-21/l3/a/
Plik wykonywalny l3z3.bash
jest rozwiązaniem tego zadania. Jego działanie można zobaczyć na nagraniu ex-3.cast
.