raiden-network / raiden

Raiden Network

Home Page:https://developer.raiden.network

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Improve the git workflow

istankovic opened this issue · comments

Background

Currently most (all?) of the work, including testing, happens on the develop branch but the actual release is done from master. This is problematic because the release content should be continuously tested for a longer time, by all team members, to ensure release quality. For the last release we merged the master branch into develop using the merge strategy "ours", basically ignoring all of the content from master (note that that content was anyway cherry-picked from develop over time). This made a merge commit on develop, on top of which we continued to work on and finally, develop was merged back to master.

While working, this workflow has the following issues:

  • creates unnecessary merge commits, both on master and develop
  • makes the history much harder to inspect and navigate, a direct consequence of the above
  • adds complexity where none is needed

Proposed solution

  • use the master branch for regular development, testing, CI
  • make x.0 releases based on master
  • make release branches lazily; e.g. there would be no 2.0 branch, but if there is a need for a patch, one can just make a 2.0 branch based on the 2.0 release tag, cherry-pick the patch from master and make a 2.0.1 release off of that

Note that there would be no need for merge commits between release branches and the master branch. The release branches would be created on demand and would only contain cherry-picked changes from master.

After a discussion we agreed to do the following:

  • retire the master branch
  • continue working on develop as our main development branch (=master in the proposal above)
  • make releases and release branches as mentioned above