Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current development sources of the Rust crates are kept on the main branch. This applies to both single-crate and multi-crate repositories like
cosmwasmrepository. That's why on the main branch (which serves as the development branch), all dependencies between the developed crates should be defined using relative paths, as shown below (example taken fromcosmwasm-stdcrate):This convention is practical because:
cargoprevents publishing a crate that has a path dependency,The versions of crates under development on the
mainbranch should use the planned release version number with a-devsuffix. If such a crate is accidentally published, the suffix makes it easy to identify and immediately yank on crates.io.Changes to the source code on the
mainbranch must be made through pull requests based on separate branches.When the code on the
mainbranch is ready for release, create a separate branch namedrelease/followed by the major and minor version numbers from the version triple (e.g.,release/3.0). If such a branch already exists and the current change is only a bug fix, use the existing branch instead.The released version of creates must not contain
-devsuffix.On the release branch, all dependencies between crates should be changed to version numbers, like this:
Then all crates can be published to crates.io in the correct order, as determined by the dependency tree (from leaves to root).
This convention is convenient, because now:
cargoallows publishing all crates,