Безпечно мати папки /.svn/ на сайті? (Як їх видалити, але зберегти можливість оновлення svn?)


10

Я роблю svn update, щоб оновити код для свого веб-сайту PHP, але він залишає .svn/папки по всьому.

Я думаю, що небезпечно залишати ці файли публічно читаними, але оновити систему дуже просто.

Чи є спосіб використовувати svn updateдля оновлення системи, але не для експорту .svn/папок?

Відповіді:


21

Якщо ви використовуєте apache:

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

Це .svnзаважатиме людям віддалено отримувати доступ до каталогів (за допомогою браузера), але ви можете продовжувати (і можливості svn) проекту.

До речі ви можете замінити \.svnна \.gitабо , \.cvsякщо ви використовуєте що - то інше , ніж підривна діяльність.


і це заблокує всі .svn каталоги на веб-сайті? У мене є багато підкаталогів
siliconpi

на даний момент у моєму httpd.conf є <Каталог /> Параметри FollowSymLinks AllowOverride All </Directory> чи можу я додати те, що ви написали безпосередньо під цим, як окрему річ, чи потрібно дві записи об'єднати?
siliconpi

Він буде відповідати будь-якій директорії під назвою .svnтак.
coredump

Ви можете додати його окремо.
coredump


3

Ви хочете експортувати свій код із SVN на прямий сайт ...

Не використовуйте svn updateдля цього. оновлення призначене для використання з оновленням робочих копій, не експортуючи код. Використовуйте svn exportзамість цього, оскільки воно експортує чисте дерево каталогів із зазначеного сховища.

--forceПрапор дозволить експорту перезаписувати існуючі файли.

SVN Експорт вручну


Я можу співчувати, якщо ОП не хоче використовувати export, оскільки це передбачає завжди захоплення цілої нової копії сховища, що є клопотом, якщо це великий репо на невеликому з'єднанні (скажімо, веб-сервер розміщений сервер, але ваше репортаж SVN знаходиться у вашому місцевому офісі та ним надається посилання на 1 Мб). updateозначає, що вам не потрібно отримувати всю справу щоразу.
Марк Хендерсон

Справедливий момент. Можливо, експорт до локальної копії сайту, тоді просто rsyncing змін у віддалений веб-сервер спрацював би в цій ситуації? У мене ніколи не було цієї проблеми, тому я не розглядав її.
gsreynolds

2

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


@kerner - як їх потім оновити?
siliconpi

1
Чому б просто не використовувати svn exportі не турбувати їх фільтрацію?
pjmorse

У мене є сценарій встановлення, який я використовую для своїх сайтів, і трохи підправляти їх під кожен. Зазвичай він також робить такі речі, як складання баз даних, db-таблиць та db-користувачів, налаштування будь-яких користувачів за замовчуванням чи адміністраторів тощо. Отже, щоб здійснити експорт у prod, користувач prod (як людина чи сценарій) перевіряє роботу svn скопіюйте десь уздовж ~ /, а потім запустіть сценарій встановлення, який є членом зазначеної робочої копії, а потім необов'язково видаляє робочу копію.
екернер

1

Ви повинні вивчити належну систему розгортання, наприклад, Capistrano . Це означає, що вашим виробничим серверам не потрібна підривна робота, і ви можете розгортатись на декількох серверах і додавати власну логіку до розгортань. Це також робить відносно легким відкат розгортань.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.