TortoiseHG+OpenSSHでBitbucketにssh接続する。

TortoiseHG を使って Bitbucket の Mercurial リポジトリに接続するときに、OpenSSH for Windows の ssh-keygen で作った Ed25519 のキーは扱えない、みたいです。

前提条件として、Bitbucket にアカウントとリポジトリを作成し、公開鍵も登録しておきます。秘密鍵じゃなくて公開鍵なので間違わないように。

さて、最新の TortoiseHG のバージョンは 4.9.0 です。

TortoiseHG は SSH 接続する際に、付属の TortoisePlink.exe を使います。これは PuTTY の Plink.exe をベースにしているらしいです。
見ての通り、バージョンは 0.68 です。
一方、PuTTY のほうは最新バージョンは 0.71 です。PuTTY のほうでも、一応 PuTTY wish ed25519 にあるように、Ed25519 はサポートしているようです。
ただ、秘密鍵を .PPK(PuTTY形式)にしないといけないようで、そのためには puttygen.exe が必要です。ということでこちらからダウンロードします。
0.68 の puttygen.exe は、あらかじめ秘密鍵のパスフレーズを抜いておかないとインポートできませんが、最新の 0.71 はそのままでインポートできます。パスフレーズを入力してから、"Save private key" で PuTTY形式の秘密鍵を作成します。

次に ~/mercurial.ini を編集します。
[ui]
ssh = "C:\Program Files\TortoiseHg\lib\TortoisePlink.exe" -ssh -i C:\Users\chiyosuke\.ssh\id_ed25519.ppk
こんな感じで定義します。
そうしたら、hg clone ssh://hg@bitbucket.org/chiyosuke/repos みたいな感じで使えます。

次にリポジトリを作成して clone します。
まず、Bitbucket の ダッシュボードを開きます。
"+" リンクをクリックして、"CREATE" → "リポジトリ" します。
下の方に "IMPORT" というのがあるのが気になります。これは他のホスティングサイトからリポジトリをインポートするための機能のようです。
さあ、空のリポジトリ(README.mdがあるかも)ができました。
次はこれをローカルに clone します。
まずコマンドプロンプトを起動してクローンしたい場所に移動します。
次に今 Bitbucket に作成したリポジトリを開きます。
この「クローンの作成」をクリックすると、Mercurial でクローンするためのコマンドを表示してくれますので、それをコピーし、コマンドプロンプトに貼り付けて実行します。

ローカルにクローンできたら、そのリポジトリのディレクトリを開いて、.hg/hcrc を編集します。以下は ~/.config をリポジトリに登録してクローンしたときの設定です。
--- C:/Users/chiyosuke/.config/.hg/hgrc~ Sun Apr  7 07:53:53 2019
+++ C:/Users/chiyosuke/.config/.hg/hgrc Sun Apr  7 08:42:07 2019
@@ -1,6 +1,8 @@
 # example repository config (see 'hg help config' for more info)
 [paths]
 default = ssh://hg@bitbucket.org/chiyosuke/.config
+default:pushurl = ssh://hg@bitbucket.org/chiyosuke/.config
+
 
 # path aliases to other clones of this repo in URLs or filesystem paths
 # (see 'hg help config.paths' for more info)
@@ -11,4 +13,22 @@
 
 [ui]
 # name and email (local to this repository, optional), e.g.
-# username = Jane Doe <jdoe@example.com>
+merge = winmergeu
+editor = nvim
+username = chiyosuke
+askusername = True
+ssh = "C:\Program Files\TortoiseHg\lib\TortoisePlink.exe" -ssh -i C:\Users\chiyosuke\.ssh\id_ed25519.ppk
+
+[tortoisehg]
+ui.language = ja
+vdiff = winmergeu
+editor = nvim
+shell = powershell
+summarylen = 80
+closeci = False
+confirmdeletefiles = True
+
+[extensions]
+win32mbcs = 
+mq = 
ここまでやったらあとは通常通り。ファイルを作成して、add して、commit して、push します。
TortoiseHG では push は Synchronize というメニューから呼び出されるので、push を探しても見つかりません。さらに Synchronize はリポジトリのトップディレクトリでしか現れませんので、ないよないよと探さないように。

一方、すでにローカルにあるリポジトリを Bitbucket に登録して使う方法です。Push versioned code to an empty repositoryの翻訳です。
---
存在するリポジトリを Bitbucket の空のプロジェクトにアップロードできます。こうすることで、Bitbucketはコミット履歴を管理するようになります。
もしまだ Bitbucket リポジトリを持っていないなら、最初に Bitbucket にリポジトリを作成してください。
  1. 最初の設定ファイルを編集します。
    (リポジトリ)/.hg/hgrc を開き、作成したリポジトリの「クローンの作成」で表示される URL をコピーして貼り付けます。
  2. コマンドプロンプトでローカルリポジトリのルートディレクトリに移動します。
  3. hg push します。
---
ということのようです。

0 件のコメント:

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...