Como salvar nome de usuário e senha com o Mercurial?

Eu usei o Mercurial em um projeto pessoal, e eu tenho typescript meu nome de usuário e senha toda vez que eu quero empurrar algo para o servidor.

Eu tentei adicionar o seguinte ao arquivo .hgrc no meu diretório home, mas parece ser completamente ignorado.

 [ui] username = MY_USER_NAME password = MY_PASSWORD 

Como fazer isso da maneira certa?

Você pode criar uma seção auth no seu arquivo .hgrc ou Mercurial.ini , assim:

 [auth] bb.prefix = https://bitbucket.org/foo/ bb.username = foo bb.password = foo_passwd 

A parte ‘bb’ é um identificador arbitrário e é usada para combinar o prefixo com nome de usuário e senha – útil para gerenciar diferentes combinações de nome de usuário / senha com diferentes sites (prefixo)

Você também pode especificar apenas o nome do usuário, então você apenas terá que digitar sua senha quando você apertar.

Para mais detalhes, consulte: http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

Também recomendo dar uma olhada na extensão do chaveiro . Como ele armazena a senha no conjunto de chaves do sistema, em vez de um arquivo de texto simples, é mais seguro. Ele é empacotado com o TortoiseHg no Windows, e atualmente há uma discussão sobre distribuí-lo como uma extensão integrada em todas as plataformas.

Existem três maneiras de fazer isso: use o arquivo .hgrc, use ssh ou use a extensão keyring

1. A maneira INSECURE – atualize seu arquivo ~ / .hgrc

O formato que funciona para mim (no meu arquivo ~ / .hgrc) é este

 [ui] username=Chris McCauley  [auth] repo.prefix = https://server/repo_path repo.username = username repo.password = password 

Você pode configurar quantos repositorys quiser, adicionando mais trincas de prefixo, nome de usuário, senha, prefixando uma tag exclusiva.

Isso só funciona no Mercurial 1.3 e obviamente seu nome de usuário e senha estão em texto simples – não é bom.

2. O caminho seguro – Use o SSH para EVITAR usando senhas

O Mercurial suporta totalmente o SSH para que possamos aproveitar a capacidade do SSH de fazer login em um servidor sem uma senha – você faz uma configuração única para fornecer um certificado auto-gerado. Esta é de longe a maneira mais segura de fazer o que você quer.

Você pode encontrar mais informações sobre como configurar o login sem senha aqui

3. A extensão do chaveiro

Se você quer uma opção segura, mas não está familiarizada com o SSH, por que não tentar isso?

Dos docs …

A extensão solicita a senha HTTP no primeiro pull / push de / para determinado repository remoto (assim como é feito por padrão), mas salva a senha (codificada pela combinação de nome de usuário e url de repository remoto) no database de senha. Na próxima execução, ele verifica o nome de usuário em .hg / hgrc, depois a senha adequada no database de senhas e usa essas credenciais, se encontradas.

Há mais informações detalhadas aqui

Ninguém mencionou a extensão do chaveiro. Ele salvará o nome de usuário e a senha no chaveiro do sistema, o que é muito mais seguro do que armazenar suas senhas em um arquivo estático, como mencionado acima. Siga os passos abaixo e você deve estar pronto para ir. Eu tinha isso instalado e funcionando no Ubuntu em cerca de 2 minutos.

 >> sudo apt-get install python-pip >> sudo pip install keyring >> sudo pip install mercurial_keyring **Edit your .hgrc file to include the extension** [extensions] mercurial_keyring = 

https://www.mercurial-scm.org/wiki/KeyringExtension

Um truque simples é adicionar nome de usuário e senha ao URL de envio no arquivo .hg/hgrc seu projeto:

 [paths] default = http://username:password@mydomain.com/myproject 

(Note que desta forma você armazena a senha em texto simples)

Se você estiver trabalhando em vários projetos no mesmo domínio, talvez queira adicionar uma regra de reconfiguração em seu arquivo ~/.hgrc , para evitar repetir isso para todos os projetos:

 [rewrite] http.//mydomain.com = http://username:password@mydomain.com 

Novamente, como a senha é armazenada em texto simples, normalmente armazeno apenas meu nome de usuário.

Se você está trabalhando com o Gnome, explico como integrar o Mercurial e o Gnome Keyring aqui:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/

NINGUÉM explicou termos acima / esclarecidos para um usuário iniciante. Eles ficam confusos com os termos

