6

У меня тупая проблема, которую я не могу решить.

Что я пытаюсь сделать?

post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass --submit-as=admin -p --target-groups=reviewers

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

Что происходит, когда я пытаюсь сделать это из хука post-commit SVN?

Ресурсы зафиксированы, но операция svn зависает - на самом деле ловушка post-commit не завершается.

В чем проблема сужена?

post-review выполняется как пользователь, выполняющий хук post-commit - в данном случае пользователь Apache с www-данными. Т.е. когда я запускаю команду как www-data:

sudo -u www-data post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass! --submit-as=admin -p --target-groups=reviewers -d

Я получаю (обратите внимание на параметр -d в команде post-review - DEBUG):

RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':

Здесь он зависает в ожидании ввода пароля. Операция фиксации не может завершиться, и она просто остается там. Я уже обсуждал это с ребятами из группы Google ReviewBoard в этом посте.

С другой стороны, когда я делаю ту же команду с выводом отладки, но в качестве myuser я получаю:

RBTools 0.4.1
Home = /home/borislav
HTTP GETting api/
HTTP GETting http://reviews.example.test/api/info/
Using the new web API
TTP GETting http://reviews.example.test/api/repositories/
HTTP GETting http://reviews.example.test/api/repositories/1/
HTTP GETting http://reviews.example.test/api/repositories/1/info/
HTTP GETting http://reviews.example.test/api/repositories/2/
HTTP GETting http://reviews.example.test/api/repositories/2/info/
HTTP GETting http://reviews.example.test/api/repositories/3/
HTTP GETting http://reviews.example.test/api/repositories/3/info/
HTTP GETting http://reviews.example.test/api/repositories/4/
HTTP GETting http://reviews.example.test/api/repositories/4/info/
Attempting to create review request on http://xxx.xxx.xxx.xxx/svn/testRepo2 for None
Submitting the review request as admin
HTTP POSTing to http://reviews.example.test/api/review-requests/: {'submit_as': 'admin', 'repository': 'http://xxx.xxx.xxx.xxx/svn/testRepo2'}
Review request created
Attempting to set field 'target_groups' to 'reviewers' for review request '22'
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'target_groups': 'reviewers'}
Uploading diff, size: 2316
HTTP POSTing to http://reviews.example.test/api/review-requests/22/diffs/: {'basedir': '/'}
Publishing
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'public': 1}
Review request #22 posted.

http://reviews.example.test/r/22/

Так что на самом деле все с публикацией / публикацией и т.д. Работает.

Один из разработчиков ReveiwBoard заявил, что «Мы не отображаем строку« Пароль для »».Так что это исходит из чего-то другого ".

Я уверен, что это какое-то разрешение на исполнение. Он должен работать на Ubuntu Server, так что подумайте о Debian.

Мне было интересно, имеет ли она какое-либо отношение к парадигме «нет root-входа» в Ubuntu.

Я не пробовал другой дистрибутив Linux, который на самом деле не подходит, поскольку сервер SVN размещен на Ubuntu Server.

Вы можете проверить это обсуждение, которое я имел с парнями в группе защитников ReviewBoard. Бинарный файл после просмотра находится по адресу: /usr/local/bin/post-review

Я попытался добавить разрешения для www-данных, чтобы иметь возможность выполнять пост-просмотр в файле sudoers, но безуспешно.

Какое решение вы можете придумать?

Заранее спасибо, Борислав.

1 ответ1

3

Запрос пароля на самом деле приходит из SVN, а не из пост-обзора. post-review вызывает двоичный файл svn для получения изменений из репозитория.

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

Самый простой способ исправить это - использовать su как пользователя www-data и выполнить аутентификацию в репозитории, чтобы учетные данные кэшировались.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .