首页 > 解决方案 > 拥有多个 git 遥控器有缺点吗

问题描述

我正在构建一个 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。核心文件在实现中不会有太大变化,因为主要的扩展方式是通过插件。

如果任何核心部分的开发都保留在核心存储库中,这是一个可行的策略吗?

标签: git

解决方案


在客户仓库中有额外的文件意味着在那些不在core. 由于客户 repos 编辑了保存在 中的文件core,因此我看到了两个用于拉取的选项:

  1. 直接从 master 拉取,解决合并冲突并创建合并提交。
  2. 使用语法拉到core/master一个新的分支上,将:master 变基到它上面并从那里解决合并冲突。

不一定是缺点,只是需要考虑的事情。

除此之外,这是一个有趣的多个远程存储库应用程序,大多数人忘记了 git。


推荐阅读