混合GitLab和GitHub回购

时间:2016-04-07 11:17:19

标签: git github gitlab phpbb

我有一个项目(一个phpBB论坛),基于GitHub中托管的多个存储库。我想把这个代码托管给公众不可用的地方(比如GitLab)。

所以我有这样的环境:

  • /< - (私人)我对phpBB所做的修改(但是在他们的发布中,而不是他们当前的代码)。
  • /styles/mystyle< - (私人)我对Artodia's Simplicity theme
  • 所做的修改
  • /ext/vendor/extension< - 来自几个人的几个扩展,每个扩展都有自己的GitHub仓库。我修改了其中一些。我也做了一些,我希望保留一份私人副本和其他一些我想在GitHub中分享的内容。

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

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

1 个答案:

答案 0 :(得分:0)

我会使用常规的回购和子模块来处理它:

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

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

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

第2步是在你的机器上克隆来自GitLab(/)的phpBB,然后将主题和你想要的每个扩展名添加为模块(参见here如何添加子模块到一个特定的路径和here如何设置它应指向的提交。)

现在你应该拥有完整的结构,只有私有GitLab repos上托管的代码。因此,当您想要更新主题时,可以在GitLab中更新主题仓库并推送到自定义分支;例如,在作者更新主题之后,切换到主分支,从上游提取更改,然后在主服务器上重新定义自定义分支,最后更新主存储库中的子模块(phpBB)。 / p>