Problema de permissões ao tentar executar o comando no gancho post-commit no SVN

6

Eu tenho um problema chato que não consigo resolver.

O que estou tentando fazer?

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

Tudo está bem quando eu tento isso do bash logado como meu usuário. A resenha é publicada, publicada etc. == > Todas as permissões e outras configurações diversas são aceitáveis.

O que acontece quando eu tento isso do gancho de pós-commit do SVN?

Os recursos são enviados, mas a operação svn trava - na verdade, o gancho post-commit não é concluído.

Qual é o problema reduzido?

a pós-revisão é executada como o usuário que está executando o gancho post-commit - neste caso, o usuário do www-data do Apache. Ou seja quando eu executo o comando como 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

Eu recebo (observe o parâmetro -d no comando post-review - DEBUG):

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

Este é o lugar onde ele fica aguardando a senha ser inserida. A operação de consolidação não pode terminar e apenas fica lá. Já discuti isso com os caras no grupo do Google do ReviewBoard nesta postagem .

Por outro lado, quando eu faço o mesmo comando com saída de depuração, mas como myuser eu recebo:

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/

Então, na verdade, tudo com postagem, publicação etc. funciona.

Um dos devs na ReveiwBoard afirmou que "Nós não exibimos a string" Password for '' ". Então, isso vem de outra coisa completamente diferente."

Tenho certeza de que é algum tipo de permissão de execução. Ele deve rodar no Ubuntu Server, então pense no Debian.

Eu queria saber se ele tinha alguma conexão com o paradigma "no root login" no Ubuntu.

Eu não tentei em outra distribuição Linux, o que não é realmente uma opção, já que o servidor SVN está hospedado no Ubuntu Server.

Você pode verificar esta discussão que tive com os rapazes nos óculos de proteção da ReviewBoard grupo. O binário pós-revisão está localizado em: /usr/local/bin/post-review

Eu tentei adicionar permissões para www-data para poder executar pós-revisão no arquivo sudoers, mas sem sorte.

Em qual solução você pode pensar?

Obrigado antecipadamente,     Borislav.

    
por Borislav Sabev 26.09.2012 / 14:14

1 resposta

3

O prompt de senha está realmente vindo do svn, não da pós-revisão. post-review chama o binário svn para recuperar as alterações do repositório.

Você não vê a solicitação de senha como seu usuário porque você já fez a autenticação e o svn armazenou suas informações de autenticação. Você ainda não fez isso como o usuário www-data, então o svn pede a senha.

A maneira mais fácil de corrigir isso seria su como o usuário www-data e autenticar no repositório, para que as credenciais sejam armazenadas em cache.

    
por 11.10.2012 / 21:18