假设有一个遗留Java项目A.无论出于何种原因,该项目都有一些机密内容(例如密码,加密密钥,电子邮件)和/或特定于环境(例如硬编码路径,服务器名称,电子邮件) )。由于涉及的复杂性,似乎无法将项目更改为不包含源代码中的信息。
在某些时候,一个新的外包团队加入了这一发展。鉴于上述情况,外包团队无法逐字访问项目源。它们具有单独的开发环境,因此可以在其VCS中制作具有所解决问题的项目的单独副本(即,根据需要清理/更新所需的所有内容以在其环境中工作)。我们称之为A2版本。
工作流程通常包括与A和A2相关的两件事:
此工作流程可以通过手动保留两个项目并在它们之间进行合并来实现。
相关问题:
答案 0 :(得分:1)
这种方法会让你感到痛苦。您需要做的是使用git filter-branch
消除服务器名称,密码输出并替换为非工作的常规表单 - 即,它不应该在任何地方运行!
接下来,设置涂抹/清除脚本以更改包含该信息的文件,以将值填充到他们只需要使解决方案在该本地系统上运行所需的值。与您的开发环境相比,您的生产环境中将有不同的参数。关键是要抽象出这些信息。
现在,您应该没有与外包团队共享同一存储库的问题。在一个仓库中管理分支与在仓库之间清理提交更容易。
答案 1 :(得分:0)
@ icyrock.com:这似乎是灾难的秘诀。
我的建议是将源代码与敏感数据分开 请注意,这是一个更一般的建议,您可能希望保持安全存储的敏感数据并且访问受限。
步骤:
1.从源代码中删除所有敏感数据,
2.创建一个包含敏感数据的新git存储库
3.从原始源代码中引用敏感数据(这取决于编程语言,Java不是我的专业领域)
此时清洁"源代码可以安全地与外包团队共享,因为他们无法访问“敏感数据”。回购,但他们可能有一个类似的回购与他们自己的合理数据版本(即"演示"或"试验"或"非生产"路径,服务器姓名,电子邮件) 当然,如果外包团队能够在测试环境中测试他们的变化,那么上述是必要的,我强烈认为这是必须的。他们正在做测试,不是吗?
这将彻底减少,如果不能消除整体上任何与并行积极开发的相同内容的2个副本之间的大混乱相关的问题。