Контроль версий для PHP Development

Я слышал много о преимуществах использования системы контроля версий и хотел бы попробовать ее. Я занимался внештатным веб-разработкой в ​​PHP за последние 2 года, два месяца назад я нанял еще двух программистов, чтобы помочь мне. В ближайшее время я найму еще одного человека. Мы поддерживаем 4 веб-сайта, все из которых являются моими, которые постоянно редактируются одним из нас. Я сам изучил PHP и никогда не работал ни в каких других фирмах. Поэтому я новичок в управлении версиями, модульном тестировании и всем.

В настоящее время у нас есть серверы разработки на наших рабочих станциях. Когда мы редактируем конкретный раздел сайта, мы загружаем код для этого конкретного раздела (например,/news/or/movies/or/wallpapers/) с производственного сервера на dev-сервер, локально меняем его и загружаем в производство сервер (без проверки/тестирования кода). Из-за этого наш сервер-разработчик всегда устарел от нашего prod-сервера. Иногда это также создает проблему, когда один из нас забывает загрузить последнюю копию из prod и перезаписывает последнее изменение. Я знаю, что это очень глупо, но в настоящее время наш prod-сервер является единственной копией, в которой есть все обновления и последние изменения.

Кто-нибудь может предложить, какая из них лучшая система контроля версий? Меня больше интересует распределенный контроль версий, поскольку у нас нет центральной резервной копии для всего нашего кода. Я прочитал о Mercurial и Git и обнаружил, что Mercurial используется в нескольких крупных проектах с открытым исходным кодом Mozilla, Sun, Symbian и т.д. Итак, какой из них, по-вашему, лучше для меня? Не только контроль версий, если есть какой-либо другой пакет, который я могу использовать для улучшения моей текущей настройки, пожалуйста, опишите это тоже:)

Ответ 1

Похоже, что Git может успешно выполнить ваши цели. Поскольку он распространяется, он отлично подходит для работы локально, поскольку вы можете выполнять большинство операций (фиксация, возврат, различие, исправление) без подключения к центральному серверу. Вы также можете избежать этого уродливого момента, когда кто-то подталкивает новый код к производству, пока кто-то работает над ним, а затем сложная задача объединения этих двух версий кода вместе (git предоставляет полезный инструмент для этого, называемый rebase).

Вы отметили некоторые крупные проекты, использующие Hg (Mercurial), но там есть довольно большие, используя Git, такие как Linux Kernel, X.org, Android и Debian.

Я использую Git для всех моих сайтов: он молниеносно, эффективен и прост в использовании.


Изменить: если вы хотите использовать Git, я бы рекомендовал сделать некоторые чтения, прежде чем прыгать прямо. Начало с неправильной ноги может иметь некоторые ужасные последствия позже. Если вы следуете Agile Workflow, вы можете проверить этот. Вот сайт, на котором я узнал большую часть своего ноу-хау Git.

Ответ 2

Вы можете использовать SVN, Git, Mercurial.

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

Ответ 3

Контроль версий - это невероятный инструмент, даже если вы работаете в одиночку, и когда вы работаете с кем-то другим, он незаменим. Я бы рекомендовал использовать git. Он очень быстрый, имеет действительно большой набор доступных инструментов и, конечно, github.com. Mercurial в основном так же хорош, как git, но он работает немного медленнее и не имеет github.

Зачем использовать git, пожалуйста, прочитайте http://whygitisbetterthanx.com/

Вот красиво выглядящий учебник по началу работы с git: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html

Ответ 4

Определенно Mercurial. Хотя вы можете использовать либо Git, либо SVN, Mercurial лучше по двум причинам:

  • Vs Git: хорошая интеграция с Windows.
  • Vs SVN: он распространяется.

Если вы не хотите запускать сервер Mercurial (что довольно легко), есть много доступных сервисов. Kiln + FogBugz - это ОТЛИЧНАЯ комбинация. Там также CodeBaseHQ (также поддерживает Git и SVN), Bitbucket и многие другие.

Прежде чем переходить на него, я настоятельно рекомендую вам прочитать как минимум учебник Joel Spolsky, но я настоятельно рекомендую вам также прочитать Mercurial: окончательное руководство.

Ответ 5

Прошу прощения, я не собирался начинать святую войну DVCS. Я попробую Git.

Ответ 6

Да, управление версиями поможет. Для начала я вижу две важные проблемы:

  • хостинг или самообслуживание?. Хотите разместить это самостоятельно на сервере или хотите, чтобы служба позаботилась об этом для вас? Есть причины идти в любом случае, но если вы не в том, чтобы управлять сервером, найдите размещенную опцию.

  • SVN или Git Есть и другие, но это лучшие конкуренты с открытым исходным кодом.

Плюсы и минусы (мое мнение):

SVN. Хорошие учебные пособия и довольно легко получить доступ к скорости. Требования к обучению небольшие (я немного поработал). SVN отлично работает с совместной командой, множеством проектов и т.д. С ограниченным количеством веток (вам может и не понадобится), он прочный. Существует множество возможностей интеграции с другими инструментами.

Git. Начало работы может быть немного грубее, чем с SVN. Некоторые из документов хороши, но многие из них предполагают достаточно глубокое понимание внутренних компонентов. Как только вы получите это, он обладает большой гибкостью, но я видел, что почти все, кто начал с ним, действительно спотыкаются, когда начинаете. Даже после работы с ним в течение нескольких месяцев люди обсуждают лучшие образцы для использования. Это действительно приятно для проектов с одним человеком (где вы хотите отслеживать историю) и для распределенных проектов, таких как GitHub. Я использую Git даже для небольших совместно расположенных команд, потому что мне нравится скорость и гибкость.

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

Надеюсь, что это поможет.