-
-
Notifications
You must be signed in to change notification settings - Fork 167
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
tag suggestions #904
Comments
Thanks for your feedback and ideas.
I hesitate to create a
I don't see value there, seeing as this is already trivially easy with We already have |
Right, I should not specify how it should be implemented: As a nbgv user I would like to be able to tell nbgv to create a tag on my behalf and that the new tag will represent a
Understood. As a nbgv user I would like to be able to create a new tag based on an existing tag and have nbgv promote the pre-release section of the version identifier. Thus
Understood. In our workflow we promote builds which is to say we (effectively) copy binaries from one environment to the next. We use a build as a glorified way to copy files. Addition of correct version metadata is desirable.
I very much like the thought process behind |
NB.GV doesn't do magic branch names (like another git-based versioning tool is). Branch names have only one small impact on the version, and version numbers and alpha/beta isn't a part of that.
I'm very curious about your use case for this. When would you want to create a tag without knowing the version? You've already discovered
I'd like to understand your release creation process more. |
Hi Andrew, thanks for your comments. I went back to
Yes.
I think so - there are some things I still don't understand:
Not sure I understand this - documentation says "If the version on the current branch is..." If version.json holds the id of the next release, how does nbgv know the version of the current branch? These two statements also seem to indicate that the version in version.json is not the next one:
I read a statement in the documentation of a different versioning tool. It says something like "Semantic Versioning is all about releases, not commits or builds. This means that the version only increases after you release". Ironically, this pearl of wisdom helped me realize why the approach taken by nbgv is the correct one. By correct approach I mean that My thought process is that determining the next version the instant before the binary is actually created gives me complete control over what the next version will be, and it frees me from needing to add any magic to my branching/tagging (but these may be non sequiturs as you have mentioned). Your points about version.json pointing to next version make total sense but what if, at the last moment, you decide your release is going to be 1.1.0 and not 1.0.1 as you first thought? Also, I want to back up a bit and explain our use of tags: We only create tags when we release. We don't have versions so we use folder names and those folder names match our tag names. My goals in implementing versioning are: Every binary .exe that is released is uniquely versioned This is why I am requesting the tag functionality. I want the existence of a tag to be a prerequisite to kicking off a build and the build must build off the tag. I suppose we could use a branch but I really like the idea of tag immutability.
As a convenience, eliminate typos, and use within a script to allow nbgv to be the single source of truth. |
version.json describes the current version of that commit. It doesn't express some future version, nor some past version. If you want a particular commit to build v3.4 of your software, you need that commit to contain a version.json that says During development, whether version.json carries the same version that you shipped before or the version you anticipate shipping doesn't matter so much, since you haven't released it yet. Certainly though by the time you release, you should make sure that version.json contains the version you intend to release. If it doesn't, you have a commit to author to change the version in that file. Every commit will build a unique version, because the commit feeds into the version system. If you specify 3.4 in version.json, the commit info feeds into the next two numbers, such that the exe you build may have version 3.4.123.23582. Even as you develop, each commit will produce a unique version. So you don't even have to bump from 3.4 to 3.5 from one release to the next, because it will naturally progress from (e.g.) 3.4.123.23582 to 3.4.128.19234. And if you want to tag a commit, just use I would not tag every commit that ever built. That'll result in roughly every commit having a tag, which seems extremely noisy. Hopefully by tagging releases you mean real, public releases which are few and far between. That makes sense. You know you can also use |
Hi @AArnott ,
To this
|
@gcadmes-extron the |
I'm still learning nbgv - a couple suggestions related to
tag
:It seems a command like
tag [major|minor|patch|pre]
would be useful. If version.json says version is1.2.3-alpha
tag pre
would bump it to1.2.3-beta
and create a tag with same name.tag promote <tagname>
seems useful also.tag promote 1.2.3-alpha
would create1.2.3-beta
based on1.2.3-alpha
. I imagine there will be some limitations around this but the essence of the command is to create tag B based on tag A.These suggestions are based on workflow described here. As mentioned I'm still learning. If I'm anywhere close to the mark I'll make a feature request.
The text was updated successfully, but these errors were encountered: