【问题标题】:How to maintain base code in separate Git repository?如何在单独的 Git 存储库中维护基本代码?
【发布时间】:2017-01-11 13:22:33
【问题描述】:

首先,我是 VSTS 和 Git 的新手,如果我的术语弄混了,敬请见谅!

问题

我的情况是我有一个 VS/C# 项目(称为“PluginBase”),本质上是插件的“启动模板”代码。从历史上看,每次我想为特定客户创建一个新的“定制/派生”构建时,我都会复制那个 PluginBase 项目代码。

我希望能够做的是,当错误修复得到解决并且功能被添加到 PluginBase 项目时,我希望选择将这些更改迁移到一个或多个“定制/派生“建立。同样,如果在开发“定制/派生”构建时首次发现该错误,我想将其迁移回 PluginBase 插件。

想法

根据我的研究,我遇到了一些实现目标的“可能”方法,但我不确定这些方法中哪一种(如果有的话)合适。

  • 分支机构
    • 似乎是常见的方法,也许是“最好的”,但是...
    • 意味着所有代码都必须在同一个存储库中? (否则不能“樱桃采摘”) - 我宁愿避免这种情况,因为这可能并不总是可能的
  • Git 子模块
    • 当项目共享一个公共“库”(不是从相同的代码库派生)时,似乎更有意义
    • 也不确定 Visual Studio 是否完全支持此功能
  • 樱桃采摘
    • 似乎无法从一个存储库到另一个存储库执行此操作?
  • Git 补丁
    • Visual Studio 似乎还不支持此功能?

因此,如果有人对我可以(或应该)使用的方法有任何建议、指导或新建议,我非常感谢您的意见。

非常感谢! :)

【问题讨论】:

  • 为什么要避免将所有代码放在同一个存储库中?
  • @prof1990 所说的。我曾经在不同的存储库中定制了相同代码的版本,这并不好。当它们是同一个存储库的分支时,生活就简单多了。
  • “同一存储库的分支”在 git 中不是一个东西。也许你的意思是分叉?
  • 至少还有一种方法。您可以拥有多个远程存储库。示例:您有一个基本模块“SRC”;将存储库分叉到“A”并下载它。您可以在“A”的本地副本中拥有多个来源。之后将“SRC”添加到“A”作为辅助存储库。当您对“SRC”进行更改时,请在“A”中使用“获取所有”。现在您可以将任何分支从“SRC”合并到“A”。在这种情况下,即使是樱桃采摘也应该起作用,但我没有测试它。唯一的问题是,您需要使用 GIT 服务器。
  • @prof1990 感谢您的建议。我想避免将所有代码放在一个地方的原因是,我可以将“客户特定”代码保存在一个存储库中,而将核心代码保存在另一个存储库中。但看起来我可能不得不重新考虑那个。附: - 我最初认为我只是为基础项目之外的每个客户项目“分叉”(如 Github),并使用拉取请求来推回/推回提交。然后我意识到“Fork”是 GitHub 的一项功能,目前在 VSTS 中不存在。

标签: c# git visual-studio-2015 azure-devops


【解决方案1】:

Git 分支绝对是要走的路。代码确实必须在同一个存储库中,git 存储更改集,并且为了应用更改集,git 必须知道代码路径拆分后发生了什么,否则它无法替换正确的代码行。

每次向客户推出版本时创建一个分支,然后您可以在不同的分支中进行挑选。

【讨论】:

  • 似乎非常一致地认为这是推荐的方法(也是一种减少头痛的方法!)。再次感谢大家的建议! :)
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 2016-07-14
  • 2017-02-09
  • 2015-09-07
  • 2019-12-08
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多