打造您的託管平台,建置您的專案,自由發展您的社群

GitRoot

GitRoot 是一個小巧但功能強大的 Git 託管平台。下載一個二進位檔、啟動它,您就擁有一個可以執行下列功能的託管平台:

  • 建立 Git 儲存庫
  • 管理誰可以存取哪些儲存庫

僅此而已,別無其他。

安裝外掛後,您將能夠:

  • 建立問題、路線圖、衝刺、里程碑…
  • 以看板呈現它們
  • 審查/合併分支(在 GitRoot 中稱為 grafts)
  • 在網頁介面中呈現所有上述功能以及更多

所有這些外掛都是完全獨立的。是的,您可以擁有看板而不需要網頁介面。如何做到?查看原始 GitRoot 問題看板,親自試用後您就會愛上它。

想要更多功能?建立您自己的外掛!

我為什麼要做這個?

我建立 GitRoot 是因為我找不到任何工具能讓我為我的專案做我想做的事。但同時,您可能也想為自己的專案做不同的事情,做不同於我心中完美專案的想法。

每個專案都是獨一無二的,那麼為什麼我們不能自由修改我們的託管平台以符合我們自己的專案呢?

因此,我在開發我的託管平台時試圖遵循這些規則:

身為開發者,我想要:

  • 一個包含我所有資料的儲存庫:程式碼、問題、(pull|merge)-request、看板
  • 推廣我的專案所需的一切:登陸頁面、翻譯、問題追蹤、論壇
  • 將我的專案遷移到新的伺服器託管平台的能力:無需遷移腳本、不遺失資料、不遺失歸屬

身為開發者,我想要擁有一個為我獨特專案量身打造的託管平台。

身為開發者,我不想要:

  • 開啟瀏覽器來管理我的資料:(pull|merge)-request、問題
  • 我的專案的第一個呈現方式是一份檔案和目錄清單
  • 我的託管平台選擇我的問題工作流程:什麼是衝刺、里程碑、史詩或使用者故事?
  • 有 100 個選單來設定誰可以做什麼

身為開發者,我不想要一個複雜的託管平台來管理我的專案。

身為管理員,我想要:

  • 容易部署的託管平台:無依賴、無資料庫
  • 設定我的使用者可以做什麼
  • 我的使用者可以請求他們想要的東西:無需透過電子郵件/聊天來建立或存取專案或功能

身為管理員,我想要一個容易安裝和維護的託管平台。

身為管理員,我不想要:

  • 升級我的託管平台時遇到麻煩
  • 將我的資料(或使用者資料)交給其他人
  • 依賴可能隨時推翻其託管平台的大型業者

身為管理員,我不想依賴任何人。

如果您和我一樣,您會愛上 GitRoot。

它還沒準備好,但它會的,尤其是如果您能給我幫忙的話。

它是如何運作的?

在 GitRoot 中,一切都儲存在 Git 中,而不是資料庫,也不是 Git 樹狀結構中隱藏的 blob。一切都以純文字檔案的形式儲存在您的程式碼旁邊。

您如何確定沒有人在寫入他們不應該寫入的檔案?依分支限制。每個 GitRoot 儲存庫都附帶一個 .gitroot/users.yml 檔案。這個檔案告訴 GitRoot 誰可以在哪裡寫入。

最初,只有您可以存取您的預設分支。如果其他人嘗試推送至此分支,GitRoot 將拒絕其修改。

然而,每個人都可以建立分支。當建立並推送分支時,GitRoot 會為該使用者新增對該分支的權限。這意味著其他人將無法修改它。

如果您透過編輯 .gitroot/users.yml 或合併使用者自行新增的分支來新增使用者,該使用者將能夠推送至預設分支

GitRoot 的所有功能都圍繞這個概念運作。這意味著每個人都可以讀取檔案並修改它們,無論是在本機還是新分支中。但只有擁有者可以將它們合併到代表儲存庫目前狀態的預設分支

由於您的託管平台是由根儲存庫管理的,這個概念允許您自行管理託管平台上的一切:當您在根儲存庫的預設分支中新增(或合併).gitroot/repositories.yml 的變更時,就會建立儲存庫。

更多詳細資訊請參閱文件

什麼時候會推出?

GitRoot 目前處於Alpha版本。您可以自由嘗試,但請勿用於正式環境

GitRoot 可以:

  • 建立/刪除儲存庫
  • 透過 SSH 接受 Git 指令
  • 管理使用者(誰可以在儲存庫/分支層級寫入)
  • 安裝外掛
  • 為儲存庫啟用外掛
  • 在安裝時在 worktree 上執行外掛
  • 在安裝後的每次提交中對 diff 執行外掛
  • 透過 HTTP 視覺化儲存庫

我在 1.0 版之前想要做的事:

  • 更新 GitRoot 和外掛
  • 管理使用者(誰可以在檔案層級寫入)
  • 透過 HTTP 接受 Git 指令
  • 管理群組和子群組中的儲存庫
  • 穩定外掛 API

專案在哪裡?

實際上,您目前就在這個專案上。是的,這就是 GitRoot!

您目前使用的是託管 GitRoot 程式碼的 GitRoot 實例。不幸的是,這個實例保留給 GitRoot 本身使用。

如果您想為自己的專案嘗試 GitRoot,請閱讀文件

如何貢獻?

您可以在文件中找到您需要知道的一切。由於 GitRoot 本身就是 GitRoot 儲存庫,您應該能夠對它做出貢獻。

在這個實例中,我們使用了一些外掛。例如,grafter 外掛管理如何將部分程式碼納入預設分支。因此,請務必閱讀貢獻指南以了解其運作方式。

是的,由於 GitRoot 將所有資料儲存在 Git 中,在貢獻此專案(程式碼、問題、翻譯…)之前,您需要知道如何使用 Git。未來我希望能夠允許直接從瀏覽器執行 git commitgit push 指令,讓任何人都能參與。