TortoiseHg から Mercurial コマンドを作成し、ssh を使用してリモート Linux に送信する

TortoiseHg から Mercurial コマンドを作成し、ssh を使用してリモート Linux に送信する

私が使う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 サーバーがこれらのファイルを世界中に提供できるようになります。

関連情報