-
Notifications
You must be signed in to change notification settings - Fork 499
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
Re-evaluate git flow approach? #1955
Comments
We had an internal discussion in the past about gitflow, copying my comment:
I think using
It's a problem when breaking changes need to be merged. I'm afraid we'll need to do a lot of cherry-picking to create a stable release branch. |
We can probably simplify our use of release branches for Horizon a little which would address your issue without burdening our process with a custom git flow. My understanding is we've been using release branches to prepare changes for the next minor or patch release of Horizon, but that's probably unnecessary. We really only need to use a release branch if we're preparing a minor release for a previous major release, or a patch release for a previous minor release, or if there are breaking changes on Example 1: Example 2:
This is what we're doing today I think? Maybe Horizon is the only service not doing this. It's simple to have
I think we should avoid anything that causes our monorepo to center around one specific project even if ti is true that Horizon is the most actively developed code in here. |
@leighmcculloch I think what you're proposing is that Your proposal makes sense except a few situations:
|
@leighmcculloch I like your proposal and believe it would simplify the whole process, the reason why I mentioned a "develop" branch was to keep our current contract where master contains the stable versions of all the different services. But if we can get rid of that all together, even better.
What's the reason for not wanting to include those specific commits? I get what you are saying about the reverts, but maybe I just don't have strong feelings about reverts being present in the master timeline, at the end of the day our git log is a snapshot of our dev history and I think reverts are a normal part of the dev life cycle.
Makes sense - I think Example 2 covers that scenario.
Could you elaborate a little bit more about this? How do we handle this scenario today? Also wouldn't this be the same as defining commit X as the final commit for release |
@bartekn Thanks for going into detail about why parts of the process work the way they do. I think this is really good the way it is. The use of the release branches is simple, easy to explain, and has some tangible benefits. @abuiles I think we can change the base branch of contributor's PRs you did in #1953 and most contributors will have enabled the ability for us to push to their branch, so we can revert commits that are from master if we need to. We could try mentioning it in the contributing guidelines, but I think it will be overlooked, I think we just need to help people in the moment on the PR while we have this process. When we move to multiple-modules we might need to change this process because changes in the SDK won't be able to be easily bundled with a release of Horizon. Once that happens there might be less advantage to using our existing process over a simple |
@leighmcculloch @bartekn I think we can close this and now this will issue will help us as "documentation" on why we use our current flow. |
Have we considered a different git flow (do not confuse with GitFlow) on the go monorepo? The reason why I'm bringing this is that our current approach of
release-service-name-vx.x.x
can be kind of confusing specially for outside contributors.I'm bringing this because of #1953 (review) -- he saw the issue and just branched off of master to submit a fix. Maybe we mention in the contributions guideline where a PR should have been opened, but instead what the developer did was to do what he's used to do. I think I made the same mistake when I open my first PR to Horizon.
A possible solution could be to have a branch called "develop" (even make it the default in GitHub) and use it as the default development branch for Horizon which is the most active service anyways. Then for other services I'm okay having something like
develop-horizonclient
,develop-ticker
and so on.Another approach which I like more would be to move to trunk based development, where trunk is
master
and then usetags
to cut releases. This means that master will contain unstable versions of each service, but I'd say that's fine, if you want a stable release use the tag or download from the releases tab.The text was updated successfully, but these errors were encountered: