background image

Administrowanie systemami komputerowymi 

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 

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 

background image

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 

background image

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 

background image

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.