Administrowanie systemami komputerowymi
1
Temat:
SVN, Git i Redmine Zadania:
Data:
Autor:
Paweł Kopeć
1 2 3 4 5 6 7 8 9 10 11
12 13 14 15
13.10.2014
Autor:
Adrian Makuch
e e e e e e m e m
e
e
e
e
m m 14:30-16:45
Zadanie 1. Podstawowe operacje na repozytorium
Zadanie polegało na utworzeniu na komputerze nowego repozytorium SVN za pomocą
komendy:
svnadmin create /lab-svn/svn
Polecenie tworzy standardowy drzewo repozytorium. Subversion pozwala na sprawne operowanie
na katalogach w repozytorium. Korzysta z takich samych poleceń co Linux, poprzedzonych
poleceniem svn, np. tworzenie folderu:
svn mkdir /sciezka_do_repo/nowy_folder
Zadanie 2. Manipulacja strukturą folderów
W tym zadaniu należało zapoznać się z możliwościami svn w operacjach na katalogach.
Należy pamiętać, że większość z operacji wykonywanych z użyciem komendy svn wymaga
dodania komentarza. Jest to potrzebne, aby w późniejszym czasie można było łatwo dowiedzieć się
co dana operacja miała za zadanie zrobić.
Zadanie 3. Importowanie istniejącego projektu
Ć
wiczenie polegało na zaimportowaniu do repozytorium, wcześniej utworzonego projektu.
Zadanie 4. Tworzenie kopii roboczej plików
Zadanie pozwoliło zapoznać się z jedną z głównych komend, czyli checkout. Pobiera ona z
repozytorium całą strukturę katalogów i plików i zapisuje ją w wybranym przez nas katalogu. Od
tej pory, prace nad plikami, które pobraliśmy są monitorowane przez system kontroli wersji.
Zadanie 5. Dodawanie plików i zatwierdzanie zmian
Zadanie pozwoliło nam zauważyć, że samo utworzenie pliku w katalogu który zawiera
kopię roboczą repozytorium, nie gwarantuje, że ten plik będzie brany pod uwagę przy następnym
commicie. Aby tak się stało, musi on być przyłączony do repozytorium za pomocą polecenia:
svn add nazwa_pliku
Jeżeli nie jesteśmy pewni, czy nowo utworzone pliki objęte są kontrolą wersji, wystarczy że
wydamy polecenie svn status, które zwróci nam listę plików w których zaszły zmiany, oraz te, które
znajdują się w folderze z repozytorium, ale nie są do niego dodane.
Zadanie 6. Usuwanie i zmiana nazw plików
Zadanie polegało na usunięciu oraz zmianie nazwy plików w repozytorium oraz zauważeniu,
ż
e zmiany, które dokonaliśmy, zostały od razu zacommitowane.
Zadanie 7. Wersjonowanie
Każdy z commitów otrzymuje kolejny numer wersji. Dzięki temu, korzystając z polecenia
checkout z opcją –r, możemy podać numer rewizji, którą chcemy pobrać na swój komputer.
Pobrane zostają jednak tylko te pliki, które różnią się pomiędzy wersjami.
Zadanie 8. Konflikty
Głównym powodem używania systemów kontroli wersji jest edytowanie tego samego pliku
przez wiele osób jednocześnie. Zachodzi wtedy potrzeba scalenia wszystkich kopii w jedną.
Subversion daje nam możliwość automatycznego scalenia plików, które posiadają różne dane, a
jeżeli występuje konflikt(w dwóch plikach zmienione są te same dane), użytkownikowi pozostawia
decyzję który plik ma być zapisany, lub pozwala mu ręcznie edytować plik.
Zadanie 9. Gałęzie
Zadanie polegało na podziale dotychczas tworzonego projektu na gałęzie. Gałąź główna
zawiera najważniejsze pliki projektu, a każdy rozwijany element, posiada swoją odrębną gałąź.
Dzięki temu możemy osobno zająć się scalaniem każdej z gałęzi z osobna, a dopiero potem scalić
cały projekt. Gałąź główna przetrzymywana jest w folderze trunk, natomiast gałęzie poboczne w
folderze branches. Do scalenia gałęzi z główna wykorzystywane jest polecenie
svn merge ^/branches/galaz
gdzie ^ oznacza ścieżkę do repozytorium.
Zadanie 10. Zdalne repozytorium
Ć
wiczenie polegało na pobraniu repozytorium na inny komputer korzystając z połączenia
svn+ssh. Zasady uwierzytelniania są tu dokładnie takie same jak przy korzystaniu z czystego ssh.
Zadanie 11. Zrzucenie i ładowanie repozytorium
Zadanie polegało na wykonaniu kopii zapasowej repozytorium. Nie należy jednak kopiować
wszystkich katalogów z repozytorium, lecz użyć polecenia:
svnadmin dump /lab-svn/svn > /tmp/mydumpfile.db
Dzięki temu w jednym pliku będziemy mieć całe repozytorium.
Zadanie 12 Wstęp do systemu git
W tym zadaniu mieliśmy się zapoznać z podstawowymi poleceniami wykorzystywanymi w
programie git. Jest to program bardzo podobny do programu svn, jednak wymaga od nas, abyśmy
ustawili swoją nazwę użytkownika oraz adres email, aby móc być identyfikowanym w systemie.
Zadanie 13 Git: podstawowe operacje
Zadanie polegało na zapoznaniu się z schematem pracy podczas korzystania z git.
Najważniejszą rzeczą o jakiej trzeba pamiętać podczas pracy z gitem jest to, że git, poleceniem
commit nie wysyła domyślnie plików. Każdy plik należy dodać poleceniem git add. W loga-ch gita
możemy także zobaczyć, że każdy commit nie ma przydzielanego kolejnego numeru(jak w
przypadku svn), lecz jest to ciąg identyfikacyjny wyliczany za pomocą SHA1.
Zadanie 14 Git: synchronizacja repozytoriów
W tym zadaniu nauczyliśmy się pracy z gitem na różnych stanowiskach. Po skopiowaniu
repozytorium na inną maszynę i wykonaniu w nim jakiś zmian, polecenie git commit zapisało te
zmiany, lecz tylko w naszym lokalnym repozytorium. Aby zapisały się one na głównym
repozytorium, należy te zmiany „wypchnąć” poleceniem git push. W przypadku kiedy dokonaliśmy
zmiany w pliku, a ktoś inny w międzyczasie także dokonywał zmian w tym samym pliku, git prosi
nas abyśmy uzgodnili które zmiany mają zostać.
Zadanie 15 Redmine
Redmine jest rozbudowanym narzędziem służącym do zarządzania projektem
informatycznym. Do korzystania z niego, potrzebne jest posiadanie Ruby on rails. Dzięki redmine
możemy m.in.:
o
Utrzymywać kontrolę nad wersjami plików projektu(wspiera SVN,CVS,git).
o
Przydzielać różne poziomy dostępu do plików projektu pracownikom.
o
Przydzielać pracownikom zadania.
o
Tworzyć kalendarze projektowe(diagram Gantta).
o
Tworzyć raporty z postępów w pracach nad projektem.
Instrukcja przedstawia instalację redmine na czystym systemie centos 6.5.W niektórych
przypadkach wymagane będzie uruchomienie polecenia jako sudo(dot. głównie poleceń yum oraz
service).:
1.
Utwórz katalog dla redmine i pobierz kod źródłowy:
mkdir ~/redmine
cd ~/redmine
svn co http://svn.redmine.org/redmine/branches/2.5-stable redmine-2.5
2.
Zainstaluj usługę mysql, załóż bazę danych dla redmine oraz skonfiguruj redmine do
korzystania z bazy danych:
yum install mysql-server mysql php-mysql
service mysqld start
mysql –u root
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER ‘redmine’@’localhost’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON redmine.* TO ‘redmine’@’localhost’;
exit
cp ~/redmine/redmine-2.5/config/database.yml.example ~/redmine/redmine-
2.5/config/database.yml
Edytuj plik database.yml podmieniając odpowiednie pola na następujące:
production
:
adapter
:
mysql
database
:
redmine
host
:
localhost
username
:
redmine
password
:
my_password
3.
Przygotuj system do instalacji aplikacji bundler:
yum install ruby
yum install gcc g++ make automake autoconf curl-devel openssl-devel zlib-
devel httpd-devel apr-devel apr-util-devel
yum install ruby-devel
yum install mysql-devel
yum install ImageMagick-devel
yum install rubygems
4.
Zainstaluj bundler
gem install bundler
gem install json –v ‘1.8.1’
gem install mysql –v ‘2.8.1’
gem install rmagick –v ‘2.13.3’
bundle install –without development test
Jeżeli podczas wykonywania ostatniego polecenia pojawią się problemy(informacja
o braku jakiegoś pakietu, należy wykonać polecenie
gem install nazwa_pakietu –v ‘wersja’
po czym powtórzyć bundle install
5.
Przygotuj klucz sesji oraz bazę danych
cd ~/redmine/redmine-2.5
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
6.
Zapewnij dostęp użytkownikowi do odpowiednich plików
cd ~/redmine/redmine-2.5
mkdir –p tmp/pdf public/plugin_assets
chown –R user_name:user_name files log tmp public/plugin_assets
chmod –R 755 files log tmp public/plugin_assets
7.
Uruchom usługę poleceniem:
ruby ~/redmine/redmine-2.5/script/rails server webrick –e production
I sprawdź w przeglądarce jej działanie wpisując adres(login i hasło: admin)
http://localhost:3000
Uwagi
•
W zadaniu 6 podane jest polecenie do zmiany nazwy pliku:
$ svn rename file:///doc/index.html file:///doc/doc.html -m “rename”
powinno ono jednak wyglądać tak:
file:///lab-svn/svn/project/doc/index.html file:///doc/doc.html -m “rename”
•
W zadaniu 14, po nieudanej próbie wypchnięcia do oryginalnego repozytorium, pliku
drugi.txt utworzonego w lab-git2 jesteśmy proszeni o wykonanie zmian w oryginalnym
repozytorium(git-lab):
$ echo „aa” >> plik-mv.txt
<- tutaj występuje błąd
$ git add plik-mv.txt
<- a więc tutaj też
$ git commit –m „dodano aa"
A następnie pobranie tej zmiany w drugim repozytorium(git-lab2). Dalszy opis ćwiczenia
mówi że „Zmiany powinny zostać automatycznie scalone”.
Ż
adne zmiany jednak nie są scalane. Na git-lab2 zmienialiśmy plik drugi.txt, a na git-lab
zmienialiśmy plik plik-mv.txt. aby w tym ćwiczeniu można było zauważyć to scalenie,
zmiany w oryginalnym repozytorium także należy wykonać na pliku drugi.txt.