Ich habe ein langweiliges Problem, das ich scheinbar nicht lösen kann.
Was versuche ich zu tun?
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
Alles ist in Ordnung, wenn ich dies von Bash aus versuche und als mein Benutzer angemeldet bin. Die Rezension ist gepostet, veröffentlicht usw. ==> Alle Berechtigungen und sonstigen Einstellungen sind in Ordnung.
Was passiert, wenn ich dies vom Post-Commit-Hook von SVN aus versuche?
Die Ressourcen werden festgeschrieben, aber der SVN-Vorgang bleibt hängen – tatsächlich wird der Post-Commit-Hook nicht beendet.
Worauf lässt sich das Problem eingrenzen?
post-review wird als der Benutzer ausgeführt, der den Post-Commit-Hook ausführt – in diesem Fall der Benutzer www-data von Apache. Wenn ich den Befehl also als www-data ausführe:
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
Ich erhalte (beachten Sie den Parameter -d im Post-Review-Befehl – DEBUG):
RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':
Hier bleibt es hängen und wartet auf die Eingabe eines Passworts. Der Commit-Vorgang kann nicht abgeschlossen werden und es bleibt einfach dort. Ich habe das bereits mit den Leuten von besprochenReviewBoards Google-Gruppe in diesem Beitrag.
Wenn ich andererseits denselben Befehl mit Debug-Ausgabe, aber als mein Benutzer ausführe, erhalte ich:
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/
Also eigentlich funktioniert alles mit dem Posten/Veröffentlichen usw.
Einer der Entwickler bei ReviewBoard erklärte, dass„Wir zeigen die Zeichenfolge „Passwort für ''“ nicht an. Das kommt also von etwas ganz anderem.“
Ich bin sicher, dass es sich um eine Art Ausführungsberechtigung handelt. Es sollte auf Ubuntu Server laufen, also wahrscheinlich Debian.
Ich habe mich gefragt, ob es irgendeine Verbindung zum Paradigma „Kein Root-Login“ in Ubuntu hat.
Ich habe es nicht auf einer anderen Linux-Distribution versucht, was auch keine wirkliche Option ist, da der SVN-Server auf einem Ubuntu-Server gehostet wird.
Du kannst nachschauendiese Diskussion hatte ichmit den Jungs von ReviewBoards Google-Gruppe. DieNachprüfungDie Binärdatei befindet sich unter:/usr/local/bin/post-review
Ich habe versucht, Berechtigungen hinzuzufügen fürwww-Datenausführen könnenNachprüfungin der Sudoers-Datei, aber ohne Erfolg.
Welche Lösung fällt Ihnen ein?
Vielen Dank im Voraus, Borislav.
Antwort1
Die Kennwortabfrage kommt tatsächlich von SVN, nicht von Post-Review. Post-Review ruft die SVN-Binärdatei auf, um die Änderungen aus dem Repo abzurufen.
Als Ihr Benutzer wird Ihnen die Passwortabfrage nicht angezeigt, da Sie sich bereits authentifiziert haben und SVN Ihre Authentifizierungsinformationen gespeichert hat. Als Benutzer von www-data haben Sie dies noch nicht getan, daher fragt SVN nach dem Passwort.
Die einfachste Möglichkeit, dies zu beheben, besteht darin, sich als www-data-Benutzer anzumelden und sich beim Repo zu authentifizieren, sodass die Anmeldeinformationen zwischengespeichert werden.