Comments (13)
For the version scheme I recommend semver which is why I am used to in Node and found most practical.
We haven't published any releases so far so I was wondering if it makes sense to do at this point.
You can create an annotated Git tag with a version number or label and pass that to fisher install
when you install a package:
fisher install pure@rafa-wild-release
or
fisher install [email protected]
We use annotated Git tags to version Fisherman too, also keep a comprehensive change log and create releases for each patch, minor and major bump.
from pure.
As the installer is quite stable, I'm going to create a 1.0.0
release.
from pure.
I don't know about fisherman, but OMF currently has no version-locking feature.
Even if it had, I believe it would be specified by a revision, which in the world of git means that you can either specify a commit or a (version) tag. If I'm correct, this scheme gives you flexibility not to name your tags with traditional version numbers, but with major changes instead. For example, "fish-2.1-compat" could be the last tag that still supports fish 2.1. The next commit depends on some features that were only introduced in fish 2.2. Alternatively, a user might decide that he doesn't like some changes made in the last few commits and wants to stay with commit 5ab58a3f (just throwing numbers here out of my head). It won't require any work on your side.
I can think of two common uses for version numbers:
- Marketing - You bump numbers to make your clients feel they are missing something great if they don't purchase the latest, most expensive version. Or, depending on your business model, you bump numbers to make your clients feel like you are awarding them huge improvements "on the house".
- Compatibility - This is especially relevant to frameworks, libraries and tools. Major version = major change; minor version = minor change; etc. As a vendor you have a chance to deprecate parts of the interface, and as a client you know when the deprecated interfaces are going to be gone.
IMHO, neither of these apply here. So if I were you, I'd leave version numbers for now. At least until any framework supports revision locking. If you are happy with the theme then you shouldn't expect anything more than a few bugfix/enhancement commits in the near future. Nothing that justifies versioning anyway.
I'd take it as a reason to be proud. It also frees you to start thinking about the next big challenge ;)
from pure.
@bucaran yeah, I would use semver for that too. Do you use anything to automate change logs or you just do it manually?
from pure.
I'm in favor of semver, it is widespread and getting more aknowledge every day and it's quite straight-forward:
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
I would argue that when the installer is working we can release the first stable release 1.0.0
. What do you think
from pure.
@edouard-lopez That's exactly what I was thinking 👍
from pure.
Do you use anything to automate change logs or you just do it manually?
To create a new version and commit it to the repo I use this:
For the change log, I write it manually, every word of it. 😄
from pure.
Syntax
what's the $^
, I never saw that in Bash… oh it's make variable
$^
The names of all the prerequisites, with spaces between them. For prerequisites which are archive members, only the named member is used (see Archives). A target has only one prerequisite on each other file it depends on, no matter how many times each file is listed as a prerequisite. So if you list a prerequisite more than once for a target, the value of$^ contains just one copy of the name. This list does not contain any of the order-only prerequisites; for those see the ‘$ |’ variable, below.
For us
It should refer to the $PURE_INSTALL_DIR
.
Workflow
So if I understand correctly (I skim throught code) your workflow is:
- work on the project, version files
- bump the
VERSION
file ; - run
make release
- and finally
git push
Question
@bucaran why use git -C <path>
instead of cd <path>
at the begin and cd -
at the end?
from pure.
@rafaelrinaldi git -C
is only used there actually. Other instances in Fisherman use an approach similar to what you suggest. The reason I still keep it like that in the Makefile, is because it saves a few strokes and at the moment I am the only person responsible for creating releases in Fisherman.
from pure.
@rafaelrinaldi would you mind reviewing the release draft?
from pure.
@edouard-lopez Let's do this! Draft looks good. Thanks to everyone who collaborated on this thread.
from pure.
It's published !
from pure.
Thanks for the discussion on this thread, lots of great insights here. Closing it since we already published two releases already 👍
from pure.
Related Issues (20)
- Displaying conda/virtualenv env name has incorrect spacing HOT 2
- type: Unknown option '--quiet' HOT 1
- prompt character broken HOT 3
- Change git branch color HOT 3
- Add 🐍 to the virtualenv title so I know that's what I see HOT 9
- [request] Is there anyway to have the following prompt: $tail on $git_branch HOT 1
- Missing blank line between prompts? HOT 2
- Add CI for MacOS
- MacOS: warning: An error occurred while redirecting file '/proc/1/cgroup' HOT 26
- Prompt outputting _pure_is_inside_container 1 HOT 4
- head: cannot open '/proc/1/sched' for reading: No such file or directory HOT 6
- Prompt displays '2' character around user@host section HOT 1
- VI-mode visual mode prompt HOT 2
- Cannot uninstall 4.4.1 HOT 2
- WSL 1 shows user@hostname HOT 3
- Add kubernetes/k8s support HOT 1
- Is there any option in pure like truncation_length in starship? I want it to show last three parent folder. HOT 2
- 📖 Revamp README and docs
- Pure prompt contains newline in VSCode terminal HOT 3
- Improve `git` prompt during rebase conflicts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pure.