Git流程用于同一项目的多个不同变体

时间:2012-10-30 15:43:49

标签: java git version-control

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

在某些时候,一个新的外包团队加入了这一发展。鉴于上述情况,外包团队无法逐字访问项目源。它们具有单独的开发环境,因此可以在其VCS中制作具有所解决问题的项目的单独副本(即,根据需要清理/更新所需的所有内容以在其环境中工作)。我们称之为A2版本。

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

  • 代码可以在两侧发生变化(即A和A2都可以更改,A由原始团队更改,A2由外包团队更改),包括源代码更改冲突
  • 需要保持两个项目同步。它不需要一直保持同步,但重要的是要有一个相对无痛的方法来做到这一点。当存在要解决的冲突时,假设这必须是手动过程

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

相关问题:

  • 如何使用git管理两个版本,即与手动合并相比有哪些选项?
  • 这是最好的设置还是有更好的选择?
  • 对于新项目,首选方式(在某种意义上说,如果您遇到类似情况,您会怎么做?)保持机密/环境特定的东西不受源代码管理?这无论如何都是好事吗?

2 个答案:

答案 0 :(得分:1)

这种方法会让你感到痛苦。您需要做的是使用git filter-branch消除服务器名称,密码输出并替换为非工作的常规表单 - 即,它不应该在任何地方运行!

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

现在,您应该没有与外包团队共享同一存储库的问题。在一个仓库中管理分支与在仓库之间清理提交更容易。

答案 1 :(得分:0)

@ icyrock.com:这似乎是灾难的秘诀。

我的建议是将源代码与敏感数据分开 请注意,这是一个更一般的建议,您可能希望保持安全存储的敏感数据并且访问受限。

步骤:
1.从源代码中删除所有敏感数据,
2.创建一个包含敏感数据的新git存储库 3.从原始源代码中引用敏感数据(这取决于编程语言,Java不是我的专业领域)

此时清洁"源代码可以安全地与外包团队共享,因为他们无法访问“敏感数据”。回购,但他们可能有一个类似的回购与他们自己的合理数据版本(即"演示"或"试验"或"非生产"路径,服务器姓名,电子邮件) 当然,如果外包团队能够在测试环境中测试他们的变化,那么上述是必要的,我强烈认为这是必须的。他们正在做测试,不是吗?

这将彻底减少,如果不能消除整体上任何与并行积极开发的相同内容的2个副本之间的大混乱相关的问题。