публикация сайта с использованием svn export - PullRequest
7 голосов
/ 21 июля 2009

Я в настоящее время ftp все мои файлы на моем сайте, когда я делаю обновление (через медленное ADSL-соединение)

И я хочу, чтобы все было проще, поэтому я недавно начал использовать хостинговый сервис SVN, и я подумал, что могу немного ускорить процесс, выполнив экспорт моего сайта SVN напрямую на мой веб-сервер

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

так что мои вопросы

возможно ли выполнить экспорт и получить изменения только после последнего экспорта (как это будет обрабатывать удаленные файлы?)

ИЛИ будет ли проще выполнить svn checkout и svn обновлять его все время вместо svn export и просто скрывать папки .svn, используя apache htaccess

это хорошая идея или есть лучший способ опубликовать мой сайт я пытаюсь достичь идеального типа развертывания в 1 клик

возможно, есть какие-то ошибки, о которых я не думал, что кто-то еще столкнулся с

debian / apache / php

Ответы [ 5 ]

8 голосов
/ 21 июля 2009

Я бы сделал svn checkout и успешно делал это на живом сайте в течение нескольких лет. Вы должны добавить mod_rewrite правила к 404 каталогам .svn (и файлам).

5 голосов
/ 21 июля 2009

Вот что я делаю на своем хосте:

Для каждого проекта у меня есть структура, которая выглядит примерно так:

~/projects/myproj
~/public_html/myproj

Первый каталог - извлечение из SVN, а второй - экспорт svn.

У меня есть небольшой скрипт bash

#!/bin/bash
SOURCE="$HOME/projects/"
TARGET="$HOME/public_html/"
for x in `ls $SOURCE`
do
    if [ -d $SOURCE$x ]; then
        svn update $SOURCE$x
        svn export --force $SOURCE$x $TARGET$x
    fi
done

Экспорт выполняется из рабочей копии, поэтому он очень быстрый.

1 голос
/ 21 июля 2009

Возможно, это не совсем тот ответ, который вы ищете, но, если у вас есть SSH-доступ к вашему веб-серверу (это зависит от вашего хостинга; некоторые «недорогие» не предоставляют такой вид доступа), вы можно использовать rsync для «синхронизации» удаленного сайта с тем, что имеется на вашем диске.

В прошлом я использовал что-то похожее на идею, которую вы описываете (получение журнала svn между последней версией, отправленной в производство и HEAD, анализом каждой строки и, в конце, вычислением того, что отправить на сервер); но это был не очень хороший процесс; Теперь я использую rsync, и мне это нравится намного лучше.

(Здесь вы также должны исключить каталоги .svn, кстати)

0 голосов
/ 10 ноября 2011

Старая тема, но так как это то, что возникло в Google во время моего исследования, я подумал, что добавлю к этому. Я рекомендую делать экспорт на сайт, а не проверять его. Мне нравится хранить репозитории и сайты отдельно. Я также не рекомендую экспортировать весь репозиторий на сайт каждый раз, особенно если за один раз изменяется только несколько файлов. Вместо этого вы можете выполнить различие в репозитории, чтобы увидеть, что изменилось с выпуска на другой, и экспортировать только эти файлы. Больше информации на: http://www.joeyrivera.com/2011/automate-svn-export-to-site-w-bash-script/

0 голосов
/ 21 июля 2009

Вы можете просто согласиться с наличием каталогов .svn на своем веб-сайте (как правило, это не проблема, особенно если вы настраиваете его, чтобы не разрешать доступ к ним) - это простой вариант. В качестве альтернативы, сделайте то, что делает RaYell, и разместите две копии вашего веб-сайта на веб-сервере. Одна обычная проверка вне веб-каталога и одна в вашем веб-каталоге. Когда вы обновляете, просто экспортируйте svn (только копию с удаленными .svn dirs) в веб-каталог (и вы должны сначала удалить старые файлы, если хотите, чтобы файлы, которые были удалены из SVN, не оставались на вашем сайте). ).

Я делаю что-то вроде этого, используя robocopy set для зеркалирования извлечения svn, исключая каталоги .svn, и получаю как экспорт, так и удаление старого файла за один шаг, минимизируя время простоя, если копирование занимает много времени. Я уверен, что это легко сделать и в Unix, если это среда вашего хостинга. Например, вы можете использовать локальную rsync: http://blog.gilluminate.com/2006/12/12/yes-you-can-rsync-between-two-local-directories/

...