Ho un problema noioso che non riesco a risolvere.
Cosa sto cercando di fare?
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
Va tutto bene quando provo questo da bash loggato come mio utente. La recensione è pubblicata, pubblicata, ecc. ==> Tutte le autorizzazioni e le altre impostazioni varie sono OK.
Cosa succede quando provo questo dal gancio post-commit di SVN?
Le risorse vengono impegnate ma l'operazione svn si blocca - in realtà l'hook post-commit non termina.
Qual è il problema ridotto a?
post-review viene eseguito come l'utente che esegue l'hook post-commit, in questo caso l'utente di www-data Apache. Vale a dire quando eseguo il comando come 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
Ottengo (nota il parametro -d nel comando post-review - DEBUG):
RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':
È qui che si blocca in attesa dell'inserimento di una password. L'operazione di commit non può essere completata e rimane lì. Ne ho già discusso con i ragazzi del gruppo google di ReviewBoard in questo post .
D'altra parte quando eseguo lo stesso comando con l'output di debug ma come myuser ottengo:
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/
Quindi in realtà tutto funziona con la pubblicazione / pubblicazione ecc.
Uno degli sviluppatori di ReveiwBoard ha dichiarato che "Non visualizziamo la stringa" Password per "". Quindi proviene da qualcos'altro. "
Sono sicuro che si tratti di una specie di permesso di esecuzione. Dovrebbe funzionare su Ubuntu Server, quindi pensa a Debian.
Mi chiedevo se avesse qualche connessione con il paradigma "no root root" di Ubuntu.
Non ho provato su un'altra distribuzione Linux, che in realtà non è un'opzione poiché il server SVN è ospitato su Ubuntu Server.
Puoi controllare questa discussione che ho avuto con i ragazzi del gruppo di occhiali di ReviewBoard. Il binario post-revisione si trova in:/usr/local/bin/post-review
Ho provato ad aggiungere le autorizzazioni per i dati www per poter eseguire la post-revisione nel file sudoers, ma senza fortuna.
A quale soluzione puoi pensare?
Grazie in anticipo, Borislav.
ps
per vedere quale processo la sta emettendo.