Какой лучший способ использовать SVN для управления версиями PHP-сайта?

Я всегда просто удалял файлы FTP с сайтов, редактировал их и добавлял их обратно при создании сайтов, но считаю, что нужно учиться делать что-то правильно.

Я только что отправил все на SVN-репо и попробовал sshing на сервере и проверил тегированную сборку, а также обновил ее с помощью коммутатора.

Все хорошо, но это намного медленнее, чем мой текущий процесс.

Какой лучший способ установить что-то подобное? Большая часть моего времени - это просто исправления ошибок или небольшие изменения, а не большие перезаписи, поэтому я часто обновляю вещи.

Ответ 1

Вам не обязательно использовать SVN для развертывания файлов на сервере. Продолжайте использовать FTP для этого и просто используйте SVN для истории изменений.

Ответ 2

Для быстрых обновлений я запускаю svn update с сервера.

Иногда для действительно очень быстрых обновлений я редактирую файлы с помощью vim и фиксирую их с сервера.

Это не очень правильно, но быстро и надежно.

Ответ 3

Вы должны посмотреть на установку rsync для загрузки изменений на ваш сервер.

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

Это избавляет вас от необходимости запоминать каждый файл, который вы изменили, и вручную отбирать его на FTP, или снова загружать всю локальную копию на сервер (и оставлять FTP для сравнения).

Rsync также позволяет вам исключать файлы/папку (например,.svn/folders) при синхронизации между серверами.

Ответ 4

Я бы рекомендовал вам использовать Subversion для отслеживания всех изменений, даже исправлений ошибок. Если вы хотите развернуть на ваш производственный сервер, вы должны использовать SSH и вызвать svn update. Этот процесс можно автоматизировать с помощью Capistrano, что означает, что вы можете сидеть в своем локальном поле и звонить cap deploy - Capistrano будет SSH на вашем сервере и выполните обновление Subversion. Экономит много утомительного ручного труда.

Ответ 5

Если вы хотите сделать это правильно, вам обязательно нужно изучить локальный репозиторий SVN. Я также настоятельно рекомендую настроить сервер непрерывной интеграции (CI), такой как круиз-контроль, который автоматически запускает любые тесты против вашего кода PHP, когда вы заходите на svn. Ваш CI-сервер также может использоваться для публикации ваших файлов через FTP на ваш хост одним нажатием кнопки, после того, как он прошел тесты.

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

Ответ 6

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

Я также сохраняю папку в этом репозитории, которая содержит файлы sql любых изменений, внесенных мной в структуру базы данных, помеченных в соответствии с их номером ревизии. Например, когда я беру Revision 74 и у него есть несколько дополнительных столбцов в одной из таблиц, включенных в коммит будет dbupdates/rev74.sql. Таким образом, после моего обновления svn, мне просто нужно запустить свой sql файл (mysql db_name -p -u username < dbupdates/rev74.sql), и мне хорошо идти.

Ответ 7

Если вы хотите получить настоящий фанк с ним, вы можете использовать build script для получения текущей версии из SVN, затем compile ваш PHP-код, а затем в успешной сборке, автоматически нажимайте изменения на свой сервер.

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

Ответ 8

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

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

Ответ 9

Что я делаю на работе, это использование FTP для загрузки изменений на тестовый сервер. Затем, когда я закончил раздел сайта, над которым я работал, я фиксирую изменения и обновляю оба. Иногда, если я работаю над чем-то, и я меняю много файлов в разных каталогах, я фиксирую их и обновляю тестовый сервер. Но я не обновляю производственный сервер. Но я единственный программист здесь, я бы не рекомендовал совершать возможно багги код, если есть более одного программиста.

Ответ 10

Я использую ZendStudio для Eclipse (в настоящее время версия 6.1). И я использую SVN, чтобы сохранить исходные коды. Первоначально я думал, что процесс был несколько медленным из-за процесса фиксации (и ввода комментария коммита) и ждать, пока он не остановится.

Однако, узнав, что Ctrl + Alt + C для фиксации и установите флажок "Всегда запускать в фоновом режиме", процесс не замедляется вообще.

Кроме того, я запускаю все локально, а затем только SSH через некоторое время.

Ответ 11

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

Ответ 12

IF на сервере * nix И у вас есть доступ к SSH И, у вас есть место для хранения нескольких копий веб-сайта, THEN, самый эффективный метод управления версиями, который я нашел, - это использовать символическую ссылку, чтобы указать на "текущую" версию веб-сайта. (Вы все еще можете использовать SVN для исходного кода версии - это способ легко или мгновенно переключаться между версиями веб-сайта на сервере.)

  • Настройте веб-сервер, чтобы указать /whatever.com в качестве корня веб-сайта.

  • Имейте папку типа /website/r 1v00, на которую вы FTP файлы веб-сайта, затем создайте символическую ссылку под названием "whatever.com" , которая указывает на /website/r 1v00

  • Когда у вас есть обновленная версия веб-сайта, создайте еще одну папку под названием /website/r 1v001, FTP все файлы для обновленного сайта, а затем измените символическую ссылку на "whatever.com" , чтобы теперь указать на/веб-сайт/r1v01. Если есть проблемы с новым сайтом, вы можете мгновенно вернуть его обратно, просто указав символическую ссылку "whatever.com" на /website/r 1v00

Конечно, вы можете/должны настраивать скрипты для автоматизации создания и переключения символической ссылки. В моем случае у меня есть страница "admin", написанная на PHP, в которой перечислены все доступные версии, и я могу переключиться на любой из них. Этот метод несколько раз спас мой бекон...!

Очевидно, что это не касается каких-либо проблем с схемами базы данных версий или содержимым базы данных.