.hg / hgrc – este arquivo é usado para o Repositório, no local / local de trabalho / na pasta .hg do repository atual.

~ / .hgrc – este arquivo é diferente do arquivo abaixo. este arquivo reside no diretório ~ ou home.

myremote.xxxx = ….. bb.xxxx = ……

Esta é uma das linhas na seção / diretiva [auth], enquanto usa a extensão mercurial de chaveiro. Certifique-se de que o nome do servidor que você colocou lá, corresponde ao que você usa ao fazer “hg clone”, caso contrário, o keyring dirá, o usuário não foi encontrado. bb ou myremote na linha abaixo, são “alias nome” que você deve dar ao fazer “hg clone http: /…/../ repo1 bb ou myremote” caso contrário, ele não vai funcionar ou você tem que certificar-se de seu local O arquivo .hg / hgrc do repository contém o mesmo alias, ie (o que você deu ao fazer o hg clone .. como último parâmetro).

PS os seguintes links para detalhes claros, desculpe por gramática rapidamente escrita.

ex: Se dentro ~ / .hgrc (diretório home do usuário no Linux / Unix) ou mercurial.ini no Windows no diretório home do usuário, contém, a seguinte linha e se você fizer

 `"hg clone http://.../.../reponame myremote"` 

, você nunca mais será solicitado a fornecer credenciais de usuário mais de uma vez por link de repo http. Em ~ / .hgrc em [extensões], uma linha para “mercurial_keyring =” ou “hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py”. Uma dessas linhas deve estar lá.

 [auth] myremote.schemes = http https myremote.prefix = thsusncdnvm99/hg myremote.username = c123456 

Estou tentando descobrir como definir a propriedade PREFIX para que o usuário possa clonar ou executar qualquer operação Hg sem prompts de nome de usuário / senha e sem se preocupar com o que ele mencionou no http: // …. / … para servername ao usar o link de repo Hg. Pode ser IP, servername ou FQDN do servidor

Instalação mercurial_keyring no Mac OSX usando MacPorts:

 sudo port install py-keyring sudo port install py-mercurial_keyring 

Adicione o seguinte ao ~ / .hgrc:

 # Add your username if you haven't already done so. [ui] username = email@address.com [extensions] mercurial_keyring = 

Se você está usando o TortoiseHg você tem que executar estas três etapas mostradas na captura de canvas anexada, isso adicionaria suas credenciais para o repository específico com o qual você está trabalhando.

insira a descrição da imagem aqui

Para adicionar configurações globais, você pode acessar o arquivo C: \ users \ user.name \ mercurial.ini e adicionar a seção

 [auth] bb.prefix=https://bitbucket.org/zambezia/packagemanager bb.username = $username bb.password = $password 

Espero que isto ajude.

Embora possa ou não funcionar na sua situação, achei útil gerar uma chave pública / privada usando o Pageant do Putty.

Se você também estiver trabalhando com o bitbucket (.org), ele deverá fornecer a capacidade de fornecer uma chave pública à sua conta de usuário e, em seguida, os comandos que chegarem ao repository serão protegidos automaticamente.

Se o Pageant não iniciar durante uma reboot, você poderá adicionar um atalho ao Pageant ao seu “menu Iniciar” do Windows, e o atalho pode precisar ter uma “propriedade” preenchida com a localização do seu arquivo privado (.ppk) .

Com isso, o Mercurial e seus repositorys locais precisarão ser configurados para push / pull usando o formato SSH.

Aqui estão algumas instruções detalhadas sobre o site da Atlassian para Windows ou Mac / Linux.

Você não precisa acreditar na minha palavra e não há dúvidas sobre outras maneiras de fazê-lo. Talvez estes passos descritos aqui sejam mais para você:

  1. Inicie o PuttyGen em Iniciar -> PuTTY-> PuttyGen
  2. Gere uma nova chave e salve-a como um arquivo .ppk sem uma frase secreta
  3. Use o Putty para acessar o servidor ao qual você deseja se conectar
  4. Anexar o texto da chave pública de PuttyGen ao texto de ~ / .ssh / authorized_keys
  5. Crie um atalho para o seu arquivo .ppk de Iniciar -> Putty para Iniciar -> Startup
  6. Selecione o atalho .ppk no menu Iniciar (isso acontecerá automaticamente a cada boot)
  7. Veja o ícone Pageant na bandeja do sistema? Clique com o botão direito e selecione “Nova session”
  8. Digite username @ hostname no campo “Host name”
  9. Agora você fará o login automaticamente.