Versioning and tagging bundles and modules - practice and process #239
-
I have a bundle of several modules, and I haven't quite figured out how to assign version names. One of my options doesn't seem to be working in my The unexpected behavior is: if I do Now to the questions: Should the bundle and all its modules have the same version number, or should each module and the bundle have separate versions? I like semantic versioning, and it makes sense to for each module to have a separate semantic version (otherwise a modules version changes even if the code changes are in another module). It makes less sense to me for the bundle to have a semantic version, since other than the modules it really only contains documentation. So perhaps date versioning is better for the files in the bundle that don't belong to a module. Then, what should be the relationship between the version and any git tags? Git tags are attached to the entire repository, so if you want the git tag to be the version name, everything has to have the same version name. Maybe instead each time module I am pretty sure that the LaTeX3 project uses date versioning for everything, including tags. And maybe one reason for that is it makes this question very easy to answer. But I know many other packages have semantic versions, and some of those are probably kept in bundles, so I'm wondering if there are other conventions. I haven't made any releases of these modules (only using them for personal use) so this is still theoretical. But at some point I'd like to share them with coworkers or CTAN. Any advice would help. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
As you observe, the team tend to use date-like strings for bundles. (Formally they are not actual dates: we use nominal values typically at the start or middle of the month.) Within bundles, of course, you can do what you like: that doesn't have to be automated or could be done using a more complex script. Taking LaTeX2e's An alternative approach is seen in the The point is that there is no one 'right' approach here: you just have to pick something. Bundles of course don't align well with 'one tag per version per release', so if that's what you want you are better splitting up entirely. Assuming you are going more for a mono-repo (which can make a lot of sense), then choose a scheme that works best for you. I think that a semantic version string for a bundle with semantic version strings for each module is likely a bit confusing, so I'd go with one of
as both of these work reasonably well. |
Beta Was this translation helpful? Give feedback.
As you observe, the team tend to use date-like strings for bundles. (Formally they are not actual dates: we use nominal values typically at the start or middle of the month.) Within bundles, of course, you can do what you like: that doesn't have to be automated or could be done using a more complex script.
Taking LaTeX2e's
tools
as an example, this is a 'module' which has a nominate date that appears only in theREADME.md
file - we do that as CTAN want something in the upload to contain the nominal date string. Each.dtx
withintools
is entirely hand-versioned: this is partly because the history of LaTeX2e predates current version control practice, and so we expect all changes to be marke…