1.3 Управление версиями с Git
Теперь, когда у нас есть новое и рабочее приложение Rails, мы займем одну минуту для шага, который, хотя технически необязателен, видится многим разработчиками Rails как фактически обязательный, а именно, размещение исходного кода нашего приложения под управление версиями. Системы управления версиями позволяют нам отслеживать изменения кода нашего проекта, облегчают совместную работу, и откатывать любые непреднамеренные погрешности (такие как случайное удаление файлов). Грамотное использование системы управления версиями - необходимый навык для каждого разработчика программного обеспечения.
Есть много возможностей для управления версиями, но сообщество Rails в значительной степени стандартизировано под Git, - распределенную систему управления версиями, первоначально разработанную Linus Torvalds, для размещения ядра Linux. Git – большая тема, и мы лишь слегка коснемся ее в этой книге, но есть много хороших бесплатных онлайн ресурсов; я особенно рекомендую Pro Git автора Scott Chacon (Apress, 2009). Размещение Вашего исходного кода под управление версиями с Git строго рекомендуется, не только потому, что это почти универсальная практика в мире Rails, но также и потому что это позволит Вам открыть доступ к Вашему коду более легко (Раздел 1.3.4) и развертнуть Ваше приложение прямо здесь в первой главе (Раздел 1.4).
1.3.1 Установка и настройка
Первый шаг это установка Git, если Вы еще не выполнили шаги в Разделе 1.2.2.2. (Как отмечено в том разделе, это подразумевает следование инструкциям в Installing Git разделе Pro Git.)
Первоначальная настройка системы
После установки Git следует выполнить ряд разовых настроек. Это системные настройки, что означает, что их необходимо сделать лишь единожды:
$ git config --global user.name "Your Name" $ git config --global user.email [email protected]
Мне также нравится использовать co
вместо более громоздкой checkout
команды, мы можем сделать это следующим образом:
$ git config --global alias.co checkout
Этот учебник будет обычно использовать полную checkout
команду, которая работает на системах не имеющих co
конфигурации, но в реальной жизни я почти всегда использую git co
чтобы проверить (check out) проект.
В качестве финального шага установки, можно дополнительно установить редактор Git который будет использоваться для сообщений о фиксации (коммите). Если Вы используете графический редактор, такой как TextMate, gVim, или MacVim, Вы должны использовать флаг, чтобы быть уверенным, что редактор остается присоединенным к оболочке вместо того, чтобы отсоединиться сразу:18
$ git config --global core.editor "mate -w"
Замените "mate -w"
на "gvim -f"
для gVim или "mvim -f"
для MacVim.
Первоначальная настройка репозитария
Теперь мы подошли к нескольким шагам, которые будут необходимы каждый раз, когда Вы создаете новый репозитарий (что происходит единожды в этой книге, но, вероятно, когда-нибудь произойдет снова). Сначала перейдите в корневой каталог первого приложения и инициализируйте новый репозитарий:
$ git init Initialized empty Git repository in /Users/mhartl/rails_projects/first_app/.git/
Следующий шаг добавит файлы проекта в репозитарий. Есть незначительная сложность: Git по умолчанию отслеживает изменения всех файлов, но есть несколько файлов, которые мы не хотели бы отслеживать. Например, Rails создает log файлы, для записи поведения приложения; эти файлы часто изменяются, и мы не хотим, чтобы наша система управления версиями постоянно обновляла их. у Git есть простой механизм, чтобы игнорировать такие файлы: просто включите файл, названный .gitignore
в корневой каталог Rails с небольшим количеством правил, которые говорят Git какие файлы следует игнорировать.
Посмотрев снова в Таблицу 1.1, мы увидим, что команда rails
создает дефолтный .gitignore
файл в корневом каталоге Rails, похожий на показанный в Листинге 1.4.
.gitignore
создаваемый командой rails
..bundle db/*.sqlite3 log/*.log tmp/**/*
Листинг 1.4 заставляет Git игноририровать такие файлы как log файлы, Rails временные (tmp
) файлы, и базы данных SQLite. (Например, чтобы игнорировать log файлы, которые живут в log/
каталоге, мы используем log/*.log
, чтобы игнорировать все файлы, заканчивающиеся на .log
.) Большинство этих игнорируемых файлов изменяются часто и автоматически, так что включать их в управление версиями неудобно; кроме того, сотрудничая с другими файлами они могут вызвать конфликты.
.gitignore
файл в Листинге 1.4 пожалуй, достаточен для этого учебного руководства, но, в зависимости от Вашей системы, можно обнаружить Листинг 1.5 более удобным.19 Этот увеличенный .gitignore
обеспечивает игнорировние файлов документации Rails, файлов подкачки Vim и Emacs, и (для пользователей OS X) странные .DS_Store
каталоги, создаваемые приложением Mac Finder. Если Вы хотите использовать этот более широкий набор игнорируемых файлов, откройте .gitignore
в Вашем любимом текстовом редакторе и наполните его содержимым Листинга 1.5.
.gitignore
файл..bundle db/*.sqlite3* log/*.log *.log /tmp/ doc/ *.swp *~ .DS_Store