先祝大家龙年大吉。
如果后端已经使用 git 进行版本控制,如何开发针对用户的 git 服务?
目前后端已经使用 git 管理文档,但是只是后端内部使用,前端并没有对用户开放 git 功能。比如用户在浏览器上编辑后每保存一次,后端就通过 simple-git 执行 git add && git commit
。
大部分用户 Web 端就够了,但是有一部分长尾用户习惯于在本地编辑并通过 git 同步到云端。
我的问题是:针对这部分用户,如何开发一个对外的 git 服务?只要用户可以使用 git pull
, git push
这些同步代码即可。
我们有考虑过单独 run 一个开源的 gitlab 服务。但是这样似乎太重了,gitlab 的功能远超我们的需求。
1
Rheinmetal 72 天前
有轻量的 gogs gitea 之类
|
2
sunnysab 72 天前
git 本身是一些对象的集合,加上一个索引。 如果只提供下载,可以用 cgit ,上传不太清楚。
如果是 Rust 语言或者 C 语言,可以用 git 本身的代码(里面有传输的部分),或基于 gitoxide 这样库的软件。如果是 Go ,可以翻一下 gitea 的代码。 如果自己实现,需要实现 Git smart 协议?可以搜一下,并参考 《 Pro Git 》。 |
3
zed1018 72 天前 2
轻量的话 gitea+1
|
4
moonsn 72 天前 via iPhone
ssh 协议 pull 和 push ,@ 后面可以写.git 的路径。不一定要走一个 web 协议。
|
5
moonsn 72 天前 via iPhone
给存放 repo 的目录单独的 git 用户。然后给长尾用户的 public key 加到对应的用户下。
git clone [email protected]:/home/path/to/repo.git |
6
cnhongwei 72 天前
gitlab 的 wiki 就是这样的,你直接 clone 修改也可以,直接在 web 上修改了可以。
|
7
celeron533 72 天前
类似于 OneDev ?
|
8
batchfy OP @moonsn 感谢建议。不过我们的用户并不是开发者,设置 ssh key 这些可能有些重了。最好是能直接 git clone https://domain.com/username/projectname 就能下载/上传的。
|
9
batchfy OP @celeron533 看了下,OneDev 或者 @Rheinmetal 提到的 gogs 都有 web 端,以及 CI 这些。我们的需求其实只有 clone, pull, push 。由于用户不是开发者,设置 ssh key 有些不合适。期望还是直接账号密码操作。
|
11
tomczhen 72 天前
xy 问题。
|
12
wu67 72 天前 via Android
远离 gogs ,小毛病各种难搞,还遇到过一个项目死活 pull 不动的情况
|
14
kyuuseiryuu 72 天前
@batchfy #9 目标用户不是开发者为啥还要盯着 git 不放,换个方向呗。
|
15
imzcg2 72 天前
要不考虑一下这个?
https://gitly.org/ https://github.com/vlang/gitly 别问我怎么知道,因为 vlang 在 github 上写的项目就没几个,vlang 及其简单,和 golang 有一拼,适合修改维护 |
16
batchfy OP @kyuuseiryuu 主要是后台已经用了 git 做 version control ,如果用户也用 git 同步,就很方便。再者用户可能算半开发者吧,clone/pull/push 这些简单的操作应该问题不大,但是复杂的配置 key 我感觉会劝退用户。我希望是能直接账号密码就能同步。
|
19
imzcg2 71 天前
|
20
imzcg2 71 天前
@lujiaxing #18 给 op 看一下后台跑的日志,这 tmd 就是直接 vlang 套个壳直接执行 git 命令,然后传 html ,展示有问题是 git 命令 error 了
|
23
way2create 71 天前
我怎么想到了看文档时的 在 GitHub 上编辑此页 这种功能
|
24
jry 71 天前
我做过,ubuntu 上转一个 git-http-service 然后后端语言套一层即可。
|
25
asuraa 71 天前
最推荐的就两个 一个是 gitea 一个是 cgit https://git.zx2c4.com/cgit/
|
26
devliu1 71 天前
不想让用户设置 sshkey 或者 https credential 就自己开发个客户端包装下
|
27
celeron533 71 天前
@batchfy OneDev 可以不用 ssh key ,直接使用用户名和密码。
|