我正在努力构建一个Django网站,其中核心存储在一个存储库中,而单个客户的实现/部署存储在另一个存储库中。核心是最小的网站,并且需要"可运行",以用于测试目的。这意味着核心将如下所示:
Core:
- mainapp
-settings.py
-urls.py
-__init__.py
-wsgi.py
- otherCoreApp
-views.py
-...etc.
- manage.py
实现最初是核心的克隆,然后设置远程以推送/提取到单独的存储库。实现远程看起来像这样:
core https://github.com/core.git (fetch)
core no-push (push)
origin https://github.com/customer1.git (fetch)
origin https://github.com/customer1.git (push)
和文件结构:
Customer1:
- mainapp
-settings.py # Changed from core
-urls.py
-__init__.py
-wsgi.py
- otherCoreApp
-views.py
-...etc.
- pluginApp1
- pluginApp2
- deploymentConfig
- manage.py
然后,这将允许通过运行git pull core master
将核心更新到实现中。核心文件在实现中不会有太大变化,因为主要的扩展方式是通过插件。
如果将任何核心部分的开发保留在核心存储库中,这是一个可行的策略吗?
在客户存储库中具有额外的文件意味着那些不在core
中的存储库中将有提交。 由于客户存储库编辑保存在core
中的文件,因此我看到了两个选项:
- 直接从主服务器拉取,解决合并冲突并创建合并提交。
- 使用
:
语法从core/master
拉到一个新的分支上,将 master 重新定位到该分支上并从那里解决合并冲突。
不一定是缺点,只是需要考虑一些事情。
除此之外,这是一个有趣的多个远程存储库应用程序,大多数人都忘记了 git 有。