Пользовательские разрешения SVN после фиксации - PullRequest
1 голос
/ 07 октября 2010

У меня есть веб-сервер Debian с запущенной на нем Subversion.

Я пытаюсь использовать скрипт post-commit для обновления моей промежуточной версии моего сайта.

#!/bin/sh

/usr/bin/svn update /home/sites/example.com/www >> /var/log/svn/example.log 2>&1

если я запускаю эту команду из командной строки, вошедшей в систему как пользователь 'derek', то все работает нормально

но когда он запускается как post-commit, в моем лог-файле появляется следующая ошибка:

svn: Can't open file '/home/sites/example.com/www/.svn/lock': Permission denied

Хорошо, я понимаю, что здесь происходит то, что пользователь, вызывающий скрипт post-commit, не 'derek', поэтому у него нет разрешения.

Так что мой вопрос в том, что пользователь вызывает скрипт post-commit.

демон svnserve запущен от имени Дерека ... Я думал, это будет означать, что команда post-commit будет вызываться как Дерек, но, похоже, нет.

Любые идеи, как я могу узнать, что пользователь называет это

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

Обновление:

Я обнаружил, что пользователь, вызывающий скрипт post-commit, на самом деле www-data. Так что теперь, как мне решить проблему.

Ответы [ 3 ]

0 голосов
/ 08 октября 2010

Так что это проблема с правами на общую запись между пользователями

  • создать группу, включающую вас и www-data
  • chgrp рабочая копия этой группы
  • дать группе право на запись в рабочую копию
  • убедитесь, что umask вас и www-data равны 002, так что каждый созданный файл будет доступен для групповой записи
0 голосов
/ 08 октября 2010

Я получил это работает. Мне пришлось написать собственную программу на c, но она работает!

благодаря информации, которую я нашел здесь: http://forum.webfaction.com/viewtopic.php?pid=216#p216

0 голосов
/ 07 октября 2010

Обновление 8 октября: Извините, я не правильно понял вопрос в первый раз.Вот это правильный ответ.

Как я понимаю, вы пытаетесь получить доступ к SVN через http (s), который не требует svnserve.Svnserve предназначен для проприетарного протокола svn (т. Е. Svn или svn + ssh).поэтому, когда вы обращаетесь к svn через http (s), он будет работать как веб-пользователь.Вы можете проверить это, выполнив команду 'echo $ USER> / tmp / svn_post_ci_user' в скрипте пост-фиксации.Чтобы решить эту проблему, просто извлеките рабочую копию в /home/sites/example.com/www как webuser.

старое обновление: я думаю, вместо того, чтобы пытаться найти пользователя, вы можете просто включить --username derekк команде обновления SVN, которая должна решить вашу проблему.

...