
eu usoBancada de trabalho TortoiseHgpara gerenciar repositórios em minha máquina Windows local, e gosto de como o TortoiseHg compõe os comandos com base nos cliques que faço usando a GUI.
Mas eu só sei como usar o TortoiseHg para gerenciar repositórios locais do Windows, não clientes Unix Mercurial remotos residentes em um servidor web.
É possível fazer um túnel através de SSH e enviar comandos para um servidor web Unix? Gostaria de gerenciar um repositório remotamente no meu servidor web usando o TortoiseHg.
Responder1
Não, isso não é possível: os únicos “comandos” que você pode enviar por SSH (e HTTPS) são hg push
e hg pull
.
Eles não são realmente enviados como "comandos", em vez disso, o Mercurial usa seu próprio protocolo que permite a um cliente consultar um servidor remoto por algumas coisas como "você tem este conjunto de alterações?", "quais são os chefes das filiais?", e "por favor, aceite este pacote!".
Quando você usa SSH, seu cliente Mercurial criará um túnel SSH e iniciará hg serve --stdio
no host remoto. Esse hg serve
comando é o que fala o protocolo de fio Mercurial de que falo acima. Ambientes de hospedagem como o Bitbucket são bloqueados para que este seja oapenascomando que você pode executar por SSH - eles não querem que você execute comandos arbitrários em seus servidores!
Quanto ao gerenciamento de um repositório remoto emseu próprioservidor web: Você precisa fazer login com SSH e criar um repositório vazio em seu servidor Unix:
$ hg init my-website
Então você pode enviar para o servidor a partir de sua máquina local:
$ hg push ssh://your-server.com/path/from/home-dir/to/my-website
Já que você está falando sobre gerenciamento de um site, talvez você queira adicionar
[hooks]
changegroup = hg update
para o .hg/hgrc
arquivo no repositório remoto: fará com que o Mercurial seja executado hg update
após cada envio para esse repositório. Isso significa que a cópia de trabalho será atualizada com os arquivos mais recentes e assim seu servidor web poderá servi-los para o mundo.