gpt4 book ai didi

java - 同一项目的多个不同变体的 Git 流程

转载 作者:行者123 更新时间:2023-11-30 11:39:40 24 4
gpt4 key购买 nike

假设有一个遗留的 Java 项目 A。无论出于何种原因,该项目中都有一些 secret 的东西(例如密码、加密 key 、电子邮件)和/或特定于环境的东西(例如硬编码路径、服务器名称、电子邮件) ).由于涉及的复杂性,似乎不可能将项目更改为不包含源代码中的信息。

在某个时候,一个新的外包团队加入了开发。鉴于上述情况,外包团队无法逐字获取项目源码。他们有一个单独的开发环境,因此可以在他们的 VCS 中制作一个单独的项目副本来解决问题(即,根据需要清理/更新所有需要的东西,以便在他们的环境中工作)。我们称该版本为 A2。

工作流程通常包括与 A 和 A2 相关的两件事:

  • 双方的代码都可以更改(即 A 和 A2 都可以更改,A 由原始团队更改,A2 由外包团队更改),包括源代码更改冲突
  • 需要使这两个项目保持同步。不需要让它们一直保持同步,但重要的是要有一种相对轻松的方式来做到这一点。当有冲突需要解决时,假设这必须是一个手动过程

这个工作流程可以通过手动保留两个项目并在它们之间 merge 来实现。

相关问题:

  • 如何使用 git 管理这两个版本,即与手动 merge 相比有哪些选择?
  • 这是最佳设置还是有更好的选择?
  • 对于新项目,将 secret /特定于环境的内容置于源代码控制之外的首选方法是什么(从某种意义上说 - 如果您遇到类似情况,您会怎么做?)?这是好事吗?

最佳答案

这种方法会给你带来痛苦。您需要做的是使用 git filter-branch 删除服务器名称、密码并替换为无法正常工作的通用形式 - 即,它不应在任何地方运行!

接下来,设置涂抹/清理脚本来更改包含该信息的文件,以将值填充为您的解决方案仅在该本地系统上运行所需的值。与开发环境相比,您的生产环境会有不同的参数。关键是要抽象出这些信息。

现在您与外包团队共享同一个存储库应该没有问题了。在一个 repo 中管理分支比在 repo 之间清理提交要容易得多。

关于java - 同一项目的多个不同变体的 Git 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com