Objęcie kontrolą wersji Git nowej aplikacji Rails

Za każdym razem, gdy rozpoczynam pracę z projektem, muszę skonfigurować Git, aby repozytorium nie zawierało zbędnych plików.
Cała operacja jest wykonywana w kilku krokach, gdzie pierwszym z nich będzie stworzenie nowej aplikacji rails na naszym komputerze. Następnie musimy zaiinicjować kontrolę wersji.


$ rails my_app
$ cd my_app
$ git init
$ git status
...
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# README
# Rakefile
# app/
# config/
# db/
# doc/
# log/
# public/
# script/
# test/

Wydanie komendy git status pokazało nam całą strukturę aplikacji, która nie jest objęta kontrolą wersji. Zanim dodamy, powinniśmy wyłączyć kilka plików. Po pierwsze w repozytorium nie potrzebujemy plików dzienników („logów”), które znajdują się w folderze log. Aby je wyłączyć musimy stworzyć plik .gitignore i dodać linijkę log/*.log.

$ echo „log/*.log” >>.gitignore

Ponowne sprawdznie statusu pozwoli nam zauważyć zmianę, która zaszła w repozytorium.


$ git status

# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# .gitignore
# README
# Rakefile
# app/
# config/
# db/
# doc/
# public/
# script/
# test/
nothing added to commit but untracked files present (use "git add" to track)

Folder log zniknął z listy plików do dodania. Problem polega na tym, że klonująć potem repozytorium, otrzymamy jest bez tego folderu. Gdy uruchomimy aplikację, będą problemy z jej działaniem, ponieważ w tym folderze logi muszą być zapisywane.
Naszym zadaniem zatem jest ustawienie repozytorium tak, aby sam folder znajdował się w nim, a ignorowana powinna być jedynie jego zawartość. Cała powyższa sytuacja dzieję się tak dlatego, że system Git nie śledzi pustych folderów. Wyjściem z tej sytuacji jest trick, polegającym na dodaniu pliku .gitignore w folderze log. Folder nie będzie pusty, a jednocześnie dodany plik, nie będzie miał wpływu na nasz projekt.


$ touch log/.gitignore
$ git status

# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# .gitignore
# README
# Rakefile
# app/
# config/
# db/
# doc/
# log/
# public/
# script/
# test/
nothing added to commit but untracked files present (use "git add" to track)

Na powyższym listingu widać, że osiągnęliśmy zamierzony efekt. Podobny problem występuje w folderze tmp, którego zawartość również powinna być ignorowana, nie ignorując samgo folderu. Nauczeni powyższym doświadczeniem dodajemy plik .gitignore w tym katalogu, a w .gitignore znajdującym się w głównym folderze aplikacji dopisujemy tmp/**/*. Co oznacza ignorowanie wszystkich plików nawet w podfolderach.
Warto również zignorować dwa foldery z dokumentacją, które niepotrzebnie zajmują miejsce w repozytorium. Po dopisaniu dwóch linijek w głównym pliku .gitignore, powinien on zawierać taką treść:

log/*.log
tmp/**/*
doc/api
doc/app

Teraz możemy dodać wszystkie pliki i wykonać początkowe zatwierdzenie.

$ git add .
$ git commit -a -m „rozpoczęcie pracy”

W praktyce warto przenieść zewnętrzną bibliotekę rails, wewnątrz aplikacji, co pomoże w późniejszym uruchamianiu projektu na serwerze produkcyjnym. Aby to zrobić musimy wykonać komendę rake rails:freeze:gems co spowoduje przeniesienie całego frameworka, do folderu vendor/rails. Aplikacja przeszukuje ten folder w pierwszej kolejności i dopiero gdy go nie znajdzie, to szuka po zainstalowanych w systemie gemach.
Po wykonaniu powyższej komendy wystarczy zatwierdzić kolejną zmianę.

$ git add vendor
$ git commit -a -m „Dodanie frameworku do fodleru vendors”

Teraz nie pozostaje nic innego niż rozpoczęcie pracy nad projektem.

W sumie nie stoi nic na przeszkodzie, aby powyższy zaimplikować w Rails Template, ale o tym jak to się robi, napiszę już niedługo.

  • Wykop
  • Blip
  • Twitter
  • Facebook
  • DZone
  • Digg
  • Blinklist
  • Delicious
  • Evernote
  • LinkedIn
  • Google Bookmarks
  • Google Buzz
  • Google Reader
  • Share/Bookmark

Podobne wpisy:

Leave a Reply