Descobri minha própria resposta. Derp.
Então eu descobri que, como estou executando um servidor svn do apache, os comandos svn são executados como o usuário em que o processo httpd está sendo executado.
Então, primeiro corri ps aux | egrep '(apache|httpd)'
e descobri isso:
nobody 1488 0.0 0.2 99604 4960 ? S 06:02 0:00 /usr/local/apache/bin/httpd -k start -DSSL
root 1962 0.0 0.0 4140 668 pts/0 S+ 06:28 0:00 egrep (apache|httpd)
root 11404 0.0 0.2 99208 5188 ? Ss Jul24 0:00 /usr/local/apache/bin/httpd -k start -DSSL
root 27766 0.0 0.1 99208 2340 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 27767 0.0 0.2 99604 5184 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 27768 0.0 0.2 99568 5188 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 27769 0.0 0.2 99604 5196 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 27770 0.0 0.2 99568 5168 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody 27771 0.0 0.2 99568 5184 ? S 00:18 0:00 /usr/local/apache/bin/httpd -k start -DSSL
Bem, há o problema. Os processos do apache estão rodando como 'nobody' não 'apache' ou 'svn' ou qualquer coisa.
Existem duas soluções possíveis para isso (eu tentei apenas uma).
O que eu fiz (e que funcionou) foi entrar no httpd.conf, e mudar as linhas:
User nobody
Group nobody
Para:
User apache
Group apache
E então service httpd restart
e agora todos esses processos 'nobody' estão sendo executados pelo apache, e svn import
funciona!
Outra solução que provavelmente funcionaria, mas eu não testei, é ir ao seu repositório e rodar chgrp -R svn ./*
, então todos os arquivos no repositório têm o grupo svn, e então adicionar o usuário nobody ao repositório. grupo svn ( usermod -g svn nobody
). Você também pode adicionar outros usuários ao grupo, se quiser (provavelmente mais útil é executar um servidor svnserve
svn, em vez de usar o apache).
Não sei por que a configuração do apache foi configurada para ser executada como ninguém, parece ser o padrão nos servidores CentOS do GoDaddy (que é o servidor em que estou executando)