Would the "stable" branch be any different from the "release" branch?
If it's actually a not-so-stable development branch for 3.3 while a
separate branch contains development for 3.4, then maybe indeed
calling branches v3.3 and v3.4 make more sense.


+1

what i would do:
  • one branch that holds the bleeding edge. i'd call it main, just to go with the flow.
  • branches for ASDF versions (down to the desired resolution, probably major.minor), so that you can easily cherry pick or backport fixes into them. a new version-branch is forked off of main whenever a release happens.
  • optionally a stable *tag* as an indirection to the latest release. it communicates which specific git revision is it that the maintainer considers the stable state at any moment in time. it comes handy e.g. in CI scripts that want to check out the latest ASDF release, etc...
note though that this last point requires force-pushing the stable tag, which i have done before, but i'm not completely sure it results in a slick workflow. the main question is whether or not a git fetch/pull silently and automatically updates the tag in the local repo.

- attila