Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 3.58 KB

MAINTAINING.md

File metadata and controls

90 lines (66 loc) · 3.58 KB

Notes for maintainers

Accepting pull requests

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+ permissions
  • bors 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.

Upgrades

Gradle

# 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.

New IDE version

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.

Common places

  • 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)

Specific places

  • Notifications (see MissingToolchainNotificationProvider)
  • Run Cargo Command action
  • Implement Members refactoring
  • Introduce Variable refactoring
  • Extract Function refactoring
  • Auto Import quick fix & options
  • Unresolved Reference inspection options

Releases

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 in plugin.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: