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 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...