11# bit-relay 利用ガイド
22
3- bit-relay を使ったリポジトリ共有・issue 管理・コラボレーションのステップバイステップガイドです。Git の基本知識を前提としています。
3+ bit-relay を使ったリポジトリ共有・issue 管理・コラボレーションのガイドです。Git の基本知識を前提とします。
4+
5+ ## インストール
6+
7+ ``` bash
8+ # シェルスクリプト(Mac/Linux)
9+ curl -fsSL https://raw.githubusercontent.com/mizchi/bit-vcs/main/install.sh | bash
10+
11+ # MoonBit パッケージマネージャ
12+ moon install mizchi/bit/cmd/bit
13+ ```
14+
15+ ``` bash
16+ bit --version
17+ ```
18+
19+ ## クイックスタート
20+
21+ ### リポジトリを作って issue を共有する
22+
23+ ``` bash
24+ # リポジトリ作成
25+ mkdir my-project && cd my-project
26+ bit init
27+ echo " # My Project" > README.md
28+ bit add . && bit commit -m " initial commit"
29+
30+ # issue トラッキングを初期化
31+ bit issue init
32+
33+ # issue を作成
34+ bit issue create -t " ログインページでクラッシュする" -b " 特殊文字入力時に発生"
35+
36+ # relay に issue を push
37+ bit relay sync push relay+https://bit-relay.mizchi.workers.dev
38+ ```
39+
40+ ### リポジトリを relay 経由で公開する
41+
42+ ``` bash
43+ bit relay serve relay+https://bit-relay.mizchi.workers.dev
44+ # => Clone URL: relay+https://bit-relay.mizchi.workers.dev/AbCdEfGh
45+ ```
46+
47+ ### 相手が clone して issue を取得する
48+
49+ ``` bash
50+ bit clone relay+https://bit-relay.mizchi.workers.dev/AbCdEfGh
51+ cd AbCdEfGh
52+ bit issue init
53+ bit relay sync fetch relay+https://bit-relay.mizchi.workers.dev
54+ bit issue list
55+ ```
56+
57+ これだけで、GitHub なしにリポジトリと issue を共有できる。
458
559## Why bit
660
@@ -26,25 +80,23 @@ bit + bit-relay は P2P のリレーサーバーとして実装されている
2680
2781## 主要な概念
2882
29- bit は Git にプラットフォーム非依存のコラボレーション機能を追加しています。ワークフローに入る前に、通常の Git + GitHub との違いを理解しておきましょう。
30-
3183### bit — Git 実装
3284
33- bit は MoonBit で書かれた Git 実装です 。一部の未サポート機能(例: ` --object-hash=sha256 ` )を除き、Git と互換性があります 。既存の Git リポジトリをそのまま bit で扱え、その逆も可能です 。
85+ bit は MoonBit で書かれた Git 実装 。一部の未サポート機能(例: ` --object-hash=sha256 ` )を除き、Git と互換 。既存の Git リポジトリをそのまま bit で扱えるし、その逆も可能 。
3486
3587### hub — 分散型の Issue/PR 管理
3688
37- GitHub のワークフローでは issue や PR は GitHub サーバー上に存在します 。bit では、 ** リポジトリ内部** に Git notes(` refs/notes/bit-hub ` )として保存されます。これにより:
89+ GitHub では issue や PR は GitHub サーバー上にある 。bit では ** リポジトリ内部** に Git notes(` refs/notes/bit-hub ` )として保存する。
3890
39- - issue や PR がリポジトリデータの一部となり 、特定のホスティングに依存しない
91+ - issue/ PR がリポジトリデータの一部になり 、特定のホスティングに依存しない
4092- 中央サーバーなしにピア間で同期できる
41- - ` bit issue init ` で任意の git リポジトリにこのメタデータストアを初期化できる
93+ - ` bit issue init ` で任意の git リポジトリに初期化できる
4294
4395### relay — 共有のためのリレーサーバー
4496
45- bit-relay は 2 つの問題を解決する軽量リレーサーバーです:
97+ bit-relay は 2 つの問題を解決する軽量リレーサーバー。
4698
47- 1 . ** NAT/ファイアウォール越しのリポジトリ共有** : ` bit relay serve ` でローカルリポジトリを relay 経由で公開し、他者が ` bit clone ` できる — ポート開放不要
99+ 1 . ** NAT/ファイアウォール越しのリポジトリ共有** : ` bit relay serve ` でローカルリポジトリを relay 経由で公開し、他者が ` bit clone ` できる。 ポート開放不要
481002 . ** hub メタデータの同期** : ` bit relay sync push/fetch ` で issue/PR を relay 経由で配信・取得
49101
50102```
@@ -55,53 +107,30 @@ bit-relay は 2 つの問題を解決する軽量リレーサーバーです:
55107└──────────┘ └───────────┘
56108```
57109
58- コード(blob/tree/commit)は ` serve ` /` clone ` で転送されます。 hub メタデータ(issue/PR)は ` sync push ` /` sync fetch ` で転送されます。これらは独立した操作です 。
110+ コード(blob/tree/commit)は ` serve ` /` clone ` で、 hub メタデータ(issue/PR)は ` sync push ` /` sync fetch ` で転送する。これらは独立した操作 。
59111
60- デフォルトの relay URL は本プロジェクトからデプロイされた公開インスタンス (` bit-relay.mizchi.workers.dev ` )を指します。独自にデプロイすることも可能です — 詳細は [ Hosting bit-relay] ( ./host-bit-relay.md ) を参照してください 。
112+ デフォルトの relay は本プロジェクトからデプロイした公開インスタンス (` bit-relay.mizchi.workers.dev ` )を使う。独自にデプロイすることもできる。 詳細は [ Hosting bit-relay] ( ./host-bit-relay.md ) を参照 。
61113
62114### sender — あなたの識別子
63115
64- ` sender ` は relay 上でのあなたの識別名です (例: ` alice ` )。Ed25519 署名鍵と組み合わせることで、メッセージの発行者を証明します 。GitHub 検証を行うと sender 名が GitHub ユーザー名と紐付き、` alice/my-repo ` のような名前付きセッションが使えるようになります 。
116+ ` sender ` は relay 上での識別名 (例: ` alice ` )。Ed25519 署名鍵と組み合わせて、メッセージの発行者を証明する 。GitHub 検証を行うと sender 名が GitHub ユーザー名と紐付き、` alice/my-repo ` のような名前付きセッションが使える 。
65117
66118### session — 一時的な relay エンドポイント
67119
68- ` bit relay serve ` を実行すると、relay に** セッション** が作成されます。セッションはランダム ID(例: ` AbCdEfGh ` )または名前付きパス(例: ` alice/my-repo ` )で識別される一時的なエンドポイントです。` serve ` コマンドの実行中のみ有効です。
69-
70- ## 前提条件
120+ ` bit relay serve ` を実行すると、relay にセッションが作られる。セッションはランダム ID(例: ` AbCdEfGh ` )か名前付きパス(例: ` alice/my-repo ` )で識別される一時的なエンドポイント。` serve ` コマンドの実行中のみ有効。
71121
72- - ** bit CLI** がインストール済み:
73- ``` bash
74- # シェルスクリプトでインストール(Mac/Linux)
75- curl -fsSL https://raw.githubusercontent.com/mizchi/bit-vcs/main/install.sh | bash
76-
77- # または MoonBit パッケージマネージャでインストール
78- moon install mizchi/bit/cmd/bit
79- ```
80- - 稼働中の ** bit-relay** サーバー URL(例: ` relay+https://bit-relay.mizchi.workers.dev ` )
81- - (任意)署名付き publish 用の ** Ed25519 署名鍵**
82-
83- セットアップの確認:
84-
85- ``` bash
86- bit --version
87- curl https://bit-relay.mizchi.workers.dev/health
88- # => {"status":"ok","service":"bit-relay"}
89- ```
90-
91- ## 1. 環境設定
122+ ## 詳細設定
92123
93124### 環境変数
94125
95- relay URL と sender ID を環境変数で設定します:
96-
97126``` bash
98127# relay URL(serve/sync コマンドのデフォルト値)
99128export BIT_RELAY_URL=relay+https://bit-relay.mizchi.workers.dev
100129
101- # sender ID(あなたの識別名)
130+ # sender ID
102131export BIT_RELAY_SENDER=alice
103132
104- # (任意)署名鍵ファイルのパス
133+ # 署名鍵ファイルのパス (任意)
105134export BIT_RELAY_SIGN_PRIVATE_KEY_FILE=~ /.config/bit/relay-key.pem
106135```
107136
@@ -116,106 +145,33 @@ openssl pkey -in ~/.config/bit/relay-key.pem -pubout -outform DER \
116145 | base64 | tr ' +/' ' -_' | tr -d ' ='
117146```
118147
119- ## 2. GitHub ユーザー名検証
148+ ### GitHub ユーザー名検証
120149
121- relay が署名を要求する場合、 署名鍵を GitHub アカウントと紐付けることで本人確認ができます 。Ed25519 鍵と GitHub SSH 鍵の照合により身元を証明します 。
150+ 署名鍵を GitHub アカウントと紐付けて本人確認できる 。Ed25519 鍵と GitHub SSH 鍵を照合する仕組み 。
122151
123152``` bash
124153# 鍵を登録し GitHub SSH 鍵と照合
125154# (BIT_RELAY_SENDER と BIT_RELAY_SIGN_PRIVATE_KEY_FILE の設定が必要)
126155bit relay sync push relay+https://bit-relay.mizchi.workers.dev
127156```
128157
129- 検証完了後、relay セッションでランダム ID の代わりに名前付きパス(例: ` alice/my-repo ` )が使えるようになります。
130-
131- ## 3. リポジトリの初期化
158+ 検証が通ると、ランダム ID の代わりに ` alice/my-repo ` のような名前付きセッションが使える。
132159
133- git リポジトリを作成し、hub メタデータを初期化します:
134-
135- ``` bash
136- # リポジトリを新規作成
137- mkdir my-project && cd my-project
138- bit init
139- echo " # My Project" > README.md
140- bit add .
141- bit commit -m " initial commit"
142-
143- # issue/PR トラッキングを初期化
144- bit issue init
145- ```
146-
147- ## 4. issue の作成
148-
149- issue は対処すべき問題やタスクを宣言するものです:
150-
151- ``` bash
152- # issue を作成(解決策ではなく、問題を記述する)
153- bit issue create --title " ログインページで特殊文字入力時にクラッシュする" \
154- --body " パスワード欄に特殊文字を入力するとクラッシュが発生する"
155-
156- # issue 一覧の確認
157- bit issue list
158- ```
159-
160- ## 5. hub データを relay に push
161-
162- ローカルの hub メタデータ(issue, PR, note)を relay サーバーに送信します:
163-
164- ``` bash
165- bit relay sync push relay+https://bit-relay.mizchi.workers.dev
166- ```
167-
168- ## 6. relay 経由でリポジトリを公開
169-
170- リポジトリを relay 経由でリモート clone 可能にします:
171-
172- ``` bash
173- bit relay serve relay+https://bit-relay.mizchi.workers.dev
174- ```
175-
176- 出力:
177-
178- ```
179- Session registered: abc123
180- Clone URL: relay+https://bit-relay.mizchi.workers.dev/abc123
181- ```
182-
183- clone URL を共同作業者に共有してください。コマンドが実行中の間、セッションは有効です。
184-
185- ### オプション
160+ ### relay serve のオプション
186161
187162| オプション | 説明 |
188163| -----------| ------|
189164| ` --allow-remote-push ` | リモートからの push を受け付ける(` refs/relay/incoming/ ` に保存) |
190165| ` --auto-fetch ` | feature broadcast 検知時に自動 fetch |
191166| ` --repo <name> ` | リポジトリ名を指定(名前付きセッションを有効化) |
192167
193- ## 7. relay から clone
194-
195- 共同作業者は公開されたリポジトリを clone できます:
168+ ### relay URL 形式
196169
197- ``` bash
198- bit clone relay+https://bit-relay.mizchi.workers.dev/abc123
199- cd abc123
200- ```
201-
202- ## 8. relay から hub データを取得
203-
204- clone 後、relay から hub メタデータ(issue, PR)を取得します:
205-
206- ``` bash
207- bit relay sync fetch relay+https://bit-relay.mizchi.workers.dev
208- ```
209-
210- 取得後の確認:
211-
212- ``` bash
213- # issue 一覧
214- bit issue list
215-
216- # PR 一覧
217- bit pr list
218- ```
170+ | 形式 | 動作 |
171+ | ------| ------|
172+ | ` relay+https://host ` | relay API を直接使用(TLS) |
173+ | ` relay+http://host ` | relay API を直接使用(非 TLS、ローカル開発用) |
174+ | ` https://host/repo.git ` | smart-http を試行、404 時に relay fallback |
219175
220176## フルワークフロー: Alice と Bob
221177
@@ -259,19 +215,11 @@ bit issue list
259215bit pr list
260216```
261217
262- ## relay URL 形式
263-
264- | 形式 | 動作 |
265- | ------| ------|
266- | ` relay+https://host ` | relay API を直接使用(TLS) |
267- | ` relay+http://host ` | relay API を直接使用(非 TLS、ローカル開発用) |
268- | ` https://host/repo.git ` | smart-http を試行、404 時に relay fallback |
269-
270218## bithub — bit の Web UI
271219
272- [ bithub] ( https://github.com/bit-vcs/bithub ) は bit と連携して GitHub のような UI を提供する Web サーバーです。現在開発中です 。
220+ [ bithub] ( https://github.com/bit-vcs/bithub ) は bit と連携して GitHub のような UI を提供する Web サーバー。現在開発中 。
273221
274- - 馴染みのある Web インターフェースでリポジトリを閲覧(` /blob/<path> ` 、` /issues ` など)
222+ - Web インターフェースでリポジトリを閲覧(` /blob/<path> ` 、` /issues ` など)
275223- bit-relay 経由で同期された issue を表示
276224- relay を通じて他の bithub ノードを発見(` /relay ` )
277225- Cloudflare Workers またはローカルサーバーとして動作
@@ -291,6 +239,6 @@ bit pr list
291239
292240## トラブルシューティング
293241
294- - ** "session not found"** : ホスト側の ` bit relay serve ` が停止した可能性があります。ホストに再起動を依頼してください 。
295- - ** 署名エラー** : ` BIT_RELAY_SENDER ` と ` BIT_RELAY_SIGN_PRIVATE_KEY_FILE ` が設定されているか確認するか、 ` RELAY_REQUIRE_SIGNATURE=false ` で起動した relay を使用してください 。
296- - ** 接続拒否** : relay URL が正しいか、サーバーが起動しているか確認してください (` curl <relay-url>/health ` )。
242+ - ** "session not found"** : ホスト側の ` bit relay serve ` が停止している可能性がある。ホストに再起動を依頼する 。
243+ - ** 署名エラー** : ` BIT_RELAY_SENDER ` と ` BIT_RELAY_SIGN_PRIVATE_KEY_FILE ` が正しく設定されているか確認する。テスト時は ` RELAY_REQUIRE_SIGNATURE=false ` で起動した relay を使う 。
244+ - ** 接続拒否** : relay URL が正しいか、サーバーが起動しているか確認する (` curl <relay-url>/health ` )。
0 commit comments