Gitflow with single continous release branch vs individual branches?
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
add a comment |
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
See also stackoverflow.com/a/53405887/6309
– VonC
Nov 28 '18 at 5:37
add a comment |
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
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
git git-flow
asked Nov 28 '18 at 4:03
Ben987654Ben987654
818825
818825
See also stackoverflow.com/a/53405887/6309
– VonC
Nov 28 '18 at 5:37
add a comment |
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
See also stackoverflow.com/a/53405887/6309
– VonC
Nov 28 '18 at 5:37