Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define branching model #33

Open
cornelius opened this issue Oct 19, 2018 · 6 comments
Open

Define branching model #33

cornelius opened this issue Oct 19, 2018 · 6 comments
Labels
open sourcing Task related to setting up the open source project

Comments

@cornelius
Copy link
Member

We need to define how we use git branches, what are the expectations in terms of stability on which branches, from which branches to do releases, how changes propagate between branches, etc.

One option would be to follow the bitcoin model:

They have release branches for release trains such as 0.16 and 0.17, then there is master, and that's it.

A release branch in bitcoin is mostly a stable snapshot. At some point they branch off of master and start polishing, which is mostly finishing the release notes, generating man pages, etc. The release process is outlined in https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md

Patches for CVEs are backported into the release branches (if applicable).

Here is how their release schedule looks like: bitcoin/bitcoin#14438

Another option would be to follow a devel/master model (see for example one variant in "a successfull git branching model", we might want to use a simplified version, though). One advantage of using master to release from is that it's a stable branch name, so CI or other tooling doesn't have to be reconfigured for each release.

A related aspect is how to handle work which is in progress. While we do want to encourage developers to submit code soon and often, stable branches should not be broken by unfinished code. Feature flags might be one way how to address this, so that code can mature on different schedules in the same branch, that might not work for all features, though.

@cornelius cornelius added the open sourcing Task related to setting up the open source project label Oct 19, 2018
@mergeable
Copy link

mergeable bot commented Nov 29, 2018

There has not been any activity in the past month. Is there anything to follow-up?

@scravy
Copy link
Member

scravy commented Nov 29, 2018

I think this is pretty much defined by now, or not? @cornelius

@cornelius
Copy link
Member Author

As we are not doing releases yet, the current branching model is very simple as it's basically only master plus personal forks.

When doing releases this will be more elaborate. We have at least to document what we are doing then. So I would leave the issue open for now until we have some more of the release process in place.

@cornelius
Copy link
Member Author

@thothd and me just had a discussion about versioning of documentation (i.e. what we publish on http://docs.unit-e.io) which is related to the branching model. The idea is to keep the same branch structure as the code and generate documentation for each branch which reflects a version. So we would have something like (version numbers are just made up placeholders):

  • master: latest development
  • 1.0: first major release
  • 1.1: update of first major release
  • 2.0: second major release

So we would have these branches in both the code and the documentation repository.

@mergeable
Copy link

mergeable bot commented Jan 9, 2019

There has not been any activity in the past month. Is there anything to follow-up?

@mergeable
Copy link

mergeable bot commented Jan 20, 2019

There has not been any activity in the past 10 days. Is this still active?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open sourcing Task related to setting up the open source project
Projects
None yet
Development

No branches or pull requests

3 participants
@cornelius @scravy and others