Como fazer o svn salvar credenciais quando --non-interactive

5

Estou tentando obter svn para salvar meu nome de usuário e senha https em ~ / .subversion a partir de um script automatizado. Eu posso passar creds na linha de comando, mas eu não quero ser solicitado sobre se deseja salvar a senha não criptografada. Infelizmente isso não cria ~ / .subversion /:

svn --non-interactive --trust-server-cert --username myusername --password secret co https://private.example.com/src/repo/

FYI Estou tentando fazer isso para um Dockerfile que invoca um bower install com um bower.json que faz referência a um repositório svn protegido por senha. Infelizmente não há como passar as credenciais do svn para bower via linha de comando ou ambiente.

Atualmente estou trabalhando em torno dele rodando o svn interativamente e deixando-o criar o ~ / .subversion, depois zipar todo o diretório e ADD ing no Dockerfile. Eu acho que eu poderia olhar para os formatos de arquivo em ~ / .subversion e criá-los com um script, mas preferiria deixar o svn fazer isso.

    
por jamshid 18.03.2015 / 20:22

3 respostas

2

Credenciais serão salvas se você usar --username e --password sem --non-interactive e --trust-server-cert .

Suponho que você esteja usando --non-interactive e --trust-server-cert para evitar o prompt que solicita que você aceite o certificado. Para evitar esse prompt sem esses parâmetros, você pode fazer com que seu script crie uma cópia do arquivo que é gerado para cada certificado aceito em ~/.subversion/auth/svn.ssl.server . Este arquivo será o mesmo para todos para cada servidor respectivo. Atualmente estou usando esta solução para um script.

    
por 26.02.2016 / 22:34
1

Aparentemente, --non-interactive salva o nome de usuário, mas não a senha. Já habilitei o armazenamento de senhas em ~/.subversion/servers :

store-passwords = yes
store-plaintext-passwords = yes
store-auth-creds = yes

Olhando para svn help , não há comando nem opção que pareça relevante. Eu acho que é impossível. Você deve pedir aos desenvolvedores do SVN para ter certeza e enviar um relatório de bug.

O formato de arquivo em auth não é algo que você gostaria de criar um script sozinho. Mais importante ainda, o nome do arquivo do registro de autenticação parece ser um hash. Isso não é amigável ao script. Precisamos de um formato de arquivo especial para a lista de senhas codificadas ou uma maneira de controlar isso a partir da linha de comando.

Veja o que vejo em ~/.subversion/auth/svn.simple/ :

Nome do arquivo 935...dc9e (32 caracteres).

Conteúdo:

K 8
passtype
V 6
simple
K 8
password
V 8
p@$$w0rd
K 15
svn:realmstring
V 48
<https://svn.someplace.com:443> VisualSVN Server
K 8
username
V 5
johny
    
por 06.04.2015 / 22:24
1

Eu me deparei com isso em um ambiente isolado (no qual a segurança não era um problema) e resolvi com simplesmente executando svn ls no repositório com as credenciais apropriadas com a ajuda do comando (linux) yes , embora Eu descobri que precisava remover o diretório ~/.subversion para que funcionasse. Especificamente:

rm -fr ~/.subversion yes yes | svn --username=user --password=guest ls svn://server/repo &>/dev/null

Em seguida, todos os comandos svn a seguir usarão essas credenciais neste servidor. Claro, pode-se canalizar yes yes para qualquer comando svn que tenha a opção --password .

divirta-se!

    
por 26.06.2018 / 02:07