Я пытаюсь найти лучшую стратегию управления версиями своего рабочего процесса с Drupal. У меня есть несколько сайтов на установку, и я вполне уверен, у меня будет отдельный репозиторий для каждого веб-сайта. Насколько я знаю, достойные рассмотрения VCSs:
Я знаю, как они выдерживают сравнение друг с другом в целом, но хотят изучить их достоинства/недостатки для Drupal. Если Вы используете (или использовали), любой из них для Drupal:
Наша установка основана на Subversion. У нас есть небольшое (менее 4) количество людей, которые могут вносить изменения в сайт, и мы рассматривали DVCS, подобную Git, но пришли к выводу, что это избыточно.
Мы тестируем наш модуль с помощью SimpleTest перед фиксацией каких-либо изменений, и мы проводим новые тесты, если мы добавили функцию, которая не охвачена. На мой взгляд, этот этап тестирования перед фиксацией изменения гораздо важнее, чем то, какую программу управления версиями вы решите использовать в конце.
Еще одна важная вещь, которую вы должны помнить при работе с этими программами, - это то, что вам не следует просто выполнять регулярную проверку для обновления кода на вашем рабочем сайте. В результате останется скрытый .svn или другие каталоги, в которых могут содержаться пароли и другие конфиденциальные данные.
Вместо этого вы должны удалить модуль из каталога sites / all / modules и svn export
, чтобы получить чистую версию последнего кода.
Контроль версий - это одна из частей системы управления сайтами, не забудьте также отслеживать конфигурацию вашего сайта, хранящуюся в базе данных, путем регулярного резервного копирования самой базы данных (идеальным вариантом будет синхронизация с svn-коммитами), а также сохранение определения типов контента CCK за пределами вашего основного сайта, если можете. Вы можете импортировать и экспортировать типы контента и представления, чтобы они не застряли в вашей базе данных, если вам нужно перестроить конфигурацию вашего сайта.
Модуль Развертывание - это еще одна вещь, которую следует учитывать в зависимости от вашего рабочего процесса.
Здесь еще одна подрывная установка.
Базовая настройка:
Плюсы:
Минусы:
Заключение:
Пока вам нужно управлять только несколькими проектами / сайтами, это может быть неэффективным, и вам может быть лучше зафиксировать и поддерживать всю настройку (ядро, вклад и пользовательские вещи) вместе взятые. в одном филиале.
Но я могу заверить, что если вам придется управлять 10 ++ проектами параллельно (некоторые на 5.x, некоторые на 6.x, все на разных уровнях обновления и / или настройки, часто повторно используя одни и те же настройки), возможность сказать, какой код используется, где именно - огромное облегчение!
PS: Перечитывая мою проповедь, становится очевидным, что она на самом деле не отвечает на ваш вопрос о достоинствах различных VCS по сравнению друг с другом - извините за это, но, возможно, это все равно поможет;)
{{1 }}С тех пор, как я задал этот вопрос, произошла довольно неожиданная разработка на фронте Drupal: они вроде бы выбрали замену CVS ! Ссылаясь на массовую поддержку сообщества и потребность в распределенной системе контроля версий, они, вероятно, перейдут на git.
Раньше я рассматривал и пропускал git из-за худшей документации и кроссплатформенной поддержки (по сравнению с Bazaar и Mercurial), но с тех пор они значительно улучшились в обеих областях, и теперь кажется, что это действительно хороший вариант, независимо от ваших обстоятельств. .
Поэтому, если вы планируете внести свой вклад в «основные» или дополнительные модули или написать свой собственный модуль для сообщества, я настоятельно рекомендую использовать git, поскольку он будет иметь наибольшую поддержку и пользователей в сообществе Drupal в будущем. По этой причине это, вероятно, хороший выбор, даже если вы просто отслеживаете свои собственные сайты.
Я бы проголосовал за git, если у вас много членов команды. Хотя документация Git по-прежнему ужасна, бесплатная книга http://progit.org и http://gitcasts.com позволяют легко узнать, как использовать. Поскольку он настолько независим, он позволяет легко работать над проектами в любом месте и в любое время (по сравнению с SVN).
И я говорю это как парень с большим опытом работы с SVN, чем с мерзавцем. Разработка движется в сторону git и от центральных систем, таких как SVN.
Лично мне нравится то, насколько легко можно переключаться между различными тестовыми версиями вашего сайта (используя ветки).
У Drupal нет никаких специфических требований по сравнению с любым другим общим источником программного обеспечения.
Вот Git/Mercurial против Subversion:
. gitignore
позволяет указать все файлы, которые вы хотели бы игнорировать.svn
в каждой из ваших папок (что вынуждает использовать функцию медленного экспорта или пользовательский пакет для их удаления)git add . && git commit -m "My first commit"
Очевидно, что я предвзято отношусь к Git и Mercurial. Оба они более современные. Я лично предпочитаю Git, потому что:
Тем не менее, вы должны отметить, что Mercurial недавно привлек внимание Google (для Google Code) и он несколько проще в изучении. Вы можете изучить Git по http://progit.org/book/ (первых 3 глав должно быть достаточно).
Что касается структуры папок проекта, я предлагаю вам поискать другие ответы. Помните о своей цели (например: тестирование, быстрое развертывание на различных машинах...), и создайте резервную копию вашего хранилища. Это означает копирование папки проекта в удаленное место для Git/Mercurial и копирование репозитория сервера Subversion для Subversion. Кроме того, все они имеют крючки, позволяющие запускать тесты перед фиксацией, и интерфейсы для систем отслеживания ошибок.
И последнее, но не менее важное: если вы используете в своем проекте другие библиотеки под контролем версий, учтите это! Git и Mercurial позволяют отслеживать Subversion репозиторий (через git-svn
), а не наоборот. Mercurial также может отслеживать Git репозиторий, но не наоборот (пока). Отслеживание удаленного репозитория позволяет вам получить последнюю версию с журналом изменений удаленного исходного кода, который вы будете использовать. Это также позволяет вам изменять его.