C4 always sleepy

2Jun/093

Ruby on Rails – переходим на git.

Все большую популярность набирает git, но к сожалению существует очень мало русскоязычной документации и начинающему пользоваться этой VCS приходится потратить значительное количество времени чтобы разобраться в нюансах. Я с подачи Толи Михайлова решил разобраться с git'ом и по мере своих скромных сил постараюсь облегчить читателям блога изучение этой системы контроля версий.

Начну я пожалуй с самой типичной задачи - использование git для Ruby On Rails приложений.

Первым делом поставим сам git. Для пользователей linux/bsd-систем проблем с установкой быть не должно - обычно они умеют пользоваться менеджерами пакетов, в Mac os x можно воспользоваться macports, для windows есть msysgit и TortoiseGit.

Кстати, для пользователей MacOS X есть замечательное приложение GitX - рекомендую к использованию :)

Далее - создаем репозитарий локально или на сервере.

# cd /projectpath/RailsOnGit
# git init

В принципе, если у вас проект уже находится под версионным контролем в git - можно просто скопировать его на сервер (или на локальный ресурс). В качестве git-репозитария для open-source проектов можно использовать github.

Идентифицируем себя для всех проектов

$ git config --global user.name "Your Name"
$ git config --global user.email "your@email.ru"

В принципе мы можем настроить идентификацию для каждого проекта отдельно, отредактировав файл $PROJECT_NAME/.git/config и вписав в него соответствующие строки.

Создадим наш проект

$ rails RailsOnGit
$ cd RailsOnGit

и инициализируем локальный репозитарий, а заодно создадим database.yml.example для того, чтобы не хранить актуальный database.yml с продуктивными паролями в репозитарии.

$ git init
$ cp database.yml database.yml.example

Удалим все ненужное путём создания файла .gitignore

$ touch .gitignore

и добавлением в него строк

db/schema.rb
db/schema.sql
db/*.sqlite3
config/database.yml
log/*
tmp/**/*

Теперь добавим проект в локальный репозитарий (не забываем, что в git имеется как локальный, так и удаленный репозитарии) и сделаем в него коммит

$ git add .
$ git commit -m "Initial import"

Добавим удаленный репозитарий

$ git remote add remote_rep_name remote_rep:/path

и отправим в него наши изменения (основную ветку - master)

$ git remote push remote_rep master

Теперь можно начинать работу с проектом. Вы можете создать отдельную ветку (branch) и коммитить все свои изменения в нее. Например создадим branch с названием edge и сделаем его активным

$ git branch edge
$ git checkout edge

Продолжаем работать с edge как с обычным репозитарием - вносим изменения, коммитим итд. Посмотреть лог изменений можно с помощью

$ git log

Если вы хотите опубликовать изменения для общего доступа, то необходимо объединить ветки edge и master. Первым делом давайте проверим - не внес ли кто-нибудь изменения в центральный репозитарий

$ git checkout master
$ git pull remote_rep master

При необходимости вносим исправления и приступим к слиянию master и edge

$ git merge edge

на всякий случай еще раз проверим - не обновился ли центральный репозитарий

$ git pull remote_rep master

после чего - отправим туда наши изменения

$ git push remote_rep master

если есть желание - можно поставить тэг на наш коммит

$ git tag "v1.0"

Вы можете ставить плагины для вашего приложения как модули (аналог svn:externals)

$ git submodule add git://github.com/mendable/correct-format.git vendor/plugins/correct-format
$ git commit -am "add correct-format plugin"

Вот наверно и все для начала. При желании - можно расширить свои познания по ссылкам ниже.

Полезные ссылки:
Git community book
Git Guts
Why git is better than X
Git cheatsheat 1
Git cheatsheat 2
Git cheatsheat 3 (by github team)
Git+Capistrano tutorial

About Alec C4

No description. Please complete your profile.
Comments (3) Trackbacks (0)
  1. Еще одна полезная ссылка – правила хорошего тона при использовании git (http://evasive.ru/git_kung-fu.html)

  2. UPD: если в качестве IDE вы используете Netbeans, то имеет смысл добавить nbproject в .gitignore

  3. Хороший пост.
    Очень помогло.
    Респект!

    Илья Зыкин aka Killich


Leave a comment


Trackbacks are disabled.