публикация веб-сайта с помощью svn экспорт

Если Ваш вариант использования - то, что у Вас есть форма (например, форма входа в систему), и Ваш сценарий серверной стороны должен знать, включили ли пользователю JavaScript, можно сделать что-то вроде этого:

<form onsubmit="this.js_enabled.value=1;return true;">
    <input type="hidden" name="js_enabled" value="0">
    <input type="submit" value="go">
</form>

Это изменит значение js_enabled к 1 прежде, чем отправить форму. Если Ваш сценарий серверной стороны получает 0, никакой JS. Если это получает 1, JS!

7
задан bumperbox 21 July 2009 в 10:13
поделиться

4 ответа

Я бы выполнил проверку svn, и уже несколько лет успешно это делал на работающем сайте. Однако вам следует добавить правила mod_rewrite к 404 каталогам (и файлам) .svn.

8
ответ дан 6 December 2019 в 15:25
поделиться

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

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

(Здесь вам также придется исключить каталоги .svn, кстати)

1
ответ дан 6 December 2019 в 15:25
поделиться

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

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

~/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

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

5
ответ дан 6 December 2019 в 15:25
поделиться

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

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

0
ответ дан 6 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: