Craft your forge, Build your project, Grow your community freely

GitRoot

GitRootは、小さくてもパワフルなGitフォージです。1つのバイナリをダウンロードして起動するだけで、以下のような機能を持つフォージが利用できます。

  • gitリポジトリの作成
  • どのリポジトリに誰がアクセスできるかの管理

それだけです。

プラグインをインストールすると、以下のことが可能になります。

  • 課題、ロードマップ、スプリント、マイルストーンなどの作成
  • それらをボードで表示
  • ブランチのレビュー/マージ(GitRootではgraftsと呼ばれる)
  • それらすべてやその他多くのものをWebインターフェースで表示

これらのプラグインはすべて完全に独立しています。はい、Webインターフェースなしでボードを利用できます。どのように? See raw GitRoot issues board をご覧ください。ぜひお試しいただき、その魅力をご体感ください。

もっと欲しいですか? ご自身でプラグインを構築してください!

なぜこれを作っているのか?

私のプロジェクトでやりたいことを実現できるツールが見つからなかったため、GitRootを構築しています。ただし、あなたはご自身のプロジェクトのために、私の考える完璧なプロジェクトとは異なるものを作りたいと思うかもしれません。

すべてのプロジェクトはユニークです。だからこそ、各自のプロジェクトに合わせてフォージを自由にカスタマイズできるべきではないでしょうか?

そこで、私のフォージ開発では以下のルールに従うようにしています。

開発者として、私は以下を望みます。

  • コード、課題、(pull|merge)-request、ボードなど、すべてのデータを含むリポジトリ
  • プロジェクトを推進するために必要なすべて:ランディングページ、翻訳、チケット管理、フォーラム
  • プロジェクトを新しいサーバーフォージに移行する能力:移行スクリプト不要、データの損失なし、帰属情報の損失なし

開発者として、私は独自のプロジェクトに合わせて作られたフォージを望みます。

開発者として、私は以下を望みません。

  • データを管理するためにブラウザを開くこと:(pull|merge)-request、課題
  • プロジェクトの最初の表現がファイルとディレクトリのリストであること
  • 私のフォージがワークフローの課題を選択すること:スプリント、マイルストーン、エピック、ユーザーストーリーの定義
  • 誰が何をできるかを設定するための100個のメニュー

開発者として、私はプロジェクトを管理するための複雑なフォージを望みません。

管理者として、私は以下を望みます。

  • 簡単にデプロイできるフォージ:依存関係なし、データベースなし
  • ユーザーができることを設定できること
  • ユーザーが望むことをリクエストできること:プロジェクトや機能の作成やアクセス権のためにメールやチャットで連絡する必要がない

管理者として、私はインストールとメンテナンスが簡単なフォージを望みます。

管理者として、私は以下を望みません。

  • フォージのアップグレードに頭を悩ませること
  • 自分のデータ(またはユーザーデータ)を誰かに提供すること
  • 大規模な事業者がいつでもフォージをひっくり返せるような依存関係を持つこと

管理者として、私は誰にも依存したくありません。

私と同じような方なら、GitRootを気に入っていただけるでしょう。

まだ準備中ですが、特にご協力いただければ実現します。

どのように動作するのか?

GitRootでは、すべてのデータがデータベースやgitツリー内の隠しblobではなく、gitに保存されます。すべてがコードの横にあるプレーンファイルに保存されます。

誰もが書き込むべきでないファイルに書き込まないようにするにはどうすればよいでしょうか? ブランチで制限します。 すべてのGitRootリポジトリには .gitroot/users.yml ファイルが付属しています。このファイルは、誰がどこに書き込めるかをGitRootに指示します。

最初は、あなただけが default branch にアクセスできます。他の誰かがこのブランチにプッシュしようとすると、GitRootはその変更を拒否します。

ただし、誰でもブランチを作成できます。ブランチを作成してプッシュすると、GitRootはそのブランチに対する権限をそのユーザーに付与します。つまり、他の誰もそれを変更できなくなります。

.gitroot/users.yml を編集するか、ユーザーが自身を追加したブランチをマージすることでユーザーを追加すると、そのユーザーは default branch にプッシュできるようになります。

GitRootのすべての機能はこの概念を中心に構成されています。つまり、誰でもファイルを読んで変更でき、ローカルまたは新しいブランチで行えます。ただし、所有者のみが default branch にマージでき、これはリポジトリの現在の状態を表します。

フォージはルートリポジトリによって管理されるため、この概念により、独自のフォージ上のすべてを管理できます。リポジトリは、ルートリポジトリの default branch.gitroot/repositories.yml の変更を追加(またはマージ)すると作成されます。

詳細は documentation をご覧ください。

いつ利用可能になるのか?

GitRootは現在 alpha バージョンです。ぜひお試しいただきたいですが、本番環境での使用はまだお勧めしません

GitRootでできること:

  • リポジトリの作成/削除
  • ssh経由でのgitコマンドの受け入れ
  • ユーザーの管理(リポジトリ/ブランチレベルでどこに書き込めるか)
  • プラグインのインストール
  • リポジトリへのプラグインの有効化
  • インストール時にworktree上でプラグインを実行
  • インストール後のコミットごとにdiff上でプラグインを実行
  • httpによるリポジトリの視覚化

バージョン1.0までに実現したいこと:

  • GitRootとプラグインの更新
  • ユーザーの管理(ファイルレベルでどこに書き込めるか)
  • http経由でのgitコマンドの受け入れ
  • グループとサブグループでのリポジトリの管理
  • プラグインAPIの安定化

プロジェクトはどこにあるのか?

実は、今このプロジェクトにいます。はい、これがGitRootです!

GitRootのコードをホストしているGitRootのインスタンスにいます。残念ながら、このインスタンスはGitRoot専用です。

ご自身のプロジェクトでGitRootを試したい場合は、the documentation をお読みください。

貢献するには?

必要な情報はすべて the documentation にあります。GitRoot自体がGitRootリポジトリであるため、貢献できるはずです。

このインスタンスでは、いくつかのプラグインを使用しています。たとえば、コードの一部をdefault branchに組み込む方法を管理する grafter プラグインです。したがって、その仕組みを理解するために the contributing を必ずお読みください。

そして、GitRootはすべてのデータをgitに保存するため、(コード、課題、翻訳など)このプロジェクトに貢献するには、gitの使い方を知る必要があります。将来的には、ブラウザから直接 git commitgit push コマンドを実行できるようにし、誰でも参加できるようにしたいと考えています。