SVN alterar nome de usuário


86

Encontrei muitos exemplos de como alterar o nome de usuário para revisões específicas e assim por diante.

Mas o que eu preciso é isso: fiz um checkout com as credenciais de autenticação de um colega de trabalho e preciso alterá-las para minhas credenciais para commits futuros.

Não posso simplesmente finalizar a compra com minhas credenciais devido às muitas mudanças que já foram feitas ...

Alguém familiarizado com isso?


Pergunta interessante! Não parece haver uma maneira, exceto limpar todos os dados de autenticação armazenados.
Pekka,

@Pekka: Boa resposta. A questão não era específica do TortoiseSVN, no entanto.
Raphael Schweikert

Respostas:


73

Você pode alterar o usuário com

  • Subversion 1.6 e anterior:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 e posterior:

    svn relocate protocol://currentUser@server/path protocol://newUser@server/path
    

Para descobrir o que protocol://currentUser@server/pathé, execute

svn info

em sua cópia de trabalho.


4
Recebo um erro "svn: E155024: Prefixo de URL de origem inválido: 'protocol: // currentUser @ server / path' (não se sobrepõe ao URL de destino 'protocol: // newUser @ server / path')" [com meus URLs reais, claro]
James Roth

3
Isso não funciona para esquemas simples de autenticação http-auth. Consulte esta resposta para saber como excluir as credenciais de usuário salvas para esse caso de uso. @James esse é provavelmente o seu problema.
Caleb

Coisas brilhantes .. Thnaks :)
Karma

64

A maneira mais fácil de fazer isso é simplesmente usar a opção --username em seu próximo checkout ou commit. Por exemplo:

svn commit --username newUser

ou

svn co --username newUser

Ele será armazenado em cache e usado como nome de usuário padrão para comandos futuros.

Veja também: No Subversion, posso ser um usuário diferente do meu nome de login?


Eu fiz isso, e então svn infonão vejo nenhuma mudança na Authorlinha.
vsync

2
Do link acima: "quando o Subversion está acessando o repositório diretamente do sistema de arquivos, ele usa as permissões do sistema de arquivos para acessar o repositório. (Quando você se conecta via túnel SSH, o SVN usa suas permissões FS no servidor, conforme determinado por seu SSH login.) Então svn checkout --username pode não funcionar para o seu repositório. "
Matt Browne

1
@MattBrowne está correto. um caminho como "svn + ssh: //svn.server.com" não respeitará a mudança --username. A resposta aceita que usa realocar era a única maneira de mudar isso.
FlipMcF

51

Eu tive exatamente o mesmo problema e encontrei a solução em Onde o cliente SVN armazena os dados de autenticação do usuário? :

  1. cda ~/.subversion/auth/.
  2. Faça fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Exclua o arquivo encontrado.
  4. A próxima operação no repositório solicitará novamente as informações de nome de usuário / senha.

(Para Windows, as etapas são análogas; o authdiretório está em %APPDATA%\Subversion\).

Observe que isso só funcionará para esquemas de acesso SVN onde o nome do usuário faz parte do login do servidor, portanto não é útil para repositórios acessados ​​usando file://.


1
Vale a pena notar que se você executar o IntelliJ IDEA, também terá que reiniciar o IntelliJ para que as alterações tenham efeito
AndersG

1
o fgrepcomando deve ter um -l, de modo que o comando informe o caminho do arquivo. Eu ia editar, mas não é longo o suficiente.
vguzmanp

16

O comando, que pode ser executado:

svn up --username newUsername

Funciona perfeitamente ;)

PS Só uma dica: a opção "--username" pode ser executada em qualquer comando "svn", não apenas na atualização.


5

Se o seu protocolo for http e você estiver usando o Subversion 1.7, você pode mudar o usuário a qualquer momento simplesmente usando a opção global --username em qualquer comando.

Quando o método de Ingo não funcionou para mim, foi o que descobri que funcionava.


3

Vá para Tortoise SVN --> Settings --> Saved Data.

Há uma opção para limpar os dados de autenticação, clique no botão limpar e isso permitirá que você selecione para qual conexão deseja limpar o ID do usuário / pwd.

Depois que você fizer isso, qualquer checkout ou atividade de atualização será solicitado novamente para o ID do usuário e a senha.


2

para Win10 você deve remover esta pasta e fechar / abrir seu IDE

C: \ Users \ User \ AppData \ Roaming \ Subversion \ auth

, também em meus projetos não há pastas ".subversion", apenas ".svn"


1

Além disso, para aqueles que perceberam tarde demais, que se comprometeram com as credenciais erradas, a solução (após o fato) é mudar o autor svn dessa revisão: veja esta questão

Basicamente, a sintaxe é:

svn propset --revprop -r (revision_number) svn:author (new username)

1

Com base na solução de Ingo Kegel, criei um "pequeno" script bash para alterar o nome de usuário em todas as subpastas. Lembrar de:

  1. mudança <NEW_USERNAME> para o novo nome de usuário.
  2. Mude <OLD_USERNAME>para o nome de usuário atual (se você não tiver um nome de usuário definido, simplesmente remova <OLD_USERNAME>@).

No código abaixo, o comando svn é apenas impresso (não executado). Para que o comando svn seja executado, simplesmente remova o echoespaço em branco e na frente dele (logo acima popd).

for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done

Espero que seja útil!


0

Eu acredito que você poderia criar seu próprio branch (usando sua própria credencial) a partir do mesmo tronco que o branch de seu colega de trabalho, mesclar do branch de seu colega de trabalho para sua cópia de trabalho e então fundir de seu branch. Todos os commits futuros devem ser marcados como vindos de você.


0

Você pode pedir a seu colega para criar um patch, que reunirá todas as alterações feitas em um único arquivo que pode ser aplicado ao seu próprio check-out. Isso atualizará todos os seus arquivos de forma adequada e, em seguida, você poderá reverter as alterações e fazer o check-in das suas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.