Repolode
littledivy

littledivy/durable-git

Cloudflare Workersまたはcelld上でセルフホストできる、各リポジトリをDurable Objectとして扱うGitサーバー。

代替できる製品:GitHub

スター
264
フォーク
13
未解決の Issue
0
最終コミット
2 か月前

これは何?

dgitはCloudflare Durable Objects上に構築されたGitサーバーです。各リポジトリは独立したオブジェクトで、Gitオブジェクトとrefsを保存する専用のSQLiteデータベースを持ち、Git smart HTTPプロトコルに対応しています。そのため、標準のgitクライアントでclone、fetch、pushできます。ファイルシステムもoriginサーバーも不要で、アクセスされないリポジトリのコストはほとんどかかりません。読み取りは公開されており、pushにはトークンが必要です。新しい名前にpushすると、リポジトリが作成されます。

このプロジェクトは、pkt-lineのフレーミング、delta解決を含むpackfileの解析、packの生成、Myers diffなど、Gitの機能をTypeScriptで実装しています。R2バケットをバインドすると、packのバイト列はR2に保存され、インデックスはSQLiteに残ります。また、フルcloneはキャッシュされ、Workerからストリーミング配信されます。shallow clone、増分fetch、強制更新にも対応しています。

組み込みのWebインターフェースはcgitのレイアウトを踏襲しており、ログ、ツリー、シンタックスハイライト付きのblob表示、blame、diff、format-patch出力、tar.gzおよびzip形式のスナップショット、Atomフィードを利用できます。また、このパッケージをライブラリとして使い、独自の認可処理やpushフックを定義することもできます。

主な機能

  • 01標準のgitクライアントを変更せずに使える、Git smart HTTPプロトコルを提供
  • 02各リポジトリを専用のDurable ObjectとSQLiteに保存
  • 03packの保存とフルcloneのキャッシュに使えるオプションのR2バケット
  • 04shallow clone、増分fetch、thin packに対応
  • 05ログ、blame、diff、スナップショットを備えたcgit風のWebインターフェースを提供
  • 06ライブラリとして利用でき、独自の認可処理やpushフックを設定可能

ユースケース

  • サーバーを管理せずに、Cloudflare Workers上で非公開のGitリポジトリをホスティングする
  • レプリケーションされたストレージを使い、celld上でGitサーバーをセルフホストする
  • 既存のアプリケーションに、独自のアクセス制御を備えたGitホスティングを追加する
  • Webインターフェースからリポジトリの履歴を閲覧し、スナップショットをダウンロードする

クイックスタート

  1. 1

    依存関係をインストールする

    npm install
  2. 2

    Worker を Cloudflare にデプロイする

    npx wrangler deploy
  3. 3

    push password をシークレットに設定する

    npx wrangler secret put GIT_TOKEN
  4. 4

    デプロイしたホストをリモートとして追加し、push する

    git remote add origin https://<your-host>/myrepo.git

使う前に知っておきたいこと

  • プルリクエストは無効です。コントリビューションはメールで git format-patch を送ってください。
  • 全履歴を含む非常に大きなクローンは Cloudflare Workers の CPU 制限を超える場合があります。最大規模のリポジトリには celld の利用をおすすめします。
  • Cloudflare Workers へのデプロイには、メモリと CPU のリクエスト上限があります。

トピック

よくある質問

durable-git とは?
Cloudflare Workersまたはcelld上でセルフホストできる、各リポジトリをDurable Objectとして扱うGitサーバー。 dgitはCloudflare Durable Objects上に構築されたGitサーバーです。各リポジトリは独立したオブジェクトで、Gitオブジェクトとrefsを保存する専用のSQLiteデータベースを持ち、Git smart HTTPプロトコルに対応しています。そのため、標準のgitクライアントでclone、fetch、pushできます。ファイルシステムもoriginサーバーも不要で、アクセスされないリポジトリのコストはほとんどかかりません。読み取りは公開されており、pushにはトークンが必要です。新しい名前にpushすると、リポジトリが作成されます。
durable-git は無料で使えますか?ライセンスは?
durable-git は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
durable-git は今もメンテナンスされていますか?
半年以内に更新あり。durable-git の最終コミットは 2026年8月21日 です。
durable-git は何に使えますか?
サーバーを管理せずに、Cloudflare Workers上で非公開のGitリポジトリをホスティングする レプリケーションされたストレージを使い、celld上でGitサーバーをセルフホストする 既存のアプリケーションに、独自のアクセス制御を備えたGitホスティングを追加する Webインターフェースからリポジトリの履歴を閲覧し、スナップショットをダウンロードする
durable-git のインストール方法は?
依存関係をインストールする: npm install Worker を Cloudflare にデプロイする: npx wrangler deploy push password をシークレットに設定する: npx wrangler secret put GIT_TOKEN デプロイしたホストをリモートとして追加し、push する: git remote add origin https://<your-host>/myrepo.git
durable-git はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/littledivy/durable-git

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト