我正在构建一个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
将内核更新到实现中。核心文件在实现中不会有太大变化,因为扩展的主要方式是通过插件。
如果任何核心部分的开发都保留在核心存储库中,这是可行的策略吗?
答案 0 :(得分:1)
客户存储库中有多余的文件意味着这些存储库中将包含core
中没有的提交。由于客户回购协议编辑了core
中保存的文件,因此我看到了两种提取方式的选择:
core/master
语法从:
拉到一个新分支,在其上重新设置master并从那里解决合并冲突。不一定有缺点,只是要考虑一下。
除此之外,这是多个远程存储库的有趣应用程序,大多数人都忘记了git具有的功能。