Контроль SVN или экспорт для продуктивной среды?

A не использует super, поэтому его нельзя использовать для кооперативного наследования. Вместо этого определите оболочку для A, согласно Python's super() считается супер! . (Предполагая, что вы не можете просто исправить A в первую очередь.)

class A:
    def __init__(self):
        print("Started A's constructor")
        print("Ended A's constructor")


# AWrapper also needs to override each method defined by A;
# those simply delegate their work to the intenral instance of A
# For example,
#
#  def some_method(self, x, y):
#      return self.a.some_method(x, y)
#
class AWrapper:
    def __init__(self, **kwargs):
        self.a = A()
        super().__init__(**kwargs)


class B:
    ...


class C(AWrapper, B):
    ...

26
задан Eran Galperin 6 October 2008 в 16:38
поделиться

9 ответов

Часто задаваемые вопросы по Subversion , похоже, рекомендуют развертывание как средство проверки, автоматически обновленное с помощью сценариев ловушек после фиксации. Они не позволяют Apache экспортировать папки .svn (вероятно, хорошая идея), добавляя в httpd.conf следующее:

# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
    Order deny,allow
    Deny from all
</DirectoryMatch>

Я сам новичок в svn, но, возможно, вы могли бы запустить сценарий ловушки при создании нового тега. Таким образом, когда вы будете готовы обновить работающий сайт, вы просто сохраните свои последние изменения в стволе, создадите новый тег, и скрипт обновит ваш действующий сайт с помощью svn update.

13
ответ дан 28 November 2019 в 07:20
поделиться

По моему скромному мнению, необходимо создать ответвление/тег, где у Вас есть (желаемое) подмножество dev ENV, который Вы используете для производства. Кто-то должен или поддержать это вручную или автоматически использование сценариев. Затем необходимо экспортировать (а не контроль). Инкрементные обновления являются надуманным вопросом, если Вы не изменяете файлы на своей продуктивной среде, и Вы не хотите, чтобы те файлы были перезаписаны.

Просто мои 0,02$

9
ответ дан 28 November 2019 в 07:20
поделиться

Никакой вопрос - экспорт.

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

я сказал бы, что любая среда должна быть только экспортом; Вы только используете контроль локально, когда Вы разрабатываете. Конечно, мы также используем сценарии сборки, так обновление развертывания так же просто как выполнение сценария.

До в коде разработки, создайте ответвления для любой сделанной работы. Только согласитесь на соединительную линию, когда готовый к развертыванию на среде разработки.

8
ответ дан 28 November 2019 в 07:20
поделиться

Я изучил бы некоторое программное обеспечение развертывания как Capistrano (это - рубиновая программа)

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

2
ответ дан 28 November 2019 в 07:20
поделиться

Я развертываю его как копию. Не ручной, конечно.

я использую, 'делают' и 'checkinstall'. Я создаю небольшой Make-файл, который использует системную команду 'установка' для копирования всех необходимых файлов в соответствующие каталоги на веб-сервере, и я имею, предварительно устанавливают и постустанавливают сценарии оболочки, которые будут выполнены на сервере.

, Когда время для развертывания настает, я просто выполняю 'checkinstall', который создает пакет (об/мин, DEB или TGZ, в зависимости от которого дистрибутива Linux я нацелен). Я устанавливаю его с помощью обычных инструментов, обеспеченных диспетчером пакетов дистрибутива Linux (об/мин, dpkg, pkgtool). Конечно, если Вы хотите отследить зависимости также, можно использовать конфетку, склонный - добираются, и т.д.

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

Это не могло бы часто соответствовать Вашему 'нажатию' стратегия хотя при использовании некоторого материала, которому нужна компиляция. Однако для сценариев материала (как PHP, который я делаю), создавая пакет (приблизительно 300 + файлы PHP) занимает приблизительно 20 секунд на моей машине. И почти так же устанавливать его в любой целевой системе.

Для разделения кода 'для выпуска' от кода 'в разработке' я использую ветвление. С Мерзавцем это действительно легко, так как ветвление является дешевым и быстрым.

1
ответ дан 28 November 2019 в 07:20
поделиться

ЭКСПОРТ

вот и все. У вас нет веских оснований для добавления лишнего мусора в производственную систему.
  • Вы раскроете свой исходный код
  • Если это веб-приложение, то оно еще хуже, ваши посетители могут загрузить ваш исходный код, как это круто! очень открытый:)
-3
ответ дан 28 November 2019 в 07:20
поделиться

Я боролся с этим и, думаю, наконец-то решил проверить. Да, там есть дополнительный мусор, но ...

  • Экспорт не учитывает удаленные файлы (если вы не решили удалить все в каталоге dir и THEN, что, я думаю, намного хуже). Checkout удалит удаленные файлы.
  • Оформить заказ быстрее. Период. Меньшее количество обновляемых файлов означает меньшее время простоя / перехода, а экспорт останавливается и перезаписывает ВСЕ, не только файлы, нуждающиеся в обновлении.

Не говоря, что это будет работать для всех, но эти две вещи повлияли на мое решение. Желаем удачи в вашем решении.

10
ответ дан 28 November 2019 в 07:20
поделиться

Лично я всегда сомневаюсь в решении этой проблемы, {{ 1}} Я предпочитаю, чтобы в моей производственной среде не было каталогов ".svn", это очень грязно , но в то же время экспорт очень утомителен для больших веб-приложений (особенно при использовании некоторых сторонних "компонентов", таких как Extjs, FCKeditor и т. Д.).

Я думаю, что на данный момент нет «убийственных решений».

1
ответ дан 28 November 2019 в 07:20
поделиться

позвольте мне посмотреть ..... ln -s? для чего это можно использовать?

/var/www/www.my-prod-site.com/public/
/var/www/www.my-prod-site.com/builds/Rev 1/
/var/www/www.my-prod-site.com/builds/Rev 2/
/var/www/www.my-prod-site.com/builds/Rev 3/
/var/www/www.my-prod-site.com/builds/Rev 99/

svn экспорт в каталоги сборок ...... скопируйте любые файлы конфигурации из / public, это ваша символическая ссылка на вашу предыдущую сборку выпуска, а затем просто переместите символическую ссылку из общедоступной чтобы указать на ваш новый каталог сборки. это занимает меньше времени в автономном режиме, чем любая из вещей, которые я видел здесь, и это также позволяет возвращаться НАМНОГО БЫСТРЕЕ, если вы не ck каждый раз загружаете свою базу данных, изменяя таблицы.

1
ответ дан 28 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

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