V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
batchfy
V2EX  ›  git

如何开发简单的对外 git 服务?

  •  
  •   batchfy · 62 天前 · 2745 次点击
    这是一个创建于 62 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先祝大家龙年大吉。

    如果后端已经使用 git 进行版本控制,如何开发针对用户的 git 服务?

    目前后端已经使用 git 管理文档,但是只是后端内部使用,前端并没有对用户开放 git 功能。比如用户在浏览器上编辑后每保存一次,后端就通过 simple-git 执行 git add && git commit

    大部分用户 Web 端就够了,但是有一部分长尾用户习惯于在本地编辑并通过 git 同步到云端。

    我的问题是:针对这部分用户,如何开发一个对外的 git 服务?只要用户可以使用 git pull, git push 这些同步代码即可。


    我们有考虑过单独 run 一个开源的 gitlab 服务。但是这样似乎太重了,gitlab 的功能远超我们的需求。

    27 条回复    2024-02-16 15:38:37 +08:00
    Rheinmetal
        1
    Rheinmetal  
       62 天前
    有轻量的 gogs gitea 之类
    sunnysab
        2
    sunnysab  
       62 天前
    git 本身是一些对象的集合,加上一个索引。 如果只提供下载,可以用 cgit ,上传不太清楚。

    如果是 Rust 语言或者 C 语言,可以用 git 本身的代码(里面有传输的部分),或基于 gitoxide 这样库的软件。如果是 Go ,可以翻一下 gitea 的代码。

    如果自己实现,需要实现 Git smart 协议?可以搜一下,并参考 《 Pro Git 》。
    zed1018
        3
    zed1018  
       62 天前   ❤️ 2
    轻量的话 gitea+1
    moonsn
        4
    moonsn  
       62 天前 via iPhone
    ssh 协议 pull 和 push ,@ 后面可以写.git 的路径。不一定要走一个 web 协议。
    moonsn
        5
    moonsn  
       62 天前 via iPhone
    给存放 repo 的目录单独的 git 用户。然后给长尾用户的 public key 加到对应的用户下。
    git clone [email protected]:/home/path/to/repo.git
    cnhongwei
        6
    cnhongwei  
       62 天前
    gitlab 的 wiki 就是这样的,你直接 clone 修改也可以,直接在 web 上修改了可以。
    celeron533
        7
    celeron533  
       62 天前
    类似于 OneDev ?
    batchfy
        8
    batchfy  
    OP
       62 天前
    @moonsn 感谢建议。不过我们的用户并不是开发者,设置 ssh key 这些可能有些重了。最好是能直接 git clone https://domain.com/username/projectname 就能下载/上传的。
    batchfy
        9
    batchfy  
    OP
       62 天前
    @celeron533 看了下,OneDev 或者 @Rheinmetal 提到的 gogs 都有 web 端,以及 CI 这些。我们的需求其实只有 clone, pull, push 。由于用户不是开发者,设置 ssh key 有些不合适。期望还是直接账号密码操作。
    batchfy
        10
    batchfy  
    OP
       62 天前
    @zed1018 感觉还是有些重呀,其实只需要走 https 的 clone/pull/push 即可。
    tomczhen
        11
    tomczhen  
       62 天前
    xy 问题。
    wu67
        12
    wu67  
       62 天前 via Android
    远离 gogs ,小毛病各种难搞,还遇到过一个项目死活 pull 不动的情况
    batchfy
        13
    batchfy  
    OP
       62 天前
    @tomczhen 我感觉我描述的已经很清楚了?
    kyuuseiryuu
        14
    kyuuseiryuu  
       62 天前
    @batchfy #9 目标用户不是开发者为啥还要盯着 git 不放,换个方向呗。
    imzcg2
        15
    imzcg2  
       62 天前
    要不考虑一下这个?
    https://gitly.org/
    https://github.com/vlang/gitly
    别问我怎么知道,因为 vlang 在 github 上写的项目就没几个,vlang 及其简单,和 golang 有一拼,适合修改维护
    batchfy
        16
    batchfy  
    OP
       62 天前
    @kyuuseiryuu 主要是后台已经用了 git 做 version control ,如果用户也用 git 同步,就很方便。再者用户可能算半开发者吧,clone/pull/push 这些简单的操作应该问题不大,但是复杂的配置 key 我感觉会劝退用户。我希望是能直接账号密码就能同步。
    batchfy
        17
    batchfy  
    OP
       62 天前
    @imzcg2 感谢。我关注一下。
    lujiaxing
        18
    lujiaxing  
       62 天前
    @batchfy gogs / gitea 都支持账户密码啊
    imzcg2
        19
    imzcg2  
       62 天前
    @batchfy #17 虽然不知道是 bug 还是没实现,没展示文件列表,但是正常 pull push 是正常的,占用一般吧!怪了那 readme 里的图片怎么来的,还是希望对你有用
    imzcg2
        20
    imzcg2  
       62 天前
    @lujiaxing #18 给 op 看一下后台跑的日志,这 tmd 就是直接 vlang 套个壳直接执行 git 命令,然后传 html ,展示有问题是 git 命令 error 了
    imzcg2
        21
    imzcg2  
       62 天前
    @batchfy #17 git 版本切回 2.43.0 后好了,终于正常了
    imzcg2
        22
    imzcg2  
       62 天前
    @batchfy #17 占用 16M 考虑一下
    way2create
        23
    way2create  
       62 天前
    我怎么想到了看文档时的 在 GitHub 上编辑此页 这种功能
    jry
        24
    jry  
       61 天前
    我做过,ubuntu 上转一个 git-http-service 然后后端语言套一层即可。
    asuraa
        25
    asuraa  
       61 天前
    最推荐的就两个 一个是 gitea 一个是 cgit https://git.zx2c4.com/cgit/
    devliu1
        26
    devliu1  
       61 天前
    不想让用户设置 sshkey 或者 https credential 就自己开发个客户端包装下
    celeron533
        27
    celeron533  
       61 天前
    @batchfy OneDev 可以不用 ssh key ,直接使用用户名和密码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2756 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:34 · PVG 23:34 · LAX 08:34 · JFK 11:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.