我具有以下层次结构,例如多个开发人员在他们的 DEV服务器上推送他们的代码并进行测试,一旦看起来还不错,就应该在 QA服务器上进行质量检查的验证 >,并且质量检查一旦获得批准,则应转到 PROD服务器,该服务器可供客户使用。 e
该代码需要在GIT下维护。
我想知道,关于如何在SDLC下配置这样的CODE流结构的最佳实践是什么。
谢谢。
答案 0 :(得分:1)
Git不是版本管理器。您可以强制将其设置为一个,但效果不佳。
相反,这是一个简单的连续发布/交付工作流程的原理。
master
。即使在git中,维护长寿命分支也是复杂的,最好避免。您有一个分支可以用来开发和部署:master。
master
随时可以发布。没有准备好发布的东西。这为开发人员提供了一个稳定的开发平台,并为质量检查提供了一个稳定的测试平台,您可以随时自信地部署最新的 complete 功能。
通过在master
分支中进行所有开发,可以使master
保持高质量。这样可以将每个任务与其他任务隔离开来,并且开发人员可以随意进行试验而不会破坏构建。
换一种说法,您的开发,集成,测试和验收阶段都发生在功能分支中。维护也作为离散功能分支进行。
长期存在分支很痛苦的想法,要素分支应该与一张票证,事件或故事相关联。分支的目的应该定义清楚,完成时应该清楚。完成后,将删除分支,以确保它不会被重用并避免分支混乱。
您的分析和设计阶段必须得出实现任务,这些任务可以分解为多个离散任务,这些任务可以在一个短暂的功能分支中完成。这需要一些练习来学习如何做。
使用git merge --no-ff
确保分支保留在提交历史记录的拓扑中。使用合并提交消息记录有关分支的任何重要信息,以备将来考古之用,例如对其正在解决的问题的引用。
A - B ------------- M - N - O [master]
\ /
C - D - E - F
这些被称为“特征气泡”。他们清楚地表明,提交C,D,E和F是作为提交完成的,我们应该查看M以获得有关分支的信息。使用git log --graph --decorate
来获得这样的视图,或者使用任意数量的Git历史记录可视化器。
为避免要素分支过期,请习惯性地将其与master保持最新。只有在掌握最新功能,解决冲突并通过所有测试后,才能认为功能完整。
为避免过多的簿记合并,请使用git rebase master
保持历史记录干净。这是一个过时的功能分支的示例。 F-G“气泡”是一个完整的功能分支。
F - G
/ \
A - B ----- H [master]
\
C - D - E [feature]
然后重新设置它。
git checkout feature
git rebase master
F - G
/ \
A - B ----- H [master]
\
C1 - D1 - E1 [feature]
这保证了母版随时准备发布。由于功能分支与母版保持最新,因此合并后分支上的QA也是QA的母版。
这就是它的全部目标。没有暂存和生产分支。您可以随时将master部署到暂存。一旦满意,就可以将提交部署到生产中。如果您愿意,也可以git tag staging
或git tag production
部署的提交。这是Heroku Pipelines之类的东西使用的工作流程。
在production
标记git branch hot-patch production
旁创建临时分支。将热补丁提交到该分支。部署该分支。
一旦紧急情况结束,请尽快将热补丁重做为正常功能分支和正常部署过程。您可以使用git cherry-pick
或git rebase
在master
上获得热补丁更改。部署正确完成的修补程序后,请删除热补丁分支。