Задать вопрос
@seqular
Сисадмин

SVN как настроить чтобы не вводить пароль?

Возможно неверно понимаю суть SVN, но вот такая схема:
На удалённом сервере (Debian 6.10) поднял Subversion. Импортировал туда веб-проект.
Теперь нужно поработать с файлами из дома. Поставил TurtoiseSVN, делаю Checkout в каталог по протоколу svn+ssh, запрашивает пароль дважды, ну да бог с ним. Файлы закачиваются в каталог. Делаю правки, commit изменений, снова спрашивает пароль для коммита. Пока не сильно раздражает.

Вопрос. А как теперь выгрузить эти изменения в каталог DocumentRoot вебсервера?

Представляю это так: сделать чекаут в этот каталог:
# svn co "svn+ssh://user@host/path/to/repo" .

Но тут снова спрашивает пароль, причём дважды. Как этого избежать? Или может быть есть другие схемы, чтобы закоммиченые изменения заливались в каталог вебсервера?

(изначально думал как-нибудь кроном делать svn update в каталог documentroot. Уже путаница в голове. Есть решение для этого?
  • Вопрос задан
  • 1531 просмотр
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Vapaamies
@Vapaamies
Психанул и снес свои ответы не отмечающим решения…
Пользую RapidSVN, об особенностях TortoiseSVN не знаком. За подключение и пароли отвечает базовый клиент SVN. Если всё правильно, он должен сохранить предпочитаемые реквизиты в %AppData%\Subversion. Возможно, там в config нужно включить соответствующую настройку, вроде store-auth-creds = yes. Рабочие настройки у меня дома...

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

На сервере нужно сделать свою рабочую копию в DocumentRoot (svn co), потом коммитить обычным порядком в основное хранилище, а на сервере делать svn up для получения изменений в DocumentRoot.
Ответ написан
@ALexhha
DevOps Engineer
С учетом что svn репозитарий и веб сервер находятся на одном и том же сервере, то можно сделать как то так

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /vhosts/www.example.com/public_html

    DirectoryIndex index.html index.php
	
    # Закрываем доступ к служебным папкам VCS
    RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

    <Directory /vhosts/www.example.com/public_html>
        Options -Indexes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>


Производим первоначальную инициализацию
# cd /vhosts/www.example.com/public_html
# svn co file:///var/lib/svn/repos/project1/trunk ./
# chown -R svn:apache /vhosts/www.example.com/public_html
# chmod -R 770 /vhosts/www.example.com/public_html


В данном примере svn репозитайрий работает от пользователя svn
# id svn
uid=497(svn) gid=48(apache) groups=48(apache),497(svn)


Создаем простой post commit hook
# cat /var/lib/svn/repos/project1/hooks/post-commit
#!/bin/sh

umask 002
cd /vhosts/www.example.com/public_html && svn up


После этого, при коммите в репозитарий, данные в папке /vhosts/www.example.com/public_html будут автоматически обновляться.

Насчет постоянного запроса пароля в TurtoiseSVN, то достаточно настроить аутентификацию по ключам, раз уж используется ssh. Для этого достаточно в putty создать сессию с таким же именем, как и имя сервера

PFe9WkX.png

И в секции Auth указать путь к private key, конвертировав ключ с помощью puttygen

VwxVOz0.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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