Контроль версий PHP Web Project
У нас есть проект PHP, который мы хотели бы контролировать версии. В данный момент мы втроем работаем над версией разработки, которая находится во внешней папке, с которой связаны все наши Eclipse IDE, и, следовательно, не контролирует версию.
Как правильно и лучший способ контроля версий это?
У нас настроен SVN, но нам просто нужно найти хороший способ проверить и проверить, который позволяет нам тестировать на сервере разработки. Есть идеи?
Ответы
Ответ 1
Мы были в подобной ситуации, и вот что мы в итоге сделали:
- Настройте две ветки - ветвь релиза и развития.
- В ветке разработки включите привязку после фиксации, которая развертывает репозиторий на сервере dev, поэтому вы можете протестировать.
- После того, как вы будете готовы, вы объедините свои изменения в ветвь выпуска. Я также предлагаю положить туда пост-фиксацию для развертывания там.
Вы также можете настроить отдельные серверы разработки для каждого из членов команды на своих рабочих станциях. Я нахожу, что это немного ускоряет работу, хотя у вас есть еще некоторое время настройки.
Нам приходилось использовать один сервер разработки, потому что мы использовали запатентованную CMS и столкнулись с проблемами лицензирования. Таким образом, наш post-commit hook был простым FTP-ботом.
Ответ 2
Вот что мы делаем:
- У каждого разработчика есть виртуальная машина, настроенная как наш сервер интеграции
- Сервер интеграции имеет пространство для Trunk, каждого пользователя и несколько слотов для веток.
- Производственный сервер
- Крючки находятся в Subversion для отправки по электронной почте, когда совершаются коммиты.
В начале проекта пользователь создает ветку и проверяет ее на своей личной виртуальной машине, а также берет чистую копию базы данных. Они выполняют свою работу, совершая свои действия.
Как только они закончат все в своем личном пространстве, они заходят на сервер интеграции и проверяют свою ветку, запускают свои тесты и т.д. Когда все, что проходит их ветвь, объединяется в Trunk.
Trunk перестроен, полный набор тестов запущен, и если все хорошо, он получает крупную печать одобрения, помеченную в SVN и продвигается к производству в конце ночи.
Если в какой-то момент совершается фиксация кем-то другим, мы получаем электронное письмо и можем объединить эти изменения в наши отдельные ветки.
Ответ 3
Beanstalk имеет встроенные перехваты после фиксации для развертывания на этапах разработки, промежуточного и производственного серверов.
Ответ 4
Один из способов использования subversion для PHP-разработки - слишком настроить репозиторий для одного или всех трех разработчиков и использовать этот репозиторий, скорее, как инструмент синхронизации, чем настоящий контроль версий.
Вы могли бы,
-
Сделать репо
-
Добавьте всю структуру документа PHP вашего проекта
-
Оформить копию этого репо в нужное место на своем dev-сервере
-
Используйте svn-hook, который активируется при фиксации
Этот крючок будет автоматически обновлять содержимое dev-сервера, всякий раз, когда кто-либо из команды проверяет любой код.
Крюк находится в:
svn_dir/repo_name/крючки/после фиксации
И может выглядеть так:
/usr/bin/svn up/path_to/webroot --username svn_user --password svn_pass
Это обновит вашу рабочую копию на сервере dev до последней проверки.
Ответ 5
Как насчет чего-то распределенного? Вы можете начать, например, с Mercurial, попробовать разные рабочие процессы и посмотреть, какой из них подходит вам лучше всего.
Ответ 6
Каждый из них может запускать его локально или на своем собственном сервере dev (или даже тот же самый с другим портом...).
Ответ 7
Один из возможных способов (есть, вероятно, лучшие способы):
У каждого из вас должна быть своя собственная проверенная версия проекта.
Сделайте локальную копию сервера на своем компьютере и протестируйте его там в течение дня. Затем в конце каждого дня (или когда-либо) вы объединяете все, что вы готовы тестировать, и проверяете его на сервере dev и проверяете его.
Ответ 8
Другим инструментом, который вы можете использовать для сборки, является TeamCity, который является бесплатным для 20 конфигураций сборки (достаточно для большинства небольших компаний/проектов.) Таким образом, вы можете запускать свои тесты, а также строить расписания.