We require a CLA from all contributors. See CONTRIBUTING.md for the details. The most important one is that signing is fully electronic and can be done in seconds. The list of GitHub users who have already signed the CLA is at CONTRIBUTORS.txt.
We use bors to make sure master is always green. Common commands are
bors r+
to merge a PR,bors r=username
to merge a PR on behalf of the user without r+ permissionsbors delegate+
to grant the author of PR r+ right for this PR.
Don't forget to say "Thank you!" when merging pull requests! :)
Each non-stalled pull-request should be assigned to a reviewer, who should make sure that PR moves forward. However, anybody with r+ can accept any PR, if they are confident that the PR is in a good state.
To make release creation easier, PR can be labeled by special tags (feature
, fix
and internal
).
Set suitable tag(s) if you consider that note about PR should be added to changelog.
See more about releases in the corresponding section.
# Substitute 4.1 for latest version https://gradle.org/install/#install
# Repeat the command twice, as only the second iteration is idempotent =/
./gradlew wrapper --gradle-version 4.1 --distribution-type all
./gradlew wrapper --gradle-version 4.1 --distribution-type all
Note --distribution-type all
.
While supporting new IDE version we should check all UI components manually because we don't have UI tests yet. Especially it's important if it's major IDE update because major platform updates can bring a lot of changes.
- New rust project
- Import rust project
- Rust preferences (in Languages & Frameworks)
- Cargo toolbar
- Run configuration
- Debugger settings (in Build, Execution, Deployment > Debugger > Data Views > Rust, CLion only)
- Notifications (see
MissingToolchainNotificationProvider
) Run Cargo Command
actionImplement Members
refactoringIntroduce Variable
refactoringExtract Function
refactoringAuto Import
quick fix & optionsUnresolved Reference
inspection options
Nightly is released automatically by TeamCity. Alpha is generally released each two weeks.
Release notes live in intellij-rust.github.io.
To write notes, run ./changelog.py
. It goes thorough bors merge commits since the latest release and
creates a template with default info about merged PRs in _posts
.
The initial section of each point depends on special tags that PR can be labeled.
At this moment, changelog.py
supports feature
, fix
and internal
tags.
Note, PR can be marked with any subset of these tags.
Transform generated text to user-friendly one, add necessary links/gifs.
Don't forget to mention every contributor using by [@username]
syntax.
After finishing with release notes, execute ./gradlew makeRelease
tasks. It'll do the following things:
- add links to the release notes
- commit and push release notes to intellij-rust.github.io
- increase patch version in
gradle.properties
and update changelog inplugin.xml
- push "Changelog" commit to master branch of intellij-rust
- checkout "nightly" branch, advance versions of EAP idea an nightly rust, and push this branch
Then:
-
Hit Run on https://teamcity.jetbrains.com/viewType.html?buildTypeId=IntellijIdeaPlugins_Rust_UploadAlphaRust, make sure to select the changeset with "Changelog" commit.
-
Send and r+ PR which bumps nightly.