J'ai un problème ennuyeux que je n'arrive pas à résoudre.
Qu'est-ce que j'essaie de faire ?
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
Tout se passe bien lorsque j'essaie de le faire à partir de bash en me connectant en tant qu'utilisateur. La revue est postée, publiée, etc. ==> Toutes les permissions et autres paramètres divers sont corrects.
Que se passe-t-il lorsque j'essaie de faire cela à partir du crochet post-commit de SVN ?
Les ressources sont validées mais l'opération svn est bloquée - en fait, le crochet postcommit ne se termine pas.
À quoi se résume le problème ?
post-review est exécuté par l'utilisateur qui exécute le crochet post-commit - dans ce cas, l'utilisateur d'Apache www-data. C'est-à-dire que lorsque j'exécute la commande en tant que 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
J'obtiens (remarquez le paramètre -d dans la commande post-review - DEBUG) :
RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':
C'est là qu'il attend la saisie d'un mot de passe. L'opération commit ne peut pas se terminer et reste bloquée. J'ai déjà discuté de ce problème avec les gars de ReviewBoard's google group dans ce message .
D'autre part, lorsque je fais la même commande avec la sortie de débogage mais en tant que mon utilisateur, j'obtiens :
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/
En fait, tout ce qui concerne l'affichage, la publication, etc. fonctionne.
L'un des développeurs de ReveiwBoard a déclaré que "Nous n'affichons pas la chaîne "Mot de passe pour ''". Cela vient donc de tout autre chose."
Je suis sûr qu'il s'agit d'une sorte d'autorisation d'exécution. Il devrait fonctionner sur Ubuntu Server, mais pas sur Debian.
Je me demandais s'il y avait un lien avec le paradigme "no root login" dans Ubuntu.
Je n'ai pas essayé sur une autre distribution Linux, ce qui n'est pas vraiment une option puisque le serveur SVN est hébergé sur Ubuntu Server.
Vous pouvez vérifier cette discussion que j'ai eue avec les gars du groupe goggle de ReviewBoard. Les examen a posteriori binaire est situé à : /usr/local/bin/post-review
J'ai essayé d'ajouter des autorisations pour www-data être en mesure d'exécuter examen a posteriori dans le fichier sudoers, mais sans succès.
Quelle est votre solution ?
T Borislav.