从gitlab外部直接推送到gitlab存储库是安全的吗?

从gitlab外部直接推送到gitlab存储库是安全的吗?,gitlab,Gitlab,可以直接从gitlab外部推送到gitlab存储库吗 我想知道的主要是: *gitlab会检测到变化吗? *是安全的,就像它不会因为并发而中断回购一样?如果我正确理解了您的问题,您是在问是否可以将提交从Gitlab以外的另一个git客户端推送到Gitlab实例 关于这一点没有任何问题,实际上这正是git和Gitlab的意义所在 您使用哪个Git客户端完成提交并将其推送到运行Gitlab的服务器并不重要。将Gitlab视为存储库的一个可能前端 如果您对技术背景感兴趣: Git是完全独立的,不依赖任

可以直接从gitlab外部推送到gitlab存储库吗

我想知道的主要是: *gitlab会检测到变化吗?
*是安全的,就像它不会因为并发而中断回购一样?

如果我正确理解了您的问题,您是在问是否可以将提交从Gitlab以外的另一个git客户端推送到Gitlab实例

关于这一点没有任何问题,实际上这正是git和Gitlab的意义所在

您使用哪个Git客户端完成提交并将其推送到运行Gitlab的服务器并不重要。将Gitlab视为存储库的一个可能前端

如果您对技术背景感兴趣:

Git是完全独立的,不依赖任何类型的中央服务器来管理您的存储库。所有相关数据都存储在项目的
.git
子目录中。这允许使用单个存储库的多个客户端—例如
git
和Gitlab

Gitlab在内部使用gem,gem本身使用为其提供Ruby绑定的库。该库还用于其他git客户端的实现


关于实际并发问题的处理,请看kan的文章。正确的权限是通过git钩子处理的,正如Ciro Santilli在文中指出的那样。

从gitlab外部是什么意思?在gitlab外部,就像直接使用git服务器推送而不是通过ssh或http,在文件系统级别使用git.Correct。注意:1)GitLab自动将存储库挂钩符号链接到:。正是这些钩子通过调用
/internal
来进行权限检查。因此,如果直接推送,您仍将获得权限检查。2) gitlab_git混合使用了RACKED和GRITE not,但它正在转向RACKED。gitlab使用的git repo存储在NFS共享上,因此可以由另一台具有NFS写访问权限的服务器修改。这并不是说我们必须这样做,但我们想知道它是否可以工作。正如上面指出的,在这种情况下,您不应该对并发性有任何问题。由于权限是通过钩子实现的,所以您也应该可以。这就是说,流氓(或轻率)用户肯定会通过NFS严重破坏您的存储库。因此,只通过http/Gitlab和SSH提供访问应该是首选,因为它们都提供了更干净的接口。注2:Gitlab在Redis上缓存了一些repo数据,以便更快地为其提供服务,但在DB上没有。然后,post接收挂钩更新缓存: