
私が使うTortoiseHg ワークベンチローカルの Windows マシンでリポジトリを管理するために、GUI を使用してクリックすると TortoiseHg がコマンドを作成する方法が気に入っています。
しかし、私が知っているのは TortoiseHg を使用してローカルの Windows リポジトリを管理する方法だけで、Web サーバー上にあるリモートの Unix Mercurial クライアントを管理する方法は知りません。
SSH をトンネルして Unix Web サーバーにコマンドを送信することは可能ですか? TortoiseHg を使用して Web サーバー上のリポジトリをリモートで管理したいと思います。
答え1
いいえ、これは不可能です。SSH (および HTTPS) 経由で送信できる「コマンド」は と のみhg push
ですhg pull
。
これらは実際には「コマンド」として送信されるのではなく、Mercurial は独自のプロトコルを使用して、クライアントがリモート サーバーに「この変更セットはありますか?」、「ブランチ ヘッドは何ですか?」、「このバンドルを受け入れてください!」などのいくつかのことを照会できるようにします。
SSHを使用すると、MercurialクライアントはSSHトンネルを作成し、hg serve --stdio
リモートホストで起動します。このhg serve
コマンドは、上で説明したMercurialワイヤプロトコルを話すものです。Bitbucketなどのホスティング環境はロックダウンされているため、これがのみSSH 経由で実行できるコマンドです。サーバー上で任意のコマンドを実行することは許可されません。
リモートリポジトリの管理についてはあなた自身のwebserver: SSH でログインし、Unix サーバー上に空のリポジトリを作成する必要があります。
$ hg init my-website
次に、ローカル マシンからサーバーにプッシュします。
$ hg push ssh://your-server.com/path/from/home-dir/to/my-website
ウェブサイトの管理について話しているので、次のことを付け加えるといいでしょう。
[hooks]
changegroup = hg update
リモート リポジトリのファイルに.hg/hgrc
: リポジトリにプッシュするたびに Mercurial が実行されますhg update
。つまり、作業コピーが最新のファイルで更新され、Web サーバーがこれらのファイルを世界中に提供できるようになります。