我有兴趣将本地git repo设置为远程仓库的镜像。我已经阅读了一些可能相关的帖子,但关键的区别在于我需要在两个repos上进行读写访问。
大多数情况下,用户会反对Repo A,但是有时候他们会对Repo B工作,而这些需要通过服务器到服务器的流量保持同步。
这里最好的方法是什么?
菲尔
更新由于这可能使情况复杂化,我会添加一个注释。在此环境中,开发人员在主存储库之间切换的理想方式是通过/ etc / hosts - -e.g更改存储库的IP地址。 Repo A在办公室时称为gitserver,Repo B在远程时称为gitserver。
答案 0 :(得分:0)
(免责声明:我知道这个问题发布已经 7 年了,但由于我不知道的原因,它出现在我的 StackOverflow 问题列表的顶部)
<块引用>我有兴趣将本地 git 存储库设置为远程存储库的镜像。
好吧...
<块引用>我已经阅读了一些可能相关的帖子
什么帖子?
<块引用>但是关键的区别是我需要对两个存储库进行读写访问
为什么您还没有对两个存储库的读/写访问权限?请不要将 git
与 GitHub 等 Git 托管服务混淆,并注意 git
没有任何内置权限系统 - 安全性由您的“ git server”和使用的基础设施 - 并且有各种各样的 git 服务器产品(从本地 GitHub Enterprise 和 Microsoft Team Foundation Server,到默认的收件箱 {{1}它通常在 SSH 后面运行(它是 SSH 为您处理 authx)。您还可以通过 SMB(又名 Windows 文件共享)托管一个 git 存储库。
大多数时候,用户会使用 Repo A,但有时他们会使用 Repo B,这些需要通过服务器到服务器的流量保持同步。
作为前言,请记住 gitserver
是一个去中心化系统,不需要任何规范存储库。
我假设您的意思是用户将同时使用 RepoA 和 RepoB(而不是每个人在某些日子只使用 RepoA,然后在其他日子只使用 RepoB) .在这种情况下,只需每隔几分钟就有一个 git
作业 cron
并且每次更新新分支时都有一个 fetch
钩子就可以了。
这里最好的方法是什么?
很难给出具体细节,因为还有很多细节你没有给我们(例如,这两个主机如何通信?是否需要一个可怕的 VPN 客户端/系统,或者它们是否通过开放的互联网进行通信?你考虑过使用像 GitHub 和 GitLab 这样的商业push
托管服务用作中间件?等等?
在此环境中,开发人员在主存储库之间切换的理想方式是通过 /etc/hosts 更改存储库的 IP 地址 - 例如Repo A 在办公室时称为“gitserver”,而在远程时,Repo B 称为“gitserver”。
确认。不,不要那样做!让您的用户将两个存储库作为单独的远程存储添加到他们的本地存储库中,并为他们提供一个小的 shell 脚本或宏,将 git
转换为对所有当前可用存储库的推送。
...您的开发人员确实有本地(计算机上)存储库,对吗? 我希望您没有在某种多用户模式下使用集中托管的 git 存储库?如果是这样,那么您使用 git 就非常非常错误了。