GitLab 和 GitHub 回购的混合

Mix of GitLab and GitHub repos

我有一个基于 GitHub 中托管的多个存储库的项目(一个 phpBB 论坛)。我想将此代码托管在 public(如 GitLab)不可用的地方。

所以我有这个环境:

现在,我在 GitLab 中有一个大型存储库。但是我无法获取这些软件的原始作者所做的进一步提交。

我应该遵循哪种设置?我读过一些关于子模块的内容,这是我应该遵循的路径吗?

我会像这样使用常规存储库和子模块来处理它:

首先,对于你想要更改的所有回购协议,与他们的作者提供的相比,请执行以下操作:在 GitHub 上创建一个分支,然后在 GitLab 中导入该分支。

导入后,将上游设置为原作者的 GitHub 仓库(例如,对于 phpBB 为 git remote add upstream https://github.com/phpbb/phpbb)。这将允许您从原始存储库中提取更改,即使您在 GitLab 中私下托管它(参见 Keep your fork synced)。唯一的警告是从发布开始就将所有更改保存在单独的分支中。

好的,现在你应该在 GitLab 中拥有你想要进行自定义更改的所有存储库(phpBB、主题和你不想共享的扩展)。

第 2 步是在你的机器上从 GitLab (/) 克隆一个 phpBB,然后添加你想要的主题和每个扩展作为一个模块(参见 here how to add a submodule to a specific path and here 如何设置提交它应该指向)。

现在您应该拥有完整的结构,只有托管在私有 GitLab 存储库上的代码。所以当你想更新你的主题时,你更新 GitLab 中的主题 repo 并推送到你的自定义分支;例如,在作者更新主题后,您切换到主分支,从上游拉取更改,然后在主分支上重新设置您的自定义分支,最后更新主仓库(phpBB 之一)中的子模块。