Git: 维护两个具有大部分共同特性的版本
Git: Maintain two versions with most features in common
我的公司想要维护我们产品的 SaaS 版本和本地版本。
大部分功能都是一样的。不幸的是,微分不能在逻辑本身内完成。 SaaS 版本的某些代码不应随本地版本一起提供给客户(出于安全原因)。
我不确定我们如何使用 git(或者在我们的例子中是 gitlab)来实现这一点。也许分叉 SaaS 版本或使用 git 的 cherry-pick 功能会起作用。我仍然是一个 git-初学者,所以我很高兴得到任何帮助。谢谢!
分支可能是维护 2 个相似但不同系统的一种方法,但这意味着您要为所做的每项更改增加开销和潜在的人为错误。
假设大多数更改需要进入两个系统,您希望拥有一个包含此共享部分的完全集成的核心存储库。或者,您可以为 SaaS 和内部部署特定部分拥有单独的回购协议,但我可能只是将所有内容都放在单一回购协议中,除非您的产品可以轻松分解为多个较小的部分。
现在,您有很多选项可以从单个存储库生成 2 种不同的结果,最简单的是有 2 种构建配置,一种用于 SaaS 产品,一种用于内部部署。您可能希望在该构建之后运行一个打包和分发阶段,以便只获取您需要的部分并为本地解决方案生成安装程序。
存在许多技术可以从相同的源文件生成多个输出、功能切换、依赖项注入、编译器指令、源内属性、make/build脚本中的条件以在构建中包含或排除某些文件过程等等等等
SaaS 和 in-prem 产品的发布过程通常有所不同,通常 SaaS 产品的发布节奏更快,并且由于您可以完全控制安装,因此可能要求不那么严格到那个过程。您通常只支持一个或两个版本的 SaaS 产品(当前安装的一个和您接下来要推出的一个),而您可能支持内部部署产品的多个版本。
Microsoft 的 Azure DevOps 正在处理类似的问题,云产品不断发布,但他们的本地产品每季度到每半年发布一次。他们使用称为 Microsoft Release Flow 的 git 流程来管理发布。此处记录:
他们现在正朝着完整 CI/CD 迈进,但我怀疑这对您来说很有趣,可以作为参考。
我的公司想要维护我们产品的 SaaS 版本和本地版本。
大部分功能都是一样的。不幸的是,微分不能在逻辑本身内完成。 SaaS 版本的某些代码不应随本地版本一起提供给客户(出于安全原因)。
我不确定我们如何使用 git(或者在我们的例子中是 gitlab)来实现这一点。也许分叉 SaaS 版本或使用 git 的 cherry-pick 功能会起作用。我仍然是一个 git-初学者,所以我很高兴得到任何帮助。谢谢!
分支可能是维护 2 个相似但不同系统的一种方法,但这意味着您要为所做的每项更改增加开销和潜在的人为错误。
假设大多数更改需要进入两个系统,您希望拥有一个包含此共享部分的完全集成的核心存储库。或者,您可以为 SaaS 和内部部署特定部分拥有单独的回购协议,但我可能只是将所有内容都放在单一回购协议中,除非您的产品可以轻松分解为多个较小的部分。
现在,您有很多选项可以从单个存储库生成 2 种不同的结果,最简单的是有 2 种构建配置,一种用于 SaaS 产品,一种用于内部部署。您可能希望在该构建之后运行一个打包和分发阶段,以便只获取您需要的部分并为本地解决方案生成安装程序。
存在许多技术可以从相同的源文件生成多个输出、功能切换、依赖项注入、编译器指令、源内属性、make/build脚本中的条件以在构建中包含或排除某些文件过程等等等等
SaaS 和 in-prem 产品的发布过程通常有所不同,通常 SaaS 产品的发布节奏更快,并且由于您可以完全控制安装,因此可能要求不那么严格到那个过程。您通常只支持一个或两个版本的 SaaS 产品(当前安装的一个和您接下来要推出的一个),而您可能支持内部部署产品的多个版本。
Microsoft 的 Azure DevOps 正在处理类似的问题,云产品不断发布,但他们的本地产品每季度到每半年发布一次。他们使用称为 Microsoft Release Flow 的 git 流程来管理发布。此处记录:
他们现在正朝着完整 CI/CD 迈进,但我怀疑这对您来说很有趣,可以作为参考。