我有一个项目(一个phpBB论坛),基于GitHub中托管的多个存储库。我想把这个代码托管给公众不可用的地方(比如GitLab)。
所以我有这样的环境:
/
< - (私人)我对phpBB所做的修改(但是在他们的发布中,而不是他们当前的代码)。/styles/mystyle
< - (私人)我对Artodia's Simplicity theme /ext/vendor/extension
< - 来自几个人的几个扩展,每个扩展都有自己的GitHub仓库。我修改了其中一些。我也做了一些,我希望保留一份私人副本和其他一些我想在GitHub中分享的内容。现在,我在GitLab中有一个大的存储库。但我无法获取这些软件的原始作者的进一步提交。
我应该遵循哪种设置?我读过一些关于子模块的内容,这是我应该遵循的路径吗?
答案 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>