本文へ移動
runlot

リポジトリ

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:+6PMLfTVpcjjLOVSWgiRI0nVQ5f9bVl0nuzcJ0EfTfE

2. リポジトリを作成する

runlot repo create app          # private by default
runlot repo create app --public # anyone can clone

runlot deploy や runlot pg が動作するのと同じ場所、つまり現在のディレクトリの runlot.json で名付けられたプロジェクトに作成されます。そのディレクトリが Git リポジトリであれば、origin は自動的に登録されます。origin がすでに存在する場合はそのまま残し、代わりに origin を新しいリポジトリに向けるコマンドが出力されます。

3. プッシュする

git push -u origin main

HTTPS 経由

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.git

HTTPS と 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	ae4bb959

clone や 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 GiBpush が拒否されます
1 回の push500 MiBpush が拒否されます
1 ファイル100 MiBpush が拒否されます
デフォルトブランチの削除—拒否されました(元に戻せません)

制限に達すると、git push が理由を表示します。

よくある問題

Permission denied (publickey) — runlot key list でキーが登録されているか確認してください。複数のキーを使い分けている場合は、使用するキーを指定します。

Host git.runlot.io
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

non-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

このページの目次