149 lines
7.6 KiB
Markdown
149 lines
7.6 KiB
Markdown
|
# Работа с Git
|
|||
|
|
|||
|
Kohana применяет [git](http://git-scm.com/) для контроля версий и [github](http://github.com/kohana) для совместной разработки. Данная статья покажет Вам как использовать git и github для создания простейшего приложения.
|
|||
|
|
|||
|
## Установка и настройка Git на Вашей машине
|
|||
|
|
|||
|
### Установка Git
|
|||
|
|
|||
|
- для OSX: [Git-OSX](http://code.google.com/p/git-osx-installer/)
|
|||
|
- для Windows: [Msygit](http://code.google.com/p/msysgit/)
|
|||
|
- Или загрузите git с [официального сайта](http://git-scm.com/) и установите его самостоятельно (подробности установки смотрите на сайт Git)
|
|||
|
|
|||
|
### Основные глобальные настройки
|
|||
|
|
|||
|
git config --global user.name "Your Name"
|
|||
|
git config --global user.email "youremail@website.com"
|
|||
|
|
|||
|
### Дополнительные, но предпочтимые настройки
|
|||
|
|
|||
|
Для лучшей визуализации команд и репозиторий в командной строке, используйте следующее:
|
|||
|
|
|||
|
git config --global color.diff auto
|
|||
|
git config --global color.status auto
|
|||
|
git config --global color.branch auto
|
|||
|
|
|||
|
### Настройка автозавершения
|
|||
|
|
|||
|
[!!] Следующие строки применимы только для OSX машин
|
|||
|
|
|||
|
Эти строки сделают всю грязную работу за вас и после этого Вы сможете спокойно работать с git-окружением, используя автозавершение команд:
|
|||
|
|
|||
|
cd /tmp
|
|||
|
git clone git://git.kernel.org/pub/scm/git/git.git
|
|||
|
cd git
|
|||
|
git checkout v`git --version | awk '{print $3}'`
|
|||
|
cp contrib/completion/git-completion.bash ~/.git-completion.bash
|
|||
|
cd ~
|
|||
|
rm -rf /tmp/git
|
|||
|
echo -e "source ~/.git-completion.bash" >> .profile
|
|||
|
|
|||
|
### Всегда используйте LF в окончаниях строк
|
|||
|
|
|||
|
Это соглашение, которое было принято Kohana сообществом. Выставьте эту настройку во имя Вашего Господа, особенно если хотите участвовать в kohana коммьюнити!
|
|||
|
|
|||
|
git config --global core.autocrlf input
|
|||
|
git config --global core.savecrlf true
|
|||
|
|
|||
|
[!!] Более подробную информацию об окончаниях строк читайте на [GitHub'е](http://help.github.com/dealing-with-lineendings/)
|
|||
|
|
|||
|
### Информация для размышления
|
|||
|
|
|||
|
- [Git скринкасты](http://www.gitcasts.com/)
|
|||
|
- [Git справочник](http://gitref.org/)
|
|||
|
- [Pro Git book](http://progit.org/book/)
|
|||
|
|
|||
|
## Основная структура
|
|||
|
|
|||
|
[!!] Предполагается, что Ваш web-сервер уже настроен, и Вы будете использовать адрес <http://localhost/gitorial/> для нового приложения.
|
|||
|
|
|||
|
Откройте консоль, перейдите в пустую директорию `gitorial` и выполните команду `git init`. Она создаст заготовку под новый git-репозиторий.
|
|||
|
|
|||
|
Далее, мы создадим подпроект ([submodule](http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html)) для директории `system`. Откройте <http://github.com/kohana/core> и скопируйте значение Clone URL:
|
|||
|
|
|||
|
![Github Clone URL](http://img.skitch.com/20091019-rud5mmqbf776jwua6hx9nm1n.png)
|
|||
|
|
|||
|
Используйте скопированный URL для создания подпроекта `system`:
|
|||
|
|
|||
|
git submodule add git://github.com/kohana/core.git system
|
|||
|
|
|||
|
[!!] Будет создана связь с текущей разрабатываемой версией следующего стабильного релиза. Эта версия должна практически всегда быть безопасна для использования, иметь тот же API, что в текущем стабильном релизе с исправленными ошибками.
|
|||
|
|
|||
|
Теперь добавьте остальные необходимые подпроекты. Например, если нужен модуль [Database](http://github.com/kohana/database):
|
|||
|
|
|||
|
git submodule add git://github.com/kohana/database.git modules/database
|
|||
|
|
|||
|
После добавления модули должны быть проиниализированы:
|
|||
|
|
|||
|
git submodule init
|
|||
|
|
|||
|
Теперь мы должны зафиксировать текущее состояние:
|
|||
|
|
|||
|
git commit -m 'Added initial submodules'
|
|||
|
|
|||
|
Следующий шаг - создание структуры папок для приложения. Вот необходимый минимум:
|
|||
|
|
|||
|
mkdir -p application/classes/{controller,model}
|
|||
|
mkdir -p application/{config,views}
|
|||
|
mkdir -m 0777 -p application/{cache,logs}
|
|||
|
|
|||
|
Если запустить команду `find application`, Вы должны увидеть такой список:
|
|||
|
|
|||
|
application
|
|||
|
application/cache
|
|||
|
application/config
|
|||
|
application/classes
|
|||
|
application/classes/controller
|
|||
|
application/classes/model
|
|||
|
application/logs
|
|||
|
application/views
|
|||
|
|
|||
|
Мы не хотим, чтобы git обрабатывал логи или файлы кэша, поэтому добавим файл `.gitignore` в соответствуюшие директории logs и cache. Теперь все нескрытые (non-hidden) файлы будут проигнорированы git'ом:
|
|||
|
|
|||
|
echo '[^.]*' > application/{logs,cache}/.gitignore
|
|||
|
|
|||
|
[!!] Git пропускает пустые папки, так что добавляя файл `.gitignore`, мы дополнительно заставляем git учитывать данную директорию, но не файлы внутри нее.
|
|||
|
|
|||
|
Теперь загружаем файлы `index.php` и `bootstrap.php`:
|
|||
|
|
|||
|
wget http://github.com/kohana/kohana/raw/master/index.php
|
|||
|
wget http://github.com/kohana/kohana/raw/master/application/bootstrap.php -O application/bootstrap.php
|
|||
|
|
|||
|
Фиксируем эти изменения:
|
|||
|
|
|||
|
git add application
|
|||
|
git commit -m 'Added initial directory structure'
|
|||
|
|
|||
|
Это все необходимые изменения. Теперь у Вас имеется приложение, использующее Git для контроля версий.
|
|||
|
|
|||
|
## Обновление подмодулей
|
|||
|
|
|||
|
Скорее всего, на определенном этапе Вы захотите обновить свои подпроекты. Чтобы обновить все модули до последних версий `HEAD`, введите:
|
|||
|
|
|||
|
git submodule foreach 'git checkout master && git pull origin master'
|
|||
|
|
|||
|
Для синхронизации подпроекта `system` выполните:
|
|||
|
|
|||
|
cd system
|
|||
|
git checkout master
|
|||
|
git pull
|
|||
|
cd ..
|
|||
|
git add system
|
|||
|
git commit -m 'Updated system directory'
|
|||
|
|
|||
|
Обновление отдельного модуля до определенной ревизии:
|
|||
|
|
|||
|
cd modules/database
|
|||
|
git fetch
|
|||
|
git checkout fbfdea919028b951c23c3d99d2bc1f5bbeda0c0b
|
|||
|
cd ../..
|
|||
|
git add database
|
|||
|
git commit -m 'Updated database module'
|
|||
|
|
|||
|
Заметьте, что можно так же загрузить коммит по официальной метке релиза. Например:
|
|||
|
|
|||
|
git checkout 3.0.7
|
|||
|
|
|||
|
Для того, чтобы увидеть все метки, просто запустите `git tag` без дополнительных аргументов.
|
|||
|
|
|||
|
Вот и всё!
|