You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+18-14Lines changed: 18 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,28 +7,29 @@ Fearlessly release workspace crates and with beautiful semi-handcrafted changelo
7
7
## Key Features
8
8
9
9
***zero-configuration**
10
-
*`cargo smart-release` needs no extra flags to _do the right thing™️_ smartly. If your intervention is needed it will let you know before it makes changes.
11
-
* It won't do anything if there are no changes.
10
+
*`cargo smart-release` needs no extra flags to _do the right thing™️_ smartly. If your intervention is needed it will let you know before it makes changes.
11
+
* It won't do anything if there are no changes.
12
12
***made for multi-crate workspaces**
13
-
* "Nothing stands by itself, and everything is interconnected" - is how it sees the world, allowing it to efficiently handling complex workspace graphs.
14
-
*_works just as well for single-crate workspaces_
13
+
* "Nothing stands by itself, and everything is interconnected" - is how it sees the world, allowing it to efficiently handling complex workspace graphs.
14
+
*_works just as well for single-crate workspaces_
15
15
***changelogs-deluxe**
16
-
* It maintains beautiful changelogs for you while allowing you to edit them for the final polish.
17
-
* See your release notes via in-repository _tag objects_ and in _GitHub Releases_
18
-
***plays well with `cargo release`**
19
-
*`cargo changelog` writes changelogs non-destructively, and only that, leaving the release workflow to [cargo-release].
20
-
16
+
* It maintains beautiful changelogs for you while allowing you to edit them for the final polish.
17
+
* See your release notes via in-repository _tag objects_ and in _GitHub Releases_
18
+
***plays well with `cargo release`**
19
+
*`cargo changelog` writes changelogs non-destructively, and only that, leaving the release workflow to [cargo-release].
20
+
21
21
If seeing is believing, here is [a 12 minute demonstration](https://www.youtube.com/watch?v=EOft_uMDVYE), and the same in 30 minutes is [also available](https://youtu.be/a4CzzxJ7ecE).
22
22
23
23
## Made for this Workflow
24
24
25
25
When developing various crates in a workspace, when committing changes and if the edit is breaking, a feature, or another
26
26
change I want to see in changelogs, [conventional] git messages will be used. This helps building changelog scaffolding automatically later.
27
27
28
-
When ready for releasing a particular crate or set of crates of interest, run `cargo smart-release [<crate-name> ...]` to simulate a release. For particularly thorough
29
-
but error-prone simulations (as in false positives) one could run `cargo smart-release --dry-run-cargo-publish`. Crates that don't compile for the host can be released by
30
-
passing `--target <triple>`, which is forwarded to every `cargo publish` invocation (including dry runs). To polish changelogs, run `cargo changelog --write <crate-name>`
31
-
to update the scaffolding and edit it by hand until it fits.
28
+
When ready for releasing a particular crate or set of crates of interest, run `cargo smart-release [<crate-name> ...]` to simulate a release.
29
+
To polish changelogs, run `cargo changelog --write <crate-name>` to update the scaffolding and edit it by hand until it fits.
30
+
31
+
For particularly thorough but error-prone simulations (as in false positives) one could run `cargo smart-release --dry-run-cargo-publish`.
32
+
Crates that don't compile for the host can be released by passing `--target <triple>`, which is forwarded to every `cargo publish` invocation (including dry runs).
32
33
33
34
After evaluating the release procedure and following instructions,
34
35
`cargo smart-release --execute` will cause the fully automatic release of one or more crates.
@@ -40,6 +41,7 @@ There are various other options that shouldn't be needed in the common case, use
40
41
## Installation
41
42
42
43
### Cargo
44
+
43
45
Via `cargo`, which can be obtained using [rustup][rustup]
44
46
45
47
```
@@ -88,7 +90,7 @@ Here is what `cargo smart-release` does differently: "It tries really hard to do
88
90
89
91
## Limitations
90
92
91
-
* it requires tables to be used when specifying versions, i.e. `crate = { version = "1" }` instead of `crate = "1".
93
+
* it requires tables to be used when specifying versions, i.e. `crate = { version = "1" }` instead of `crate = "1".
92
94
* it gracefully fails when encountering version requirement comparators which are not `^`, like `=`
93
95
* it's tested only by using it on `gitoxide`, there are only very few regression tests with little coverage.
94
96
* short object ids in changelogs may be ambiguous, as they are unconditionally truncated to 7 characters.
@@ -110,5 +112,7 @@ Thanks to [cargo-release] for showing the way and for incredible fast response t
110
112
Special thanks go to [git-cliff] which gave me the nudge needed to want to write my own.
0 commit comments