Is my company merging branches wrong?We're Subversion Geeks and we want to know the benefits of MercurialHow can I prevent users from merging origin/X into Y in git?How can I avoid editing conflicts repeatedly when merging from one to branch to another?Should I merge from the same branch or from a merge?What's the appropriate procedure for subversion merges?Merging branches where the same code was worked onProper sequence of actions for merging using SVN?Merging from unfinished feature branches and code reviewSVN best practices - different code logic in branchesAvoid or minimize merge conflicts while using NuGet and GitFlow

Why are stats in Angband written as 18/** instead of 19, 20...?

pwaS eht tirsf dna tasl setterl fo hace dorw

Prints each letter of a string in different colors. C#

Why do academics prefer Mac/Linux?

What would be the game balance implications for using the Gygax method for applying falling damage?

Largest memory peripheral for Sinclair ZX81?

multicol package causes underfull hbox

Why does the setUID bit work inconsistently?

Who is frowning in the sentence "Daisy looked at Tom frowning"?

Can an airline pilot be prosecuted for killing an unruly passenger who could not be physically restrained?

Using `printf` to print variable containing `%` percent sign results in "bash: printf: `p': invalid format character"

Are there any symmetric cryptosystems based on computational complexity assumptions?

Why does a table with a defined constant in its index compute 10X slower?

Appropriate liquid/solvent for life in my underground environment on Venus

How was the blinking terminal cursor invented?

Can 2 light bulbs of 120V in series be used on 230V AC?

Driving a school bus in the USA

Is it a good idea to teach algorithm courses using pseudocode?

Hotel booking: Why is Agoda much cheaper than booking.com?

Good examples of "two is easy, three is hard" in computational sciences

Why does the U.S military use mercenaries?

When did Britain learn about the American Declaration of Independence?

Why is choosing a suitable thermodynamic potential important?

Can the word crowd refer to just 10 people?



Is my company merging branches wrong?


We're Subversion Geeks and we want to know the benefits of MercurialHow can I prevent users from merging origin/X into Y in git?How can I avoid editing conflicts repeatedly when merging from one to branch to another?Should I merge from the same branch or from a merge?What's the appropriate procedure for subversion merges?Merging branches where the same code was worked onProper sequence of actions for merging using SVN?Merging from unfinished feature branches and code reviewSVN best practices - different code logic in branchesAvoid or minimize merge conflicts while using NuGet and GitFlow






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















I recently came across an msdn article about branching and merging and SCM



article: https://docs.microsoft.com/en-us/previous-versions/aa730834(v=vs.80)



In the article they say 'big bang merge' is a merging antipattern:



Big Bang Merge — deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.


I realized that this is very similar to what my company is doing with all of the development branches that are produced.



I work at a very small company with one person acting as the final review + trunk merge authority. We have 5 developers (including me), each of us will be assigned a separate task/bug/project and we will each branch off the current trunk (subversion) and then perform the development work in our branch, test the results, write documentation if necessary, perform a peer review and feedback loop with the other developers, and then submit the branch for review + merge on our project management software.



My boss, the sole authority on the trunk repository, will actually defer all of the reviews of branches until a single point in time where he will perform reviews on as much as he can, some branches will be thrown back for enhancements/fixes, some branches will merge right into trunk, some branches will be thrown back because of conflicts, etc.



It's not uncommon for us to have 10-20 active branches sitting in the final review queue to be merged into trunk.



We also frequently have to resolve conflicts in the final review and merge stage because two branches were created off the same trunk but modified the same piece of code. Usually we avoid this by just rebranching off trunk and re-applying our changes and resolving the conflicts then submitting the new branch for review (poor mans rebase).



Some direct questions I have are



Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?



Are some of the problems we're seeing a result of this merge process?



How can we improve this merge process without increasing the bottleneck on my boss?



Edit: I doubt my boss will loosen his grip on the trunk repository, or allow other devs to merge to trunk. Not sure what his reasons for that are but I don't really plan on bringing the topic up because it's been brought up before and shot down rather quickly. I think they just don't trust us, which doesn't make sense because everything is tracked anyway.



Any other insight into this situation would be appreciated.










share|improve this question






























    2















    I recently came across an msdn article about branching and merging and SCM



    article: https://docs.microsoft.com/en-us/previous-versions/aa730834(v=vs.80)



    In the article they say 'big bang merge' is a merging antipattern:



    Big Bang Merge — deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.


    I realized that this is very similar to what my company is doing with all of the development branches that are produced.



    I work at a very small company with one person acting as the final review + trunk merge authority. We have 5 developers (including me), each of us will be assigned a separate task/bug/project and we will each branch off the current trunk (subversion) and then perform the development work in our branch, test the results, write documentation if necessary, perform a peer review and feedback loop with the other developers, and then submit the branch for review + merge on our project management software.



    My boss, the sole authority on the trunk repository, will actually defer all of the reviews of branches until a single point in time where he will perform reviews on as much as he can, some branches will be thrown back for enhancements/fixes, some branches will merge right into trunk, some branches will be thrown back because of conflicts, etc.



    It's not uncommon for us to have 10-20 active branches sitting in the final review queue to be merged into trunk.



    We also frequently have to resolve conflicts in the final review and merge stage because two branches were created off the same trunk but modified the same piece of code. Usually we avoid this by just rebranching off trunk and re-applying our changes and resolving the conflicts then submitting the new branch for review (poor mans rebase).



    Some direct questions I have are



    Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?



    Are some of the problems we're seeing a result of this merge process?



    How can we improve this merge process without increasing the bottleneck on my boss?



    Edit: I doubt my boss will loosen his grip on the trunk repository, or allow other devs to merge to trunk. Not sure what his reasons for that are but I don't really plan on bringing the topic up because it's been brought up before and shot down rather quickly. I think they just don't trust us, which doesn't make sense because everything is tracked anyway.



    Any other insight into this situation would be appreciated.










    share|improve this question


























      2












      2








      2


      2






      I recently came across an msdn article about branching and merging and SCM



      article: https://docs.microsoft.com/en-us/previous-versions/aa730834(v=vs.80)



      In the article they say 'big bang merge' is a merging antipattern:



      Big Bang Merge — deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.


      I realized that this is very similar to what my company is doing with all of the development branches that are produced.



      I work at a very small company with one person acting as the final review + trunk merge authority. We have 5 developers (including me), each of us will be assigned a separate task/bug/project and we will each branch off the current trunk (subversion) and then perform the development work in our branch, test the results, write documentation if necessary, perform a peer review and feedback loop with the other developers, and then submit the branch for review + merge on our project management software.



      My boss, the sole authority on the trunk repository, will actually defer all of the reviews of branches until a single point in time where he will perform reviews on as much as he can, some branches will be thrown back for enhancements/fixes, some branches will merge right into trunk, some branches will be thrown back because of conflicts, etc.



      It's not uncommon for us to have 10-20 active branches sitting in the final review queue to be merged into trunk.



      We also frequently have to resolve conflicts in the final review and merge stage because two branches were created off the same trunk but modified the same piece of code. Usually we avoid this by just rebranching off trunk and re-applying our changes and resolving the conflicts then submitting the new branch for review (poor mans rebase).



      Some direct questions I have are



      Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?



      Are some of the problems we're seeing a result of this merge process?



      How can we improve this merge process without increasing the bottleneck on my boss?



      Edit: I doubt my boss will loosen his grip on the trunk repository, or allow other devs to merge to trunk. Not sure what his reasons for that are but I don't really plan on bringing the topic up because it's been brought up before and shot down rather quickly. I think they just don't trust us, which doesn't make sense because everything is tracked anyway.



      Any other insight into this situation would be appreciated.










      share|improve this question
















      I recently came across an msdn article about branching and merging and SCM



      article: https://docs.microsoft.com/en-us/previous-versions/aa730834(v=vs.80)



      In the article they say 'big bang merge' is a merging antipattern:



      Big Bang Merge — deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.


      I realized that this is very similar to what my company is doing with all of the development branches that are produced.



      I work at a very small company with one person acting as the final review + trunk merge authority. We have 5 developers (including me), each of us will be assigned a separate task/bug/project and we will each branch off the current trunk (subversion) and then perform the development work in our branch, test the results, write documentation if necessary, perform a peer review and feedback loop with the other developers, and then submit the branch for review + merge on our project management software.



      My boss, the sole authority on the trunk repository, will actually defer all of the reviews of branches until a single point in time where he will perform reviews on as much as he can, some branches will be thrown back for enhancements/fixes, some branches will merge right into trunk, some branches will be thrown back because of conflicts, etc.



      It's not uncommon for us to have 10-20 active branches sitting in the final review queue to be merged into trunk.



      We also frequently have to resolve conflicts in the final review and merge stage because two branches were created off the same trunk but modified the same piece of code. Usually we avoid this by just rebranching off trunk and re-applying our changes and resolving the conflicts then submitting the new branch for review (poor mans rebase).



      Some direct questions I have are



      Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?



      Are some of the problems we're seeing a result of this merge process?



      How can we improve this merge process without increasing the bottleneck on my boss?



      Edit: I doubt my boss will loosen his grip on the trunk repository, or allow other devs to merge to trunk. Not sure what his reasons for that are but I don't really plan on bringing the topic up because it's been brought up before and shot down rather quickly. I think they just don't trust us, which doesn't make sense because everything is tracked anyway.



      Any other insight into this situation would be appreciated.







      svn anti-patterns merging scm






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 3 hours ago







      user6567423

















      asked 4 hours ago









      user6567423user6567423

      364




      364




















          4 Answers
          4






          active

          oldest

          votes


















          3














          Some suggestions:



          • There is nothing wrong in having a lot of feature or bugfix branches as long as the changes done in each branch are small enough you can still handle the resulting merge conflicts in an effective manner. That should be your criterion if your way of working is ok, not some MSDN article.


          • Whenever a branch is merged into trunk, the trunk should be merged into all open development branches ASAP. This would allow all people in the team to resolve merge conflicts in parallel in their own branch and so take some burden from the gatekeeper of the trunk.


          • This would work way better if the gatekeeper would not wait until 10 branches are "ready for merging into trunk" - resolving merge conflicts from the last trunk integrations always needs some time for the team, so it is probably better to work in interwoven time intervals - one integration by the gatekeeper, one re-merge by the team, next integration by the gatekeeper, next re-merge by the team, and so on.


          • To keep branches small, it might help to split larger features into several smaller tasks and develop each of those task into a branch of its own. If the feature is not production ready until all subtasks are implemented, hide it from production behind a feature toggle until all subtasks are completed.


          • Sooner or later you will encounter refactoring tasks which affect many files in the code base - these have a high risk of causing a lot merge conflicts with many branches. Those can be handled best by communicating them clearly in the team, and make sure to handle them exactly as I wrote above: by integrating them first into all dev branches before reintegration, and by splitting them up into smaller sub-refactorings.


          • For your current team size, having a single gatekeeper may still work. But if your team will grow in size, there is no way around having a second gatekeeper (or more). Note I am not suggesting to allow everyone to merge into trunk, but that does not mean only your boss is capable of doing this. You will probably have one or two senior devs who could be candidates for doing the gatekeeper's Job, too. And even for your current team's size, a second gatekeeper could make it easier for your team to integrate to the trunk more often and earlier.






          share|improve this answer

























          • I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

            – user6567423
            8 mins ago


















          5















          Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?




          Sounds like it.




          Are some of the problems we're seeing a result of this merge process?




          Definitely




          How can we improve this merge process without increasing the bottleneck on my boss?




          At my company, every dev has the ability to merge. We assign a Merge Request to another dev, go through the review/feedback/update cycle until both parties are satisfied. Then the reviewer merges the code.



          10-20 branches waiting to get merged is a sign that your process is flawed. If we had that many, all dev work would stop until it was cleared up.






          share|improve this answer























          • Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

            – user6567423
            3 hours ago


















          2














          This is essentially how a lot of open source projects work, including most notably the Linux kernel, which has a lot more branches in flight than you do at any given time. The typical way to avoid big bang merges in these projects is to create another branch (or multiple branches) for continuous integration. This is the branch you use to make sure your changes work together with your colleagues, and it gets periodically rebased onto the trunk when the gatekeeper gets around to doing reviews.



          Optionally, you can use this branch to combine several of your own pull requests into one big cohesive request for your boss to review. Linus Torvalds typically gets pull requests that have been integrated two or more levels deep, and can have a size on the order of, for example, a complete new filesystem driver.






          share|improve this answer























          • Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

            – user6567423
            2 hours ago


















          0














          So you have 20 branches. Branch 1 is just merged. Then the developer of branch 2 has to merge branch 1 into their branch to be able to merge into main without conflict, then merges. Then the developer of branch 3 has to merge branch 1 and branch 2 into their branch to be able to merge into main without conflict, then merges.



          Exercise for the reader: Write a program that prints my complete post :-)



          This is madness. You will be spending an incredible amount of time merging.






          share|improve this answer























          • Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

            – user6567423
            3 hours ago











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "131"
          ;
          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: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          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%2fsoftwareengineering.stackexchange.com%2fquestions%2f391987%2fis-my-company-merging-branches-wrong%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          4 Answers
          4






          active

          oldest

          votes








          4 Answers
          4






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          Some suggestions:



          • There is nothing wrong in having a lot of feature or bugfix branches as long as the changes done in each branch are small enough you can still handle the resulting merge conflicts in an effective manner. That should be your criterion if your way of working is ok, not some MSDN article.


          • Whenever a branch is merged into trunk, the trunk should be merged into all open development branches ASAP. This would allow all people in the team to resolve merge conflicts in parallel in their own branch and so take some burden from the gatekeeper of the trunk.


          • This would work way better if the gatekeeper would not wait until 10 branches are "ready for merging into trunk" - resolving merge conflicts from the last trunk integrations always needs some time for the team, so it is probably better to work in interwoven time intervals - one integration by the gatekeeper, one re-merge by the team, next integration by the gatekeeper, next re-merge by the team, and so on.


          • To keep branches small, it might help to split larger features into several smaller tasks and develop each of those task into a branch of its own. If the feature is not production ready until all subtasks are implemented, hide it from production behind a feature toggle until all subtasks are completed.


          • Sooner or later you will encounter refactoring tasks which affect many files in the code base - these have a high risk of causing a lot merge conflicts with many branches. Those can be handled best by communicating them clearly in the team, and make sure to handle them exactly as I wrote above: by integrating them first into all dev branches before reintegration, and by splitting them up into smaller sub-refactorings.


          • For your current team size, having a single gatekeeper may still work. But if your team will grow in size, there is no way around having a second gatekeeper (or more). Note I am not suggesting to allow everyone to merge into trunk, but that does not mean only your boss is capable of doing this. You will probably have one or two senior devs who could be candidates for doing the gatekeeper's Job, too. And even for your current team's size, a second gatekeeper could make it easier for your team to integrate to the trunk more often and earlier.






          share|improve this answer

























          • I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

            – user6567423
            8 mins ago















          3














          Some suggestions:



          • There is nothing wrong in having a lot of feature or bugfix branches as long as the changes done in each branch are small enough you can still handle the resulting merge conflicts in an effective manner. That should be your criterion if your way of working is ok, not some MSDN article.


          • Whenever a branch is merged into trunk, the trunk should be merged into all open development branches ASAP. This would allow all people in the team to resolve merge conflicts in parallel in their own branch and so take some burden from the gatekeeper of the trunk.


          • This would work way better if the gatekeeper would not wait until 10 branches are "ready for merging into trunk" - resolving merge conflicts from the last trunk integrations always needs some time for the team, so it is probably better to work in interwoven time intervals - one integration by the gatekeeper, one re-merge by the team, next integration by the gatekeeper, next re-merge by the team, and so on.


          • To keep branches small, it might help to split larger features into several smaller tasks and develop each of those task into a branch of its own. If the feature is not production ready until all subtasks are implemented, hide it from production behind a feature toggle until all subtasks are completed.


          • Sooner or later you will encounter refactoring tasks which affect many files in the code base - these have a high risk of causing a lot merge conflicts with many branches. Those can be handled best by communicating them clearly in the team, and make sure to handle them exactly as I wrote above: by integrating them first into all dev branches before reintegration, and by splitting them up into smaller sub-refactorings.


          • For your current team size, having a single gatekeeper may still work. But if your team will grow in size, there is no way around having a second gatekeeper (or more). Note I am not suggesting to allow everyone to merge into trunk, but that does not mean only your boss is capable of doing this. You will probably have one or two senior devs who could be candidates for doing the gatekeeper's Job, too. And even for your current team's size, a second gatekeeper could make it easier for your team to integrate to the trunk more often and earlier.






          share|improve this answer

























          • I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

            – user6567423
            8 mins ago













          3












          3








          3







          Some suggestions:



          • There is nothing wrong in having a lot of feature or bugfix branches as long as the changes done in each branch are small enough you can still handle the resulting merge conflicts in an effective manner. That should be your criterion if your way of working is ok, not some MSDN article.


          • Whenever a branch is merged into trunk, the trunk should be merged into all open development branches ASAP. This would allow all people in the team to resolve merge conflicts in parallel in their own branch and so take some burden from the gatekeeper of the trunk.


          • This would work way better if the gatekeeper would not wait until 10 branches are "ready for merging into trunk" - resolving merge conflicts from the last trunk integrations always needs some time for the team, so it is probably better to work in interwoven time intervals - one integration by the gatekeeper, one re-merge by the team, next integration by the gatekeeper, next re-merge by the team, and so on.


          • To keep branches small, it might help to split larger features into several smaller tasks and develop each of those task into a branch of its own. If the feature is not production ready until all subtasks are implemented, hide it from production behind a feature toggle until all subtasks are completed.


          • Sooner or later you will encounter refactoring tasks which affect many files in the code base - these have a high risk of causing a lot merge conflicts with many branches. Those can be handled best by communicating them clearly in the team, and make sure to handle them exactly as I wrote above: by integrating them first into all dev branches before reintegration, and by splitting them up into smaller sub-refactorings.


          • For your current team size, having a single gatekeeper may still work. But if your team will grow in size, there is no way around having a second gatekeeper (or more). Note I am not suggesting to allow everyone to merge into trunk, but that does not mean only your boss is capable of doing this. You will probably have one or two senior devs who could be candidates for doing the gatekeeper's Job, too. And even for your current team's size, a second gatekeeper could make it easier for your team to integrate to the trunk more often and earlier.






          share|improve this answer















          Some suggestions:



          • There is nothing wrong in having a lot of feature or bugfix branches as long as the changes done in each branch are small enough you can still handle the resulting merge conflicts in an effective manner. That should be your criterion if your way of working is ok, not some MSDN article.


          • Whenever a branch is merged into trunk, the trunk should be merged into all open development branches ASAP. This would allow all people in the team to resolve merge conflicts in parallel in their own branch and so take some burden from the gatekeeper of the trunk.


          • This would work way better if the gatekeeper would not wait until 10 branches are "ready for merging into trunk" - resolving merge conflicts from the last trunk integrations always needs some time for the team, so it is probably better to work in interwoven time intervals - one integration by the gatekeeper, one re-merge by the team, next integration by the gatekeeper, next re-merge by the team, and so on.


          • To keep branches small, it might help to split larger features into several smaller tasks and develop each of those task into a branch of its own. If the feature is not production ready until all subtasks are implemented, hide it from production behind a feature toggle until all subtasks are completed.


          • Sooner or later you will encounter refactoring tasks which affect many files in the code base - these have a high risk of causing a lot merge conflicts with many branches. Those can be handled best by communicating them clearly in the team, and make sure to handle them exactly as I wrote above: by integrating them first into all dev branches before reintegration, and by splitting them up into smaller sub-refactorings.


          • For your current team size, having a single gatekeeper may still work. But if your team will grow in size, there is no way around having a second gatekeeper (or more). Note I am not suggesting to allow everyone to merge into trunk, but that does not mean only your boss is capable of doing this. You will probably have one or two senior devs who could be candidates for doing the gatekeeper's Job, too. And even for your current team's size, a second gatekeeper could make it easier for your team to integrate to the trunk more often and earlier.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 1 hour ago

























          answered 2 hours ago









          Doc BrownDoc Brown

          138k24255409




          138k24255409












          • I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

            – user6567423
            8 mins ago

















          • I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

            – user6567423
            8 mins ago
















          I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

          – user6567423
          8 mins ago





          I think you have the best comment here, acknowledging that we cannot simply open trunk to everybody, and that our stack of branches isn't exactly always a problem (only when they conflict). I think you did a good job pointing out how we can reduce conflicts and ensure the merge cycle is smooth, I also think you are completely correct when you say we may need another gatekeeper. Thanks a lot for this insight!

          – user6567423
          8 mins ago













          5















          Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?




          Sounds like it.




          Are some of the problems we're seeing a result of this merge process?




          Definitely




          How can we improve this merge process without increasing the bottleneck on my boss?




          At my company, every dev has the ability to merge. We assign a Merge Request to another dev, go through the review/feedback/update cycle until both parties are satisfied. Then the reviewer merges the code.



          10-20 branches waiting to get merged is a sign that your process is flawed. If we had that many, all dev work would stop until it was cleared up.






          share|improve this answer























          • Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

            – user6567423
            3 hours ago















          5















          Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?




          Sounds like it.




          Are some of the problems we're seeing a result of this merge process?




          Definitely




          How can we improve this merge process without increasing the bottleneck on my boss?




          At my company, every dev has the ability to merge. We assign a Merge Request to another dev, go through the review/feedback/update cycle until both parties are satisfied. Then the reviewer merges the code.



          10-20 branches waiting to get merged is a sign that your process is flawed. If we had that many, all dev work would stop until it was cleared up.






          share|improve this answer























          • Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

            – user6567423
            3 hours ago













          5












          5








          5








          Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?




          Sounds like it.




          Are some of the problems we're seeing a result of this merge process?




          Definitely




          How can we improve this merge process without increasing the bottleneck on my boss?




          At my company, every dev has the ability to merge. We assign a Merge Request to another dev, go through the review/feedback/update cycle until both parties are satisfied. Then the reviewer merges the code.



          10-20 branches waiting to get merged is a sign that your process is flawed. If we had that many, all dev work would stop until it was cleared up.






          share|improve this answer














          Are we exhibiting the very anti-pattern that was described as the 'big bang merge'?




          Sounds like it.




          Are some of the problems we're seeing a result of this merge process?




          Definitely




          How can we improve this merge process without increasing the bottleneck on my boss?




          At my company, every dev has the ability to merge. We assign a Merge Request to another dev, go through the review/feedback/update cycle until both parties are satisfied. Then the reviewer merges the code.



          10-20 branches waiting to get merged is a sign that your process is flawed. If we had that many, all dev work would stop until it was cleared up.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 3 hours ago









          MatthewMatthew

          1572




          1572












          • Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

            – user6567423
            3 hours ago

















          • Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

            – user6567423
            3 hours ago
















          Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

          – user6567423
          3 hours ago





          Not the answer I was looking for because I doubt my boss is going to loosen his grip on the trunk repository. But an incredibly helpful answer none-the-less, thanks for the insight!

          – user6567423
          3 hours ago











          2














          This is essentially how a lot of open source projects work, including most notably the Linux kernel, which has a lot more branches in flight than you do at any given time. The typical way to avoid big bang merges in these projects is to create another branch (or multiple branches) for continuous integration. This is the branch you use to make sure your changes work together with your colleagues, and it gets periodically rebased onto the trunk when the gatekeeper gets around to doing reviews.



          Optionally, you can use this branch to combine several of your own pull requests into one big cohesive request for your boss to review. Linus Torvalds typically gets pull requests that have been integrated two or more levels deep, and can have a size on the order of, for example, a complete new filesystem driver.






          share|improve this answer























          • Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

            – user6567423
            2 hours ago















          2














          This is essentially how a lot of open source projects work, including most notably the Linux kernel, which has a lot more branches in flight than you do at any given time. The typical way to avoid big bang merges in these projects is to create another branch (or multiple branches) for continuous integration. This is the branch you use to make sure your changes work together with your colleagues, and it gets periodically rebased onto the trunk when the gatekeeper gets around to doing reviews.



          Optionally, you can use this branch to combine several of your own pull requests into one big cohesive request for your boss to review. Linus Torvalds typically gets pull requests that have been integrated two or more levels deep, and can have a size on the order of, for example, a complete new filesystem driver.






          share|improve this answer























          • Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

            – user6567423
            2 hours ago













          2












          2








          2







          This is essentially how a lot of open source projects work, including most notably the Linux kernel, which has a lot more branches in flight than you do at any given time. The typical way to avoid big bang merges in these projects is to create another branch (or multiple branches) for continuous integration. This is the branch you use to make sure your changes work together with your colleagues, and it gets periodically rebased onto the trunk when the gatekeeper gets around to doing reviews.



          Optionally, you can use this branch to combine several of your own pull requests into one big cohesive request for your boss to review. Linus Torvalds typically gets pull requests that have been integrated two or more levels deep, and can have a size on the order of, for example, a complete new filesystem driver.






          share|improve this answer













          This is essentially how a lot of open source projects work, including most notably the Linux kernel, which has a lot more branches in flight than you do at any given time. The typical way to avoid big bang merges in these projects is to create another branch (or multiple branches) for continuous integration. This is the branch you use to make sure your changes work together with your colleagues, and it gets periodically rebased onto the trunk when the gatekeeper gets around to doing reviews.



          Optionally, you can use this branch to combine several of your own pull requests into one big cohesive request for your boss to review. Linus Torvalds typically gets pull requests that have been integrated two or more levels deep, and can have a size on the order of, for example, a complete new filesystem driver.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 3 hours ago









          Karl BielefeldtKarl Bielefeldt

          122k33217416




          122k33217416












          • Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

            – user6567423
            2 hours ago

















          • Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

            – user6567423
            2 hours ago
















          Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

          – user6567423
          2 hours ago





          Thanks I think the tips on combining branches and preventing conflicts will probably be our best course of action.

          – user6567423
          2 hours ago











          0














          So you have 20 branches. Branch 1 is just merged. Then the developer of branch 2 has to merge branch 1 into their branch to be able to merge into main without conflict, then merges. Then the developer of branch 3 has to merge branch 1 and branch 2 into their branch to be able to merge into main without conflict, then merges.



          Exercise for the reader: Write a program that prints my complete post :-)



          This is madness. You will be spending an incredible amount of time merging.






          share|improve this answer























          • Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

            – user6567423
            3 hours ago















          0














          So you have 20 branches. Branch 1 is just merged. Then the developer of branch 2 has to merge branch 1 into their branch to be able to merge into main without conflict, then merges. Then the developer of branch 3 has to merge branch 1 and branch 2 into their branch to be able to merge into main without conflict, then merges.



          Exercise for the reader: Write a program that prints my complete post :-)



          This is madness. You will be spending an incredible amount of time merging.






          share|improve this answer























          • Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

            – user6567423
            3 hours ago













          0












          0








          0







          So you have 20 branches. Branch 1 is just merged. Then the developer of branch 2 has to merge branch 1 into their branch to be able to merge into main without conflict, then merges. Then the developer of branch 3 has to merge branch 1 and branch 2 into their branch to be able to merge into main without conflict, then merges.



          Exercise for the reader: Write a program that prints my complete post :-)



          This is madness. You will be spending an incredible amount of time merging.






          share|improve this answer













          So you have 20 branches. Branch 1 is just merged. Then the developer of branch 2 has to merge branch 1 into their branch to be able to merge into main without conflict, then merges. Then the developer of branch 3 has to merge branch 1 and branch 2 into their branch to be able to merge into main without conflict, then merges.



          Exercise for the reader: Write a program that prints my complete post :-)



          This is madness. You will be spending an incredible amount of time merging.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 3 hours ago









          gnasher729gnasher729

          21.3k22863




          21.3k22863












          • Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

            – user6567423
            3 hours ago

















          • Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

            – user6567423
            3 hours ago
















          Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

          – user6567423
          3 hours ago





          Well not necessarily, unless the branches are in conflict then he can just merge them all into trunk seamlessly. We will usually try to prevent any conflicts by doing a test merge before we submit the branch for review but the conflicts come up inevitably as the number of branches in the queue increases. I do agree that it sounds like madness though.

          – user6567423
          3 hours ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Software Engineering Stack Exchange!


          • 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%2fsoftwareengineering.stackexchange.com%2fquestions%2f391987%2fis-my-company-merging-branches-wrong%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

          Log på Navigationsmenu

          Wonderful Copenhagen (sang) Eksterne henvisninger | NavigationsmenurSide på frankloesser.comWonderful Copenhagen

          Detroit Tigers Spis treści Historia | Skład zespołu | Sukcesy | Członkowie Baseball Hall of Fame | Zastrzeżone numery | Przypisy | Menu nawigacyjneEncyclopedia of Detroit - Detroit TigersTigers Stadium, Detroit, MITigers Timeline 1900sDetroit Tigers Team History & EncyclopediaTigers Timeline 1910s1935 World Series1945 World Series1945 World Series1984 World SeriesComerica Park, Detroit, MI2006 World Series2012 World SeriesDetroit Tigers 40-Man RosterDetroit Tigers Coaching StaffTigers Hall of FamersTigers Retired Numberse