Branching is hard

Ya know, for all the conceptual elegance of the idea of branching/merging in software revision control, it sure can be a pain in practice. Just in the last while, I’ve run across the following situations:

  • someone mismerged my code because they merged based on files rather than revisions
  • had to decide whether to merge someone else’s code because mine was dependent on it, but they hadn’t merged theirs
  • had to decide when to merge my code, which was part of a larger feature and was not a complete feature in itself: do it now and possibly introduce instability, do it later and possibly have it get delayed in the shuffle
  • stuff I’d merged disappeared because the branch was remade after I merged
  • conflict while merging my code because the branch was based on a way older revision than I was informed (so other changes I’d made previously were not there to merge against)
  • not knowing whether my changes were to be merged because it wasn’t decided when the feature was to be released
  • a special case of the previous situation, when it was first decided the feature was for later, then it was moved earlier
  • work for a future feature ended up causing a conflict when trying to merge a current feature because the two changes were made in the other order on the same code

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.