У меня тупая проблема, которую я не могу решить.
Что я пытаюсь сделать?
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, но безуспешно.
Какое решение вы можете придумать?
Заранее спасибо, Борислав.