SVN для веб-сервера разработки

Я проверил другие темы на эту тему, но ничего не отвечает на мой точный вопрос. В настоящее время я разрабатываю сайт, который обновляет данные на реальном веб-сервере (обычно фотографии) несколько раз в день, используя cron и некоторые внешние каналы данных. Кроме того, мы собираемся разрешить данные, отправленные пользователями. Теперь я хочу начать использовать svn, потому что проект становится достаточно большим, становится относительно сложным, и люди вносят изменения в наш код на живом сервере. Я установил svn для apache, и все поддомены, упомянутые ниже, настроены на одном сервере с использованием vhosts. Мы еще не начали использовать этот рабочий процесс, поэтому, если бы я мог получить совет, прежде чем мы начнем, я был бы очень признателен.

Хорошо, поэтому я создал репозиторий в субдомене (http://svn.website.com) и зарегистрировал его в субдомене разработки (http://dev.website.com). Я также планирую выпустить копию в живую среду (http://www.website.com). Идея состоит в том, чтобы сначала разработать поддомен dev, зафиксировать, когда он будет готов к запуску, а затем svn up в живую среду. Я прочитал плюсы и минусы между экспортом и обновлением, и обновление кажется лучшим для этого проекта, потому что мы часто вносим небольшие изменения / изменения кода, а экспорт кажется излишним. Я также установил соответствующие директивы, чтобы избежать доступа к каталогу .svn. Похоже, я на правильном пути? Что я должен знать?

Если следующее - хороший способ обо всем позаботиться, то мы можем перейти ко второму вопросу. Отправленные пользователем данные (в основном фотографии) загружаются в живую среду. Мне нужно как-то управлять этим между средой live и средой разработки, чтобы мы могли разрабатывать с использованием обновленных файлов, отправленных пользователями. Я действительно не знаю, как это лучше сделать ... Я чувствую, что есть серьезная ошибка, если я буду svn add и svn ci каждый раз при отправке файла. Как лучше всего этого добиться?


person Jeff    schedule 16.08.2011    source источник
comment
Зачем вам нужно выполнять разработку с использованием актуальных файлов, присланных пользователями? Будет ли достаточно репрезентативной выборки для целей разработки?   -  person Ed Heal    schedule 16.08.2011
comment
Данные не обязательно должны быть точно актуальными, однако мы будем взаимодействовать с базой данных, которая не находится под контролем версий, и база данных соответствует файлам на сервере.   -  person Jeff    schedule 16.08.2011


Ответы (1)


Похоже, ты растешь!

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

Что касается вашего рабочего процесса, я проходил почти идентичный процесс с большой распределенной командой, и он работал нормально. В зависимости от объема трафика, который вы получаете, я мог бы предложить другую стратегию развертывания в производственной среде. Когда вы будете готовы к новому продвижению по производству, клонируйте его в новый каталог, помеченный, возможно, датой или именами этапов, и создайте новый виртуальный хост для этого каталога. Таким образом, вы получите несколько преимуществ:

  1. Вы не рискуете получить доступ к вашему приложению и запросить определенный файл, который находится в процессе обновления.
  2. Вы можете легко вернуться к более раннему этапу, просто изменив активный рабочий виртуальный хост. Ошибки и проблемы исключаются из разработки независимо от того, насколько тщательно вы тестируете, и иногда они достаточно серьезны, чтобы просто вернуться к предыдущей кодовой базе. Конечно, изменения схемы усложнили бы это, но если мы просто говорим о коде, это должно избежать безумных откатов фиксации в 2 часа ночи.

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

Что касается обеспечения того, чтобы разработчики работали с самым последним набором файлов, вы действительно хотите это сделать? Если вы обрабатываете большое количество изображений, это займет много места на жестком диске. Конечно, с CDN или другим хранилищем данных нет ничего страшного, но хотите ли вы, чтобы вашим разработчикам приходилось загружать 1000 новых фотографий каждый раз, когда они загружаются?

Если вы твердо настроены на это, я бы предложил добавить в ваше приложение код для автоматического выполнения svn add, svn ci, когда svn status имеет определенный результат (т. Е. Это сценарий, который вы можете вызвать с помощью cron или каждый раз, когда добавляются новые медиа). Вы также можете проверить использование svn-хуков (у git они тоже есть), чтобы делать такие вещи, как уведомление об обновлении репозитория.

Надеюсь это поможет. Я настоятельно не рекомендую включать все файлы, загружаемые пользователями, если у вас нет для этого действительно, очень веской причины. Сложность, которую я собираюсь добавить, будет головной болью =)

Удачи и добро пожаловать в StackOverflow!

person Calvin Froedge    schedule 16.08.2011
comment
Оцените быстрый ответ. Прежде чем задать этот вопрос, я кратко рассмотрел использование git вместо svn. У меня нет опыта работы с git, и я подумал, что svn может быть достаточно. Кажется, что Git сейчас в моде, поэтому я рассмотрю его подробнее. Что касается повторной загрузки тысяч новых фотографий на каждый svn-файл, это не будет проблемой, как мы сейчас настроены. Мы собираемся проверить только одну рабочую копию в поддомене dev, и мы будем редактировать эти файлы напрямую (не проверяя несколько копий для каждого разработчика). - person Jeff; 16.08.2011
comment
Означает ли это, что вы занимаетесь разработкой прямо на сервере? - person Calvin Froedge; 16.08.2011
comment
Ага. Это действительно простой сайт, который начинался с нескольких файлов. Есть только 3 разработчика, и все мы используем редакторы или IDE со встроенным FTP. В настоящее время мы развиваемся в живой среде; вначале этого было достаточно, потому что у нас не было большого трафика и мы даже не много работали над сайтом, но сейчас он растет, и я хочу использовать некоторый контроль версий, сохраняя при этом возможность редактировать с использованием функций FTP наших IDE. Укажите поддомен dev и svn. - person Jeff; 16.08.2011
comment
Вам действительно нужно, чтобы ваши разработчики работали локально. Поверьте мне ... вы станете намного эффективнее. Кроме того, если у вас есть 3 человека, работающих в ветке разработки, как вы узнаете, кто что делает? Когда разработчики загружают код на свои локальные машины и выполняют push-уведомления, svn узнает, кто внес изменения. - person Calvin Froedge; 16.08.2011
comment
Хотя я по большей части согласен с вами, локальная работа может не подходить. Одна из основных причин заключается в том, что веб-сервер - это unix, а двое разработчиков используют окна. Хотя я знаю, что их можно настроить для работы очень похоже, разница между unix apache и mysql apache действительно вызывает некоторые проблемы. Я подумал о создании трех отдельных веток разработки на самом сервере. Однако я мог бы пойти по этому пути, но давайте пока предположим, что я буду создавать только одну ветку разработки, которая находится на веб-сервере. В конце концов, это будет намного лучше, чем наша текущая установка. - person Jeff; 16.08.2011
comment
Так вас беспокоит разница в настройках конфигурации? Используйте игнорирование svn и сохраните образец файла в репо. svnbook.red-bean.com/en/1.1/ch07s02.html Запускать apache в Windows очень просто ... wamp, mamp, xampp, что угодно. И вы можете использовать cygwin для утилит командной строки. - person Calvin Froedge; 16.08.2011
comment
Среди прочего. Я знаю о svn ignore и wamp / cygwin, и я знаю, что локальная копия - лучшая практика для этого. К сожалению, пока придется отложить локальное редактирование. Я определенно ценю то, что вы меня подталкиваете, и воспользуюсь вашим советом, когда мы в конечном итоге пойдем в этом направлении :) - person Jeff; 16.08.2011