Gitflow with single continous release branch vs individual branches?












0















At my last workplace, we had a flow similar to "git flow" but we had three continuous branches instead of new release branches for every release.




  • Develop

  • Staging/Release (I'll call it release for remainder of the post)

  • Master


We had automation in Jenkins so at any time QA could pull the full Develop branch into Release and begin testing the work that was available.



Any bug fixes to this work were done on the release branch to isolate the current build from unwanted changes on develop and were then merged back into develop once completed.



The idea was that the release branch was a completely isolated build and at any point in time if QA was happy with the state of the release branch, they could press another button in Jenkins and automatically deploy the whole branch into production and tag it.




  • Develop was the history of work

  • Release was a history of testable builds

  • Master was official releases


At my new workplace I'm currently the only one working on my specific project, and there wasn't any automation or proper git flows set up so my plan was to continue using what I've been using for years, but other projects are using the standard Git flows and we've been discussing the differences and such.





In their flows - QA is testing individual tickets off of develop and only when an actual release is planned to be cut do they get put onto a new release branch for additional testing. From that point forward we follow the same flow where bug fixes happen on the release branch and are merged into develop.



We've been debating which way works better, but after having used my flow for years, I'm not able to find anything online that talks about it's strengths or weaknesses to help back me up and I'm wondering if there are problems with it I'm not aware of as it seemed to work really well? I'm either failing on my googlefu or surprised I can't find existing discussion? I also see a few problems with their way that mine would address?



With my current way




  • I have a stable QA environment that can be released on a moments notice.

  • QA never needs to be concerned about what's happening on Develop until they want new work.

  • I have a history of unique builds on Release that can always be easily found

  • I'm always merging from the branches head.


With the other way,




  • By the time a build is tested, develop has already moved forward. If QA wants to deploy this build to production, they now need to pick a point in time and create a release branch from that (which can be error prone as it's not the branch HEAD anymore)


  • One of our main test environments always represents the current develop code base, so when Develop breaks, the website breaks and can't be tested on.





Is there some flaw in the continuous release branch method that I'm missing vs the gitflow of individual release branches when a release is ready to be cut?



I feel like it's more straight forward to deploy to production with a continuous branch? Even if they stopped testing off of develop and created the unique release branch right away, what benefit does that have over a continuous branch that's been tagged?



Note - I was not the one to initially set this up at my last workplace and would be setting up the automation for my first time. Are their issues in the automation I would encounter in my method vs the normal git flow?










share|improve this question























  • See also stackoverflow.com/a/53405887/6309

    – VonC
    Nov 28 '18 at 5:37
















0















At my last workplace, we had a flow similar to "git flow" but we had three continuous branches instead of new release branches for every release.




  • Develop

  • Staging/Release (I'll call it release for remainder of the post)

  • Master


We had automation in Jenkins so at any time QA could pull the full Develop branch into Release and begin testing the work that was available.



Any bug fixes to this work were done on the release branch to isolate the current build from unwanted changes on develop and were then merged back into develop once completed.



The idea was that the release branch was a completely isolated build and at any point in time if QA was happy with the state of the release branch, they could press another button in Jenkins and automatically deploy the whole branch into production and tag it.




  • Develop was the history of work

  • Release was a history of testable builds

  • Master was official releases


At my new workplace I'm currently the only one working on my specific project, and there wasn't any automation or proper git flows set up so my plan was to continue using what I've been using for years, but other projects are using the standard Git flows and we've been discussing the differences and such.





In their flows - QA is testing individual tickets off of develop and only when an actual release is planned to be cut do they get put onto a new release branch for additional testing. From that point forward we follow the same flow where bug fixes happen on the release branch and are merged into develop.



We've been debating which way works better, but after having used my flow for years, I'm not able to find anything online that talks about it's strengths or weaknesses to help back me up and I'm wondering if there are problems with it I'm not aware of as it seemed to work really well? I'm either failing on my googlefu or surprised I can't find existing discussion? I also see a few problems with their way that mine would address?



With my current way




  • I have a stable QA environment that can be released on a moments notice.

  • QA never needs to be concerned about what's happening on Develop until they want new work.

  • I have a history of unique builds on Release that can always be easily found

  • I'm always merging from the branches head.


With the other way,




  • By the time a build is tested, develop has already moved forward. If QA wants to deploy this build to production, they now need to pick a point in time and create a release branch from that (which can be error prone as it's not the branch HEAD anymore)


  • One of our main test environments always represents the current develop code base, so when Develop breaks, the website breaks and can't be tested on.





Is there some flaw in the continuous release branch method that I'm missing vs the gitflow of individual release branches when a release is ready to be cut?



I feel like it's more straight forward to deploy to production with a continuous branch? Even if they stopped testing off of develop and created the unique release branch right away, what benefit does that have over a continuous branch that's been tagged?



Note - I was not the one to initially set this up at my last workplace and would be setting up the automation for my first time. Are their issues in the automation I would encounter in my method vs the normal git flow?










share|improve this question























  • See also stackoverflow.com/a/53405887/6309

    – VonC
    Nov 28 '18 at 5:37














0












0








0


1






At my last workplace, we had a flow similar to "git flow" but we had three continuous branches instead of new release branches for every release.




  • Develop

  • Staging/Release (I'll call it release for remainder of the post)

  • Master


We had automation in Jenkins so at any time QA could pull the full Develop branch into Release and begin testing the work that was available.



Any bug fixes to this work were done on the release branch to isolate the current build from unwanted changes on develop and were then merged back into develop once completed.



The idea was that the release branch was a completely isolated build and at any point in time if QA was happy with the state of the release branch, they could press another button in Jenkins and automatically deploy the whole branch into production and tag it.




  • Develop was the history of work

  • Release was a history of testable builds

  • Master was official releases


At my new workplace I'm currently the only one working on my specific project, and there wasn't any automation or proper git flows set up so my plan was to continue using what I've been using for years, but other projects are using the standard Git flows and we've been discussing the differences and such.





In their flows - QA is testing individual tickets off of develop and only when an actual release is planned to be cut do they get put onto a new release branch for additional testing. From that point forward we follow the same flow where bug fixes happen on the release branch and are merged into develop.



We've been debating which way works better, but after having used my flow for years, I'm not able to find anything online that talks about it's strengths or weaknesses to help back me up and I'm wondering if there are problems with it I'm not aware of as it seemed to work really well? I'm either failing on my googlefu or surprised I can't find existing discussion? I also see a few problems with their way that mine would address?



With my current way




  • I have a stable QA environment that can be released on a moments notice.

  • QA never needs to be concerned about what's happening on Develop until they want new work.

  • I have a history of unique builds on Release that can always be easily found

  • I'm always merging from the branches head.


With the other way,




  • By the time a build is tested, develop has already moved forward. If QA wants to deploy this build to production, they now need to pick a point in time and create a release branch from that (which can be error prone as it's not the branch HEAD anymore)


  • One of our main test environments always represents the current develop code base, so when Develop breaks, the website breaks and can't be tested on.





Is there some flaw in the continuous release branch method that I'm missing vs the gitflow of individual release branches when a release is ready to be cut?



I feel like it's more straight forward to deploy to production with a continuous branch? Even if they stopped testing off of develop and created the unique release branch right away, what benefit does that have over a continuous branch that's been tagged?



Note - I was not the one to initially set this up at my last workplace and would be setting up the automation for my first time. Are their issues in the automation I would encounter in my method vs the normal git flow?










share|improve this question














At my last workplace, we had a flow similar to "git flow" but we had three continuous branches instead of new release branches for every release.




  • Develop

  • Staging/Release (I'll call it release for remainder of the post)

  • Master


We had automation in Jenkins so at any time QA could pull the full Develop branch into Release and begin testing the work that was available.



Any bug fixes to this work were done on the release branch to isolate the current build from unwanted changes on develop and were then merged back into develop once completed.



The idea was that the release branch was a completely isolated build and at any point in time if QA was happy with the state of the release branch, they could press another button in Jenkins and automatically deploy the whole branch into production and tag it.




  • Develop was the history of work

  • Release was a history of testable builds

  • Master was official releases


At my new workplace I'm currently the only one working on my specific project, and there wasn't any automation or proper git flows set up so my plan was to continue using what I've been using for years, but other projects are using the standard Git flows and we've been discussing the differences and such.





In their flows - QA is testing individual tickets off of develop and only when an actual release is planned to be cut do they get put onto a new release branch for additional testing. From that point forward we follow the same flow where bug fixes happen on the release branch and are merged into develop.



We've been debating which way works better, but after having used my flow for years, I'm not able to find anything online that talks about it's strengths or weaknesses to help back me up and I'm wondering if there are problems with it I'm not aware of as it seemed to work really well? I'm either failing on my googlefu or surprised I can't find existing discussion? I also see a few problems with their way that mine would address?



With my current way




  • I have a stable QA environment that can be released on a moments notice.

  • QA never needs to be concerned about what's happening on Develop until they want new work.

  • I have a history of unique builds on Release that can always be easily found

  • I'm always merging from the branches head.


With the other way,




  • By the time a build is tested, develop has already moved forward. If QA wants to deploy this build to production, they now need to pick a point in time and create a release branch from that (which can be error prone as it's not the branch HEAD anymore)


  • One of our main test environments always represents the current develop code base, so when Develop breaks, the website breaks and can't be tested on.





Is there some flaw in the continuous release branch method that I'm missing vs the gitflow of individual release branches when a release is ready to be cut?



I feel like it's more straight forward to deploy to production with a continuous branch? Even if they stopped testing off of develop and created the unique release branch right away, what benefit does that have over a continuous branch that's been tagged?



Note - I was not the one to initially set this up at my last workplace and would be setting up the automation for my first time. Are their issues in the automation I would encounter in my method vs the normal git flow?







git git-flow






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 28 '18 at 4:03









Ben987654Ben987654

818825




818825













  • See also stackoverflow.com/a/53405887/6309

    – VonC
    Nov 28 '18 at 5:37



















  • See also stackoverflow.com/a/53405887/6309

    – VonC
    Nov 28 '18 at 5:37

















See also stackoverflow.com/a/53405887/6309

– VonC
Nov 28 '18 at 5:37





See also stackoverflow.com/a/53405887/6309

– VonC
Nov 28 '18 at 5:37












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53511939%2fgitflow-with-single-continous-release-branch-vs-individual-branches%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53511939%2fgitflow-with-single-continous-release-branch-vs-individual-branches%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)