-
Notifications
You must be signed in to change notification settings - Fork 558
Document josh subtrees and update subtree repository list #2182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -3,24 +3,23 @@ | |||||
| The `rust-lang/rust` git repository depends on several other repos in the `rust-lang` organization. | ||||||
| There are three main ways we use dependencies: | ||||||
| 1. As a Cargo dependency through crates.io (e.g. `rustc-rayon`) | ||||||
| 2. As a git subtree (e.g. `clippy`) | ||||||
| 2. As a git (e.g. `clippy`) or a [josh][josh] (e.g. `miri`) subtree | ||||||
| 3. As a git submodule (e.g. `cargo`) | ||||||
|
|
||||||
| As a general rule, use crates.io for libraries that could be useful for others in the ecosystem; use | ||||||
| subtrees for tools that depend on compiler internals and need to be updated if there are breaking | ||||||
| changes; and use submodules for tools that are independent of the compiler. | ||||||
|
|
||||||
| ## External Dependencies (subtree) | ||||||
| ## External Dependencies (subtrees) | ||||||
|
|
||||||
| As a developer to this repository, you don't have to treat the following external projects | ||||||
| differently from other crates that are directly in this repo: | ||||||
|
|
||||||
| * [Clippy](https://github.com/rust-lang/rust-clippy) | ||||||
| * [Miri] | ||||||
| * [clippy](https://github.com/rust-lang/rust-clippy) | ||||||
| * [miri](https://github.com/rust-lang/miri) | ||||||
| * [rustfmt](https://github.com/rust-lang/rustfmt) | ||||||
| * [rust-analyzer](https://github.com/rust-lang/rust-analyzer) | ||||||
|
|
||||||
| [Miri]: https://github.com/rust-lang/miri | ||||||
| * [rustc_codegen_cranelift](https://github.com/rust-lang/rustc_codegen_cranelift) | ||||||
|
|
||||||
| In contrast to `submodule` dependencies | ||||||
| (see below for those), the `subtree` dependencies are just regular files and directories which can | ||||||
|
|
@@ -29,6 +28,20 @@ to these tools should be filed against the tools directly in their respective | |||||
| upstream repositories. The exception is that when rustc changes are required to | ||||||
| implement a new tool feature or test, that should happen in one collective rustc PR. | ||||||
|
|
||||||
| `subtree` dependencies are currently managed by two distinct approaches: | ||||||
|
|
||||||
| * Using `git subtree` directly | ||||||
|
||||||
| * Using `git subtree` directly | |
| * Using `git subtree` |
There's no "indirect" usage so I find the additional qualifier confusing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wanted to distinguish "using subtrees via josh" and "using subtrees via git subtree", but the word was extraneous, I suppose. Removed it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not quite true, tools generally prefer PRs to their own repos when changes don't have to be done in lockstep with Rust compiler changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was pre-existing, but I agree it was confusing, I reworded it.