felixguendling / cista

Cista is a simple, high-performance, zero-copy C++ serialization & reflection library.
https://cista.rocks
MIT License
1.74k stars 110 forks source link

Create a stable release branch #184

Closed g-arjones closed 1 year ago

g-arjones commented 1 year ago

I'm currently using cista in a larger project (we use dozens of proprietary and 3rd-party repositories to build our workspace) and the fact cista does not provide a stable release branch is becoming a nuisance for us because it causes constant and unnecessary rebuilds given how frequently new commits are added to the master/devel branch.

Would you consider creating a stable branch that would only be updated when a new version was released? I would really appreciate that.

Thanks!

felixguendling commented 1 year ago

Sure, that's possible. To understand your issue better: would it be an option to use the latest release tag? All releases are tagged - a tag is (just like a branch) usable as a Git reference: https://github.com/felixguendling/cista/tree/v0.13 In the projects where we use cista, we just reference an exact Git hash (but a tag would also work), so each project can update its dependencies at its own pace: https://github.com/motis-project/motis/blob/master/.pkg#L8

But of course, it's also possible to add a 'dev' branch and only merge to the 'master' branch for releases. However, all dependency management solutions I know of allow you to reference a specific version, which would eliminate that problem.

felixguendling commented 1 year ago

In general I would not recommend referencing just a branch head for a dependency because even with the solution to have a separate release branch, there can be breaking changes that you don't want to have in your build immediately. You want to make a strategic decision when to upgrade to which release (depending on: do you benefit from the new features that were added, are the bug fixes relevant for your project? etc.).

g-arjones commented 1 year ago

In general I would not recommend referencing just a branch head for a dependency because even with the solution to have a separate release branch

We have internal tooling that takes care of that. During development, we use branch heads but as we prepare for a release we pin all 3rd-party projects we use and then generate our own stable branches with them.

So, a stable branch really fits our use case better than just commit tags.

felixguendling commented 1 year ago

I created a stable branch. Will rebase the stable on master for each new release tag. https://github.com/felixguendling/cista/tree/stable

g-arjones commented 1 year ago

Thanks a lot!