ホーム / 機能 / コード / GitNest
GitNest:osFoundry のプライベート Git ホスティング。クローンもプッシュもそのまま
ワークスペースのリポジトリを、本物の Git として HTTPS で。トークンの管理は手元に。
GitNest は osFoundry に組み込まれた Git ホストです。ワークスペース内のすべてのリポジトリが実際の Git リモートを持ち、標準の Git クライアントから HTTPS でクローンとプッシュができます。プラグインもエクスポートも、2つ目のアカウントも要りません。認証には、自分で発行して自分で失効させるワークスペースアクセストークンを使います。クローンするリポジトリは、Web IDE が編集し Maestro が読むものと同一なので、手元での作業とワークスペース上の作業は同じ履歴になります。
要点
- 標準の Git で、ワークスペースのリポジトリを HTTPS 経由でクローンとプッシュできます。
- 認証は、自分で発行し、権限を絞り、失効させられるワークスペースアクセストークンで行います。
- リポジトリは既定でワークスペース内に限定された非公開です。
- Web IDE も同じリポジトリを見ているため、プッシュはそのままワークスペースに現れます。
- コマンドライン、IDE、CI ジョブなど、どの Git クライアントからでも使えます。
概要
GitNest は、ワークスペースに属する Git リモートです。よそでホストされたリポジトリのミラーではなく、公開オープンソース向けホスティングの代わりでもありません。ワークスペース自身のコードが置かれる場所であり、普段使っている Git からそのまま到達できます。エクスポートではなく本物の Git なので、クローン、フェッチ、ブランチ、プッシュといった通常のコマンドも、その上に構築されたツールも、変更なしで動きます。
主な機能
- Git のリファレンス実装による smart-HTTP のクローン、フェッチ、プッシュ。
- 有効期限を設定でき、ワンクリックで失効させられるユーザーごとのアクセストークン。
- ワークスペース単位の認可。トークンが届く範囲は、そのトークンが属するワークスペース内のリポジトリだけです。
- 読み取りと書き込みをリポジトリごとに設定でき、プッシュだけを拒否するトークンも作れます。
- プッシュはワークスペースに反映され、Web IDE と Maestro からもその内容が見えます。
- 公開済みバージョンは保護されます。それを書き換えるプッシュは、黙って適用されるのではなく拒否されます。
osFoundryでの手順
- アクセストークンを発行する — 設定 → リポジトリトークンを開いて発行します。トークンが表示されるのは一度きりなので、その場でコピーしてください。有効期限も設定します。期限のないトークンは、心配が終わることのないトークンです。
- クローン URL をコピーする — コードでリポジトリを開き、クローンパネルを使います。URL にはワークスペースの情報が含まれます。Git クライアントは独自ヘッダーを送れないため、アドレスだけで完結している必要があるからです。
- クローンする — その URL で git clone を実行します。Git にパスワードを聞かれたらトークンを入力してください。ユーザー名は何でも構いません。認証ヘルパーを使えば記憶させられます。
- いつもどおりコミットしてプッシュする — 普段のコマンドでブランチを切り、コミットし、プッシュします。ワークフローに osFoundry 固有の作法はありません。
- ワークスペースで確認する — プッシュはワークスペースに反映され、ブランチとそのファイルが Web IDE に表示され、Maestro からも利用できます。
他の選択肢との比較
| 項目 | osFoundry | 他の多くのツール |
|---|
| コードの置き場所 | 自分のワークスペース内にある本物の Git リモート。 | 別のホスティングアカウントを連携でつなぐ。 |
| コードの取り出し方 | git clone という標準コマンドだけ。エクスポート手順は不要。 | アーカイブをダウンロードするか、同期用のプラグインを入れる。 |
| 認証情報 | 自分で発行して失効させる、有効期限つきのワークスペーストークン。 | アカウントのパスワード、または第三者への OAuth 認可。 |
| エディタとリモート | 同じリポジトリが両方を支えるため、ずれが生じません。 | ホストされたリポジトリをエディタにミラーし、ジョブで同期を保つ。 |
活用例
- ローカル環境で作業したい開発者: ワークスペースのリポジトリをクローンし、使い慣れたエディタとツールで作業してプッシュし直します。誰も何もエクスポートしないまま、変更がワークスペース上でチームに見えます。
- CI パイプライン: ビルドジョブが、権限を絞った有効期限つきトークンでリポジトリをクローンし、テストを実行します。人間のアカウントや個人の認証情報は不要です。
- コードを公開ホスティングに置きたくないチーム: リポジトリをワークスペース内の非公開に保ちながら、通常の Git で作業します。非公開のために普段のツールを手放す必要はありません。
よくある質問
GitNest とは何ですか。
GitNest は osFoundry に組み込まれた Git ホスティングです。ワークスペース内のすべてのリポジトリに実際の Git リモートを与え、標準の Git クライアントから HTTPS でクローンとプッシュができます。
GitNest は GitHub の代わりになりますか。
なりませんし、目指してもいません。公開オープンソースのホスティングとその周囲のコミュニティは、引き続き GitHub の領分です。GitNest は、ワークスペース自身のリポジトリが置かれる場所であり、2つのシステム間でコードを移すことなく、手元でも osFoundry 上でも同じコードを扱えるようにします。
普段の Git コマンドをそのまま使えますか。
使えます。GitNest は Git 自身のリファレンス実装を用いて標準の smart-HTTP プロトコルを話すため、クローン、フェッチ、ブランチ、プッシュは他のホストと同じように動作します。
GitNest は SSH に対応していますか。
現時点では対応しておらず、GitNest は HTTPS のみです。認証には SSH 鍵ではなくワークスペースアクセストークンを使います。
認証はどうやって行いますか。
設定画面でアクセストークンを発行し、Git にパスワードを聞かれたときにそれを入力します。ユーザー名は検証されません。トークンは一度だけ表示され、有効期限を設定でき、いつでも失効させられます。
トークンを失効させると何が起きますか。
次のリクエストから、ただちに使えなくなります。すでにクローン済みのものは手元のマシンに残ります。失効が断つのは以後のアクセスであり、作業コピーを消しに行くわけではありません。
リポジトリは非公開ですか。
非公開です。リポジトリは既定でワークスペース内に限定され、トークンが届くのは、そのトークンが属するワークスペースのリポジトリだけです。
プッシュはワークスペースに反映されますか。
反映されます。プッシュが受理されると、ブランチとそのファイルがワークスペースに書き戻され、Web IDE にプッシュした内容が表示され、Maestro からも読めます。
公開済みバージョンにプッシュできますか。
できません。しかも中途半端に適用されるのではなく、事前に拒否されます。公開済みバージョンは確定した記録です。それを書き換えるプッシュがあれば、GitNest はどのブランチが原因かを示して拒否し、リポジトリには手を触れません。
CI から GitNest を使えますか。
使えます。有効期限つきのトークンを発行し、CI 側のシークレットストアに保存して、他の Git リモートと同じようにクローンしてください。
料金
リポジトリのホスティングはワークスペースに含まれており、リポジトリ単位でも本数に応じても追加料金はかかりません。クローンとプッシュの転送量は、他の帯域と同様にワークスペースの利用量として記録されます。
関連機能