Безопасно ли иметь /.svn/ папки на живом сайте? (Как удалить их, но сохранить возможность обновления SVN?)

10

Я делаю обновление SVN, чтобы обновить код для моего сайта PHP, но он оставляет .svn/папки по всему.

Я считаю опасным оставлять эти файлы общедоступными для чтения, но очень легко обновлять систему.

Есть ли способ использовать svn updateдля обновления системы, но не для экспорта .svn/папок?

siliconpi
источник

Ответы:

21

Если вы используете apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

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

Кстати вы можете заменить \.svnна \.gitили , \.cvsесли вы используете что - то другое , чем подрывная деятельность.

CoreDump
источник
и это заблокирует все .svn каталоги на сайте? У меня есть много подкаталогов
Silicpi
в настоящее время мой httpd.conf имеет <Directory /> Options FollowSymLinks AllowOverride All </ Directory>, могу ли я добавить то, что вы написали чуть ниже, как отдельную вещь, или эти две записи необходимо объединить?
Силиконпи
Это будет соответствовать любой директории, которая называется .svnда.
coredump
Вы можете добавить его отдельно.
coredump
3

Вы хотите экспортировать свой код из SVN на живой сайт ...

Не используйте svn updateдля этого. обновление предназначено для использования с обновлением рабочих копий, а не с экспортом кода. Используйте svn exportвместо этого, поскольку он экспортирует чистое дерево каталогов из указанного репозитория.

--forceФлаг позволит экспорту перезаписывать существующие файлы.

SVN Export ручной ввод

gsreynolds
источник
Я могу посочувствовать, если OP не хочет использовать export, так как он всегда требует захватить новую свежую копию репозитория, что создает трудности, если это большое репо на небольшом соединении (скажем, веб-сервер, размещенный на сервере, но репозиторий SVN находится в вашем местном офисе и доступен по ссылке 1 Мб). updateозначает, что вам не нужно получать все это каждый раз.
Марк Хендерсон
Честная точка зрения. Возможно, экспорт в локальную копию сайта, а затем просто пересылка изменений на удаленный веб-сервер будет работать в этой ситуации? У меня никогда не было этой проблемы, поэтому я не рассматривал ее.
Грейнольдс
2

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

ekerner
источник
@kerner - как вы их обновите?
Силиконпи
1
Почему бы просто не использовать их svn exportи не фильтровать?
pjmorse
У меня есть скрипт установки, который я использую для своих сайтов, и немного подгоняю под каждый. Обычно он также выполняет такие функции, как создание баз данных, таблиц БД и пользователей БД, настройка любых пользователей или администраторов по умолчанию и т. Д. Поэтому, чтобы выполнить экспорт в prod, пользователь prod (как человек или скрипт) проверяет работоспособность SVN. скопировать куда-нибудь вдоль ~ /, а затем запустить скрипт установки, который является членом указанной рабочей копии, а затем, при необходимости, удалить рабочую копию.
ekerner
1

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

dhasenan
источник