mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Explain how to work with subrepos
This commit is contained in:
parent
1a87c49e33
commit
04c8191719
@ -188,7 +188,53 @@ with one another are rolled up.
|
|||||||
Speaking of tests, Rust has a comprehensive test suite. More information about
|
Speaking of tests, Rust has a comprehensive test suite. More information about
|
||||||
it can be found [here][rctd].
|
it can be found [here][rctd].
|
||||||
|
|
||||||
### External Dependencies
|
### External Dependencies (subrepo)
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* none so far, see https://github.com/rust-lang/rust/issues/70651 for more info
|
||||||
|
|
||||||
|
They are just regular files and directories. This is in contrast to `submodule` dependencies
|
||||||
|
(see below for those).
|
||||||
|
|
||||||
|
If you want to synchronize or otherwise work with subrepos, install the `git subrepo` command via
|
||||||
|
instructions found at https://github.com/ingydotnet/git-subrepo
|
||||||
|
|
||||||
|
#### Synchronizing a subrepo
|
||||||
|
|
||||||
|
There are two synchronization directions: `subrepo push` and `subrepo pull`. Both operations create
|
||||||
|
a synchronization commit in the rustc repo.
|
||||||
|
This commit is very important in order to make future synchronizations work.
|
||||||
|
Do not rebase this commit under any circumstances.
|
||||||
|
Prefer to merge in case of conflicts or redo the operation if you really need to rebase.
|
||||||
|
|
||||||
|
A `git subrepo push src/tools/clippy`
|
||||||
|
takes all the changes that
|
||||||
|
happened to the copy in this repo and creates commits on the remote repo that match the local
|
||||||
|
changes (so every local commit that touched the subrepo causes a commit on the remote repo).
|
||||||
|
|
||||||
|
A `git subrepo pull src/tools/clippy` takes all changes since the last `subrepo pull` from the clippy
|
||||||
|
repo and creates a single commit in the rustc repo with all the changes.
|
||||||
|
|
||||||
|
#### Creating a new subrepo dependency
|
||||||
|
|
||||||
|
If you want to create a new subrepo dependency from an existing repository, call (from this
|
||||||
|
repository's root directory!!)
|
||||||
|
|
||||||
|
```
|
||||||
|
git subrepo clone https://github.com/rust-lang/rust-clippy.git src/tools/clippy
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a new commit, which you may not rebase under any circumstances! Delete the commit
|
||||||
|
and redo the operation if you need to rebase.
|
||||||
|
|
||||||
|
Now you're done, the `src/tools/clippy` directory behaves as if clippy were part of the rustc
|
||||||
|
monorepo, so no one but you (or others that synchronize subrepos) needs to have `git subrepo`
|
||||||
|
installed.
|
||||||
|
|
||||||
|
|
||||||
|
### External Dependencies (submodules)
|
||||||
|
|
||||||
Currently building Rust will also build the following external projects:
|
Currently building Rust will also build the following external projects:
|
||||||
|
|
||||||
@ -221,7 +267,6 @@ before the PR is merged.
|
|||||||
|
|
||||||
Rust's build system builds a number of tools that make use of the
|
Rust's build system builds a number of tools that make use of the
|
||||||
internals of the compiler. This includes
|
internals of the compiler. This includes
|
||||||
[Clippy](https://github.com/rust-lang/rust-clippy),
|
|
||||||
[RLS](https://github.com/rust-lang/rls) and
|
[RLS](https://github.com/rust-lang/rls) and
|
||||||
[rustfmt](https://github.com/rust-lang/rustfmt). If these tools
|
[rustfmt](https://github.com/rust-lang/rustfmt). If these tools
|
||||||
break because of your changes, you may run into a sort of "chicken and egg"
|
break because of your changes, you may run into a sort of "chicken and egg"
|
||||||
|
Loading…
Reference in New Issue
Block a user