Веб-проект PHP с контролем версий

У нас есть проект PHP, в котором мы хотели бы управлять версиями. Прямо сейчас трое из нас работают над разрабатываемой версией проекта, которая находится во внешней папке, с которой связаны все наши IDE Eclipse, и, следовательно, без контроля версий.

Каков правильный и лучший способ контроля версий?

У нас настроен SVN, но нам просто нужно найти хороший способ регистрации и выхода, который позволяет нам тестировать на сервере разработки. Любые идеи?

Ответов (8)

Решение

Мы были в похожей ситуации, и вот что мы в итоге сделали:

  • Создайте две ветви - ветку выпуска и ветку разработки.
  • Для ветки разработки включите обработчик после фиксации, который развертывает репозиторий на сервере разработки, чтобы вы могли протестировать.
  • Когда вы будете готовы, вы объедините свои изменения в ветку выпуска. Я также предлагаю добавить там хук после фиксации для развертывания.

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

Нам пришлось использовать один сервер разработки, потому что мы использовали проприетарную CMS и столкнулись с проблемами лицензирования. Таким образом, нашей обработкой после фиксации был простой FTP-бот.

Другой инструмент, который вы можете использовать для сборок, - это TeamCity, который бесплатен для 20 конфигураций сборки (достаточно для большинства небольших компаний / проектов). Таким образом, вы можете запускать свои тесты, а также планировать сборки.

Каждый из вас может запустить его локально или на своем собственном сервере разработки (или даже на том же сервере с другим портом ...).

Один из возможных способов (возможно, есть способы получше):

У каждого из вас должна быть собственная проверенная версия проекта.

Имейте локальную копию сервера на своем компьютере и тестируйте ее там в течение дня. Затем в конце каждого дня (или когда угодно) вы объединяете все, что готовы протестировать, проверяете это на сервере разработки и тестируете.

Один из способов использовать Subversion для разработки PHP - это слишком настроить репозиторий для одного или всех трех разработчиков и использовать этот репозиторий скорее как инструмент синхронизации, чем как настоящий контроль версий.

Ты мог бы,

  • Сделать репо

  • Добавьте всю структуру PHP-документа вашего проекта

  • Оформить копию этого репо в нужное место на вашем сервере разработки.

  • Используйте хук svn, который активируется при фиксации

Этот хук будет автоматически обновлять содержимое dev-сервера всякий раз, когда кто-либо в команде проверяет какой-либо код.

Крючок находится в:

svn_dir / repo_name / hooks / после фиксации

И могло выглядеть так:

/ usr / bin / svn up / path_to / webroot --username svn_user --password svn_pass

Это обновит вашу рабочую копию на сервере разработки до последней проверки.

Вот что мы делаем:

  • У каждого разработчика есть виртуальная машина, настроенная как наш сервер интеграции.
  • На сервере интеграции есть место для магистрали, каждого пользователя и несколько слотов для филиалов.
  • Производственный сервер
  • В Subversion есть ловушки для отправки по электронной почте при совершении коммитов.

В начале проекта пользователь создает ветку и проверяет ее на своей личной виртуальной машине, а также получает чистую копию базы данных. Они делают свою работу, отдаваясь ей на ходу.

Закончив все в своем личном пространстве, они входят на сервер интеграции и проверяют свою ветку, запускают свои тесты и т. Д. Когда все, что проходит их ветка, объединяется с Trunk.

Магистраль перестраивается, запускается полный набор тестов, и, если все в порядке, он получает большую печать одобрения, маркируется в SVN и в конце ночи переводится в производство.

Если в какой-то момент кем-то был сделан коммит, мы получаем электронное письмо и можем объединить эти изменения в наши отдельные ветки.

Beanstalk имеет встроенные перехватчики после фиксации для развертывания на серверах разработки, промежуточного и рабочего серверов.

А что насчет чего-то распределенного? Вы можете начать, например, с Mercurial, попробовать разные рабочие процессы и посмотреть, какой из них подходит вам лучше всего.