No Subversion posso ser um usuário que não seja meu nome de login?

253

Gostaria de saber como Subversionalterar o nome em que minhas alterações aparecem.

Estou apenas começando a usar Subversion . Atualmente, estou usando o código de controle de versão em um laptop XP, onde estou sempre logado com o nome da minha esposa. Eu gostaria que o banco de dados do subversion mostrasse as alterações em meu nome.

Mais tarde replicarei o banco de dados para que fique acessível a toda a casa. Minha esposa usa o computador do escritório onde está sempre logada em meu nome. Provavelmente vou configurá-lo para que verifique automaticamente os documentos modificados ... de preferência com o nome dela.

Eventualmente, provavelmente vou usá-lo em uma máquina Linux com outro nome de usuário.

Existe alguma maneira de modificar o ambiente do usuário para mudar o nome de usuário que o Subversion chama? Eu esperaria algo como configuração SVN_USERNAME='Mark'que substituiria no entanto, geralmente recebe o nome.

Atualização: parece que o --usernamesinalizador ao qual Michael se refere funciona para alterar o nome relatado "svn stat", mesmo para os repositórios locais de arquivos. Além disso, ele é pegajoso, portanto você não precisa especificá-lo para o próximo comando. Até reiniciei e ele ainda usava o "--username"valor da minha inicialização anterior.

mercados
fonte

Respostas:

280

A maioria dos comandos do Subversion aceita a --usernameopção de especificar o nome de usuário que você deseja usar no repositório. O Subversion lembra o último nome de usuário e senha do repositório usados ​​em cada cópia de trabalho, o que significa, entre outras coisas, que se você usar, svn checkout --username myusernunca precisará especificar o nome de usuário novamente.

Como Kamil Kisiel diz , quando o Subversion está acessando o repositório diretamente do sistema de arquivos (ou seja, a URL do repositório é da forma file:///path/to/repoou file://file-server/path/to/repo), ele usa as permissões do sistema de arquivos para acessar o repositório. E quando você se conecta via tunelamento SSH ( svn+ssh://server/path/to/repo), o SVN usa suas permissões FS no servidor , conforme determinado pelo seu logon SSH. Nesses casos, svn checkout --usernamepode não funcionar no seu repositório.

Michael Ratanapintha
fonte
Obrigado pela resposta rápida. O sinalizador --username parece ser muito grudento, mesmo nas reinicializações. E funciona bem no meu arquivo: repositório.
mercados
70

Para svn over ssh, tente:

svn list svn+ssh://[user_name]@server_name/path_to_repo  

svn solicitará a user_namesenha do.

aminalida
fonte
1
Não funciona com nomes como: [email protected]
neoneye
4
https://user_name@.../pathnão funcionou para mim (cygwin), mas --usernamefunciona bem.
Zelanix
44

Você pode configurar um nome de usuário padrão em ~ / .subversion / servers:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Por favor, esteja ciente de que versões mais antigas do svn não o suportam (por exemplo, 1.3.1 [sic!]).

azulado
fonte
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

Trabalhou para mim quando em outra conta de usuário. Você será solicitado a digitar o nome de usuário / senha novamente. Você precisa fazer o login como o descrito acima uma vez e está pronto para os períodos subsequentes (a menos que reinicie a máquina).

chethan
fonte
4
Tome cuidado ao fornecer a senha na linha de comando. Qualquer pessoa que possa ver a lista de processos na máquina poderá ver a senha na lista de processos. Ótimo em um sistema de usuário único, mas não tão bom em um sistema multiusuário.
bleater
12

Se você precisar especificar um nome de usuário que não seja o usuário conectado para uso com svn + ssh, adicione uma entrada ao seu arquivo .ssh / config :

Host example.com
Usuário jdoe
Aaron Dancygier
fonte
O man ssh_config irá lhe contar tudo sobre isso. Ainda não encontrei maneira de tornar isso dinâmico (por exemplo, com base na variável de ambiente).
bbaassssiiee
11

O Subversion normalmente solicita meu "nome de usuário do Subversion" se falhar ao usar o meu nome de usuário conectado. Então, quando eu estiver com preguiça (normalmente), deixarei que ele me peça minha senha e pressione Enter e aguarde o prompt do nome de usuário e use meu nome de usuário do Subversion.

Caso contrário, a solução de Michael é uma boa maneira de especificar o nome de usuário imediatamente.

Beau Simensen
fonte
1
Eu considero esta uma resposta melhor, porque ele funciona para todos os comandos SVN (check-out, cometem, etc.) onde a bandeira --username parece ser ou inexistente ou ligeiramente diferente para vários comandos ...
edwardsharp
7

A maioria das respostas parece ser para svn + ssh, ou não parece funcionar para nós.

Para acesso http, a maneira mais fácil de desconectar um usuário SVN na linha de comando é:

rm ~/.subversion/auth/svn.simple/*

Dica: http://www.yolinux.com/TUTORIALS/Subversion.html

Danny Schoemann
fonte
6

Acredito que se você usar o método file: // para acessar seu repositório do subversion, suas alterações serão sempre realizadas no usuário que acessa o repositório. Você precisa usar um método que suporte autenticação como http: // ou svn: //.

Consulte http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing

Kamil Kisiel
fonte
6

Usando o Subversion com o módulo Apache ou svnserve. Consegui realizar operações como vários usuários usando --username.

Cada vez que você chama um comando do Subversion como um 'novo' usuário, seu $HOME/.subversion/auth/<authentication-method>/diretório terá uma nova entrada em cache para esse usuário (supondo que você seja capaz de se autenticar com a senha ou o método de autenticação correto para o servidor que está entrando em contato com esse usuário em particular) .

Don Wakefield
fonte
2

Se você estiver usando svn + ssh para se conectar ao repositório, a única coisa que o autentica e autoriza são as suas credenciais ssh. TUDO MAIS é ignorado. Seu nome de usuário será logado no subversion exatamente como está estabelecido na sua conexão ssh. Uma excelente explicação para isso está em jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
fonte
2

Vá para ~/.subversion/auth/svn.simple/*e você verá uma lista de arquivos que contém as informações sobre sua conta de usuário svn. Basta excluir todos os outros que você não precisa.

Depois disso, quando você fizer algo relacionado à operação do SVN, como commit, rm, etc. Você será solicitado novamente a inserir nome de usuário ou senhas.

Alan Dong
fonte
-1

O TortoiseSVN sempre solicita o nome de usuário. (a menos que você diga para não)

recursivo
fonte
Não, não faz. Não no 1.9.5 para Linux, pelo menos.
Drkvogel 9/10/19
Ele usa seu nome de usuário local por padrão, o que nem sempre é o que você deseja ao se conectar a um repositório remoto.
Drkvogel 9/10/19
-3

Acredito que você pode definir a SVN_USERvariável de ambiente para alterar seu nome de usuário SVN.

Sophie Alpert
fonte
3
Você pode fornecer uma referência para isso? Eu fiz uma pesquisa e encontrei apenas svn_username, que é um patch que alguém fez e não sei dizer se chegou à linha principal ou não ... Eu acho que teria encontrado outros hits, se sim.
mercados