Você pode usar o expect
, é um aplicativo de linha de comando para simular a interação do usuário, basta instalá-lo e copiar o seguinte script em um novo arquivo executável.
#!/usr/bin/expect -f
set timeout 20
set user [lindex $argv 0]
set password [lindex $argv 1]
spawn svn checkout --username $user --password $password --no-auth-cache -r revision https://server.address/trunk/
expect "(R)eject or accept (t)emporarily?" { send "t\r" }
interact
Basta editar o script de acordo com as suas necessidades, basicamente ele executará o comando e lerá a saída, depois "digitará" e retornará (\ r) e liberará a sessão
O tempo limite é por quanto tempo expect
irá esperar pela saída antes de desistir, o usuário e a senha são variáveis que serão definidas a partir dos argumentos da linha de comando, então você deve chamar o script como expectscript.exp user password
ou você pode remova essas duas linhas e coloque o usuário e a senha diretamente na linha de desova.
EDITAR:
Outra solução possível:
Isso pode cuidar de svn
"limpeza" STDIN antes de ler a resposta enviando constantemente a resposta de um processo bifurcado para o terminal.
# The following command will fork to the background
# and keep sending 't^M' (^M is return) for 5 seconds to the terminal
{ for X in {1..5}; do printf %b 't\r' >$(tty); sleep 1; done } &
svn checkout --username name --password password --no-auth-cache -r revision https://server.address/trunk/
Espero que funcione, não tenho como tentar.
EDIT2:
Pensando bem, isso pode funcionar em uma sessão interativa, mas provavelmente não em um script.
EDIT3:
Talvez atrasar a resposta em um tubo?
(echo -n; sleep 5; printf %b 't\r') | svn checkout --username name --password password --no-auth-cache -r revision https://server.address/trunk/