Pergunta

Estou tentando clonar meu garfo pessoal no Github usando o protocolo Git+SSH com o Tortoisehg. Está me dando um erro bastante estranho. Aqui está o comando

hg clone git+ssh://git@github.com:myusername/thefork.git

Isso é depois que eu instalei o módulo Hg-Git e funciona muito bem para clonar usando a sintaxe git: //. Mas acredito que está tendo problemas com o SSH. O erro que estou recebendo é isso.

importing Hg objects into Git
[Error 2] The system cannot find the file specified

Eu tentei adicionar manualmente o comando ssh ao arquivo mercurial.ini como este

[ui]
username = email@address.com
ssh="C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -i "C:\Source\SSHPrivateKey.ppk"

Mas ainda recebo o mesmo erro. Alguma ideia?

Atualização 1

Se eu executar o mesmo comando do shell Git Bash, ele funciona muito bem. Eu entendi isso.

importing Hg objects into Git
Counting objects: 1559, done.
Compressing objects: 100% (586/586), done.
Total 1559 (delta 960), reused 1534 (delta 947)
importing Git objects into Hg
at:  0/86
updating to branch default
219 files updated, 0 files merged, 0 files removed, 0 files unresolved

Suponho que seja porque pode encontrar ssh.exe e minha chave já está importada. Eu posso adicionar o caminho do ssh.exe ao comando do Windows solicita o caminho e, em vez do erro anterior, entendo isso.

importing Hg objects into Git
Permission denied (publickey).
abort: the remote end hung up unexpectedly

Parece que está procurando especificamente para o ssh.exe, apesar de especifiquei o caminho SSH alternativo em Mercurial.ini. Mas meu palpite aqui é que essa configuração é apenas para um servidor mercurial habilitado para SSH e não se aplica ao plug-in HG-Git.

Foi útil?

Solução

Eu encontrei uma maneira de contornar isso, mas é bastante hackish. Percebi que o Processmonitor estava mostrando que procurava ssh.exe em vários caminhos diferentes, então copiei o TortoisePlink.exe na pasta Tortoisehg e o nomeei ssh.exe.

copy "C:\Program Files\TortoiseHg\TortoisePlink.exe" "C:\Program Files\TortoiseHg\ssh.exe"

Com apenas essa alteração, ainda falhará na autenticação. Você receberá uma caixa pop-up e isso.

importing Hg objects into Git
abort: the remote end hung up unexpectedly

Então você precisa se apossar concurso.exe que vem com a instalação principal de massa. Comece isso e adicione sua chave a ele. Em seguida, execute o comando clone novamente e ele deve autenticar muito bem.

Outras dicas

Depois de passar horas e horas tentando resolver isso, encontrei um guia que o explicou perfeitamente.

Este é o URL:http://www.codeproject.com/articles/376058/step-by-tep-setup-tortoisehg-for-github

Uma coisa não mencionada no guia é que a versão de 32 bits do concurso com o Tortoisehg não pode reconhecer a parte "Git@" em um URL e continua pedindo. O download da versão de 64 bits do concurso corrige esse bug.

Baixe o concurso de 64 bits:https://splunk.net/w/putty64bit

Abri um ingresso para incluir o concurso de 64 bits com o Tortoisehg:https://bitbucket.org/tortoisehg/thg/issue/2145/bundle-64-bit-pageant-with-64-bit

Eu descobri que tinha que lançar o concurso e carregar minha chave ssh e depois inicialmente clone usando a linha de comando por exemplo:

hg clone git+ssh://git@github.com/<username>/<repo>.git

Mas, a partir de então, eu poderia usar o TortoiseHG contra o Github (empurre e puxe) muito bem (embora o concurso precise estar correndo para que a autenticação funcione).

Estou usando "plink.exe" e "concurso.exe" em vez de "tortoiseplink.exe". "Pageant.exe" fornece a frase de passagem automaticamente quando "plink.exe" precisa.

Eu resolvi esse problema copiando o tortoiseplink.exe para ssh.exe. Então eu coloquei ssh.exe no meu caminho. Enquanto o concurso estiver em execução, isso funciona para mim.

Dado que eu precisava do ssh.exe no meu caminho, me pergunto se o HGGIT até lê a linha ssh =.

Isso ainda é hackish, mas um pouco menos hackish do que a técnica de @Nathan (eu não sou fã de mexer com arquivos dentro dos arquivos de programas)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top