We support the development of multiple versions of the product in Git. Stanislav Lukyanov (GridGain)



Hello! My name is Stanislav Lukyanov. I work for GridGain. Today I wanted to talk about how we maintain older versions in Git.





First, a few words about what kind of report it will be, who will be useful and who I am.





, .



:



  • , , – .
  • , , .
  • , , , - .


GridGain. , , , , .





GridGain – . , Apache Ignite, open source. , Ignite, . GridGain - , .



Ignite, .





? . . , , .



, , , enterprise. enterprise?





– . , , . Enterprise .





.





- . – ?



release model:





, . minor- . . , 8 minor- . . minor-.



, , 5-10 . .





? , ?



.





, .





- .





, QA. QA , . .





.





.





QA, .





-, . . - , , 1.3. QA 1.3 - , .





: Β« B 1.3?Β».



– 1.3.





? , , scope creep. . 1.3 . , .



?





. 1.3. 1.3 . . , , 1.3 , .





, 2019- , branch 1.3 branch , . . B.



, , - ? , , , B .





, B , , , .



.





, branches , , . 1.3.0. , .





, .





.





.





, 1.3.2. , - 1.3, , . . 1.3.2.



– 1.3.3. , .





- 1.3.2, .





1.3.2, 1.3.3.





, , , . , 1.3.2. QA . 1.3.3., , 1.3. .



, , , , .





, , . , , - , , , .





, :



  • : - , - , - , .
  • , , - , . - .
  • , , , .




:



  1. . , - . , , , QA .
  2. . - , , , .
  3. :


  • – , 2-3-4 .
  • – . -- . , - , . .




?



  • Git. , .
  • , , .
  • , .




Github Flow.





, Github Flow? , , , Github Flow.



Git, .





. - , feature branch, bugfix branch.





, pull request integration testing review .





, Github Flow – : deploy. CI/CD, , , , merge deploy production, deploy production, . . .





, - , , , .





Github Flow , ?



  • , – merge. . , - , – merge , .
  • , . - - .
  • , , .


Github Flow - , .



, , Git. feature branch merge – . , .





Git Flow – . , develop.



– , .



Develop – , .



Feature branches develop.





.





, release branch, .





, develop, . . merge.





, .



, hotfix .





, branch develop, . hotfix, . develop.





.





?



  1. , release branches. .
  2. , ? , .


  • , branches, hotfix branches develop . . , , , develop.
  • release branches hot fix , - , . , hot fix, - - . Hot fix . - Git Flow , .


  1. Git Flow . , hot fix, .




, , , .





. 5 , .



, 1.3. - .



, . ?





-, , . , , - 1.3.





, 1.5, 1.4, 1.3.



? , – , , – . merge-, - , , .



: master-first target-first.





Master-first upstream first – , .



. 1.3, 1.4, , 1.4, 1.5 . .



?



  • , . , . , , bugfix, - bugfix , β€” .



  • . , .





, 1.3. . , - merge-, , - - 1.3.





– target-first.



1.3 . , .



, . , .



. , , . – , . – .



, , . .



:





, , . .



master-first, . , .





, , - 1.3.2, QA 1.3, 1.3.2 QA, dev- 1.3.3 , .



: 1.3.2 1.3.3.



: Β« , ?Β». , - 1.3, , ? .





, , branches.



1.3 branch, 1.3-master. 1.3 , . . . - .



, -, branch, 1.3-master. , . release engineers 1.3-master. development, QA, , 1.3-master.



- QA, , B 1.3.2, release engineer, . Release engineer scope , . , cherry-pick.





, – ? ?





, branch. , QA – branch.





branches , , , Github Flow, . , - , branch.





:



  • – , branches. .



  • Branches – , , , , branch - . . branches. .







. ? , , ?



?





, , , Github Flow , .



bugfix-, . .



?





– cherry-pick. , , cherry-pick – , Git .



bugfix release .



?



  • - merge-, merge .



  • -, . – work-in-progress, .



  • -, , , – merge-, – . , .







– cherry-pick -m. cherry-pick -m? cherry-pick . merge- , , bugfix. , , , merge. .



? , , . . , , merge.



, .





, – merge --squash. merge --squash? , merge- , squash-, , cherry-pick -m, A, B, C bugfix . merge- . . . , , cherry-pick’ .



, cherry-pick bugfixes . , - , merge --squash .





, , .



, , .





release branches , , -branches, .



, , release engineer, .



:





- bugfix, bugfix-. review , .





cherry-pick 1.5,





1.4,





1.3.





. , . . .



, . – Jira fix version. , , , , . , 1.3, 1.3.



, , release engineers?





, master-1.3, .





, scope 1.3-master.



, scope , 1.3.2.





, , , 1.3-master .



, 1.3-master .





- 1.3.2, , - B, .





, 1.3-master.





release engineer 1.3.2.







, :



  1. , .



  2. , .



  3. :





  • – .
  • – .




, :



  1. , release branches master branches. master branches. .



  2. : master-first upstream first, , , .



  3. , master branches. , branches, 1.1.1-master . . , .







?





– , .



, , . , upstream first, , . , branches , - - - , . . merges , - . .



, , . , . , git log’ Jira. , merge --squash , Jira issue.



fix version, Jira 1 1. , - - .





. Git, , . , .



, 1.1.10 - 1.2. ? 1.2.1?



.



, 1.1.10 , 1.2.1 3 . 1.1.10 . , , , 1.2.1.



, minor-, , .





, , . , , – .



, , , , , . .



, . , . 100 100. , .



, - , , Git, , , .



. ?





  1. , – , . , Git.


  • , .



  • , - .





  1. Github Flow, Git Flow, - , , . , , , , - .



  2. . .





  • master-first upstream first release master branches, , miner-.





  1. .


  • , : - Git Jira.



  • , .





!





! ! first? , , , 1.3. , 1.3. , 1.3 target .



, , , , , . , , , .



! , - , . , upstream first. . - Git Jira, . . merge . upstream first, , - 1.3 , , , , - .



, , , , , , , , , - , .



! ! , , ?



. . . , , , , β€” , . - , , , . - , - . , , , . , - , - , . . .



performance ?



- performance, - , , , . regression issue .



release engineer , - , ?



Github .



, ?



, , . , regression issue, - , , , . .



. , , .



frameworks , , . framework , - .



. 99 % . 1 %, performance - bugfix’ 2 , bugfix , - . , , , , .



! , «». , upstream first, , , 1.3. , 1.3, 1.5, 1.4, , 1.2? 1.5 ?



. , , , bugfix. , . , , . , , - .



, , . , . - , , , , . .



?



, . . , environment, , , .



. , , master-1.6?



master-1.6. - master-1.6 . , – , .



. , . ? . . - , , , - , - , - . . . 1.3, 1.3.1, 1.3.2, 1.3.3 . ?



. . . , ?



- , . , branches . , , . . . 1.3.3, 1.3.1.



, . 1.3.1, - , - .



, ? - , , . production , - , : Β«, , Β», , , . - , , , - operation. chance list . 1 000 . : Β« ?Β».



? , .



Why? We select and release a minor or major version simply by change. Major breaks compatibility, while minor does not. Formally does not break, at least. But as part of the minor or major version, we then continue to independently release patches on them, so that the customrs, once released in prod on the minor version, make it easier to upgrade within it.




All Articles