我有一个rails应用程序,旨在提供githosting。每个用户可以拥有多个存储库。我准备好了我的Web框架(创建问题,评论和创建新的存储库,浏览器上传文件,编辑等)。我使用坚固耐用的git相关作品。
现在我想让用户能够从命令行(git push/pull path_to_repo
)推送/拉出他们的存储库。
如何通过git push/pull
之类的命令与我的rails应用程序通信?我试图通过gitlab,但他们的回购太大了。如果有人能指出正确的方向,我将非常感激。 gitlab似乎使用gitlab-shell,但gitlab-shell中的所有代码似乎都是关于用户的身份验证。他们什么时候甚至执行repo的实际更新以及它如何与实际的repo进行通信?
现在,如果我这样做:
git clone localhost:3000/data/repos/addie/fancy_project/satellite/.git/
我收到以下错误:
克隆到' satellite' ...致命:存储库 ' http://localhost:3000/data/repos/addie/fancy_project/satellite/.git/' 找不到
和记录器显示:
Started GET "/data/repos/addie/fancy_project/satellite/.git/info/refs?service=git-upload-pack" for 127.0.0.1 at 2015-06-06 01:30:03 +0530
ActionController::RoutingError (No route matches [GET] "/data/repos/addie/fancy_project/satellite/.git/info/refs")
我知道在public/data/repos/addie/fancy_project/satellite/
存在一个名为.git的仓库。是铁路路由器正在进入。对文件系统的正常命令:
git clone my_project/public/data/repos/addie/fancy_project/satellite/.git
工作得很好。我启用了更新后的挂钩,就像解释它here
一样