リポジトリ
runlot 自身がホストする Git リポジトリです。clone・push はこちらのドメインに対して行い、アクセスは組織のロールに従います。
runlot は Git リポジトリをホストします。これは GitHub 連携ではありません。git clone と git push はこちらのアドレスと通信します。
cd my-project # the project directory, where runlot.json lives
runlot repo create app
# my-org/my-project/app created
# origin registered: [email protected]:my-org/my-project/app.git
git push -u origin mainリポジトリはプロジェクトに属します。だからこそアドレスは <org>/<project>/<repo> という 3 つの部分で構成されており、1 つのプロジェクトが複数のリポジトリを持てるのです — アプリと API、フロントエンドと worker のように。名前はプロジェクト内でのみ一意であれば十分です。読み書きの権限は組織のロールに従います。
はじめかた
1. 公開鍵を登録する
runlot key add
# registered ~/.ssh/id_ed25519.pub (ssh-ed25519, SHA256:…)引数を指定しない場合、~/.ssh 配下のデフォルトの鍵を探します。別の鍵を選ぶにはパスを渡します: runlot key add ~/.ssh/work.pub。
ここでは鍵そのものが ID です。そのため、同じ公開鍵を 2 人が登録することはできません。 登録済みの鍵を再登録しようとすると拒否されます。
初回接続時のフィンガープリント確認
ssh が表示するホストのフィンガープリントがこれらと異なる場合は、続行しないでください。
ed25519 SHA256:C7pTddRdCM1JuEbdi+73oBN+sNAZhb1H5t3CJSlyPj4
rsa SHA256:+6PMLfTVpcjjLOVSWgiRI0nVQ5f9bVl0nuzcJ0EfTfE2. リポジトリを作成する
runlot repo create app # private by default
runlot repo create app --public # anyone can clonerunlot deploy や runlot pg が動作するのと同じ場所、つまり現在のディレクトリの runlot.json で名付けられたプロジェクトに作成されます。そのディレクトリが Git リポジトリであれば、origin は自動的に登録されます。origin がすでに存在する場合はそのまま残し、代わりに origin を新しいリポジトリに向けるコマンドが出力されます。
3. プッシュする
git push -u origin mainHTTPS 経由
SSH の代わりに HTTPS を使うこともできます。トークンを作成し、git がパスワードを尋ねてきたときにそれを貼り付けてください(ユーザー名は何でも構いません)。
runlot token create laptop # read and write
runlot token create ci --read-only # clone only
git clone https://git.runlot.io/my-org/my-project/app.gitHTTPS と SSH は同じアドレス git.runlot.io で、SSH は通常のポート 22 を使います。~/.ssh/config に追加するものはありません。
トークンの値が表示されるのは作成時に一度だけです。そのときに保存してください — 後から読み返すことはできません。紛失した場合は runlot token revoke <id> で失効させ、新しく作成してください。
読み取り専用トークンでの push は理由とともに拒否されます。リポジトリが存在しないように見せかけることはありません。
コマンド
| コマンド | 役割 |
|---|---|
runlot repo create <name> [dir] | リポジトリを作成し、origin を登録します(--public) |
runlot repo list | リポジトリを一覧表示します(--json) |
runlot repo rename <old> <new> | 名前を変更します(管理者) |
runlot repo visibility <name> <public|private> | 公開範囲を変更します(管理者) |
runlot repo delete <name> | 削除します(管理者) |
runlot repo history <name> | 誰がどのブランチをどのように動かしたか |
runlot key add [path] / runlot key list / runlot key rm <id> | SSH 公開鍵 |
runlot token create <name> / runlot token list / runlot token revoke <id> | HTTPS 用のトークン |
runlot repo はプロジェクトを対象とします。プロジェクトディレクトリの外では --org と --project の両方を指定してください。key と token はプロジェクトではなくあなた個人に属するもので、どこからでも使用できます。
誰が何をできるか
| 非公開リポジトリ | 公開リポジトリ | |
|---|---|---|
| 組織の管理者 | 読み取り、書き込み、設定 | 読み取り、書き込み、設定 |
| 組織のメンバー | 読み取り、書き込み | 読み取り、書き込み |
| 組織の閲覧者 | 読み取り | 読み取り |
| 別の組織のユーザー | — | 読み取り |
| サインインしていない | — | 読み取り |
権限の変更は 10 秒以内に反映されます。公開鍵の削除やトークンの失効は即座に反映されます — そのためにこれらのボタンが存在します。
履歴
push のたびに 1 行の記録が残ります。force-push で失われたコミットは、これを使って見つけられます。
runlot repo history app
# 2026-09-09T07:38:30Z created refs/heads/main ae4bb959clone や fetch は記録されません。
できること・まだできないこと
対応済み: clone、fetch、push、ブランチ、タグ、force-push、ブランチの削除。
未対応
- Shallow clone(
--depth 1)には対応していません。これは CI でよく使われる手法で、 支障になることがあります。 - プルリクエスト・issue・コードレビュー・CI はありません。これは Git ホスティングのみです。
- push だけではデプロイされません。 デプロイは
runlot deployか、管理者が ブランチに対してオンにした push でデプロイ で行います。 - バックアップは同じマシン上にあります。誤って削除したリポジトリは 復元できますが、マシンが失われるとバックアップも一緒に失われます。 今日あなたを守っているのは Git そのものです — 各開発者のマシンに完全なコピーがあるからです。
Web での閲覧
ダッシュボードでプロジェクトを開き、Repositories タブを使用します。リポジトリの作成、ブランチやタグの切り替え、ファイルツリー・ファイルの内容・コミット一覧・ref の履歴(誰がどのブランチをどのように動かしたか)の閲覧ができます。管理者は Settings タブから、リポジトリの名前変更、デフォルトブランチや公開範囲の変更、削除ができます。Clone ボタンから HTTPS と SSH のアドレスを取得できます。
Web ビューは制限を最初に示します。1 MiB を超えるファイルとバイナリファイルはプレビューできず、ディレクトリは最初の 1,000 件のみを表示します。それ以上を読むにはリポジトリを clone してください。
制限
| 項目 | 値 | 超過した場合 |
|---|---|---|
| リポジトリのサイズ | 1 GiB | push が拒否されます |
| 1 回の push | 500 MiB | push が拒否されます |
| 1 ファイル | 100 MiB | push が拒否されます |
| デフォルトブランチの削除 | — | 拒否されました(元に戻せません) |
制限に達すると、git push が理由を表示します。
よくある問題
Permission denied (publickey) — runlot key list でキーが登録されているか確認してください。複数のキーを使い分けている場合は、使用するキーを指定します。
Host git.runlot.io
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yesnon-fast-forward (fetch first) — その間に誰かがプッシュしています。git pull --rebase を実行してから再度プッシュするか、本当に上書きしたい場合は git push --force を使用してください。
古い2部構成のアドレスへのプッシュ・クローン — アドレスは現在 <org>/<project>/<repo> の3部構成になっています。SSH は修正方法を教えてくれますが、HTTPS はリポジトリが見つからないと報告します。リモートを新しいアドレスに向けてください。
runlot repo list # shows the current address
git remote set-url origin [email protected]:my-org/my-project/my-app.gitリポジトリ名を変更した場合 — 登録したリモートを更新します:
git remote set-url origin [email protected]:my-org/my-project/new-name.git