summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorOliver Scherer <github35764891676564198441@oli-obk.de>2020-04-01 14:53:10 +0200
committerOliver Scherer <github35764891676564198441@oli-obk.de>2020-04-01 14:53:10 +0200
commit56d0c81c750fa3cbe63f20bb30570cf084b9b98c (patch)
tree7113a0ffae6dd1ae3ce1fe18023c0827e9aac226 /CONTRIBUTING.md
parent04c8191719761dd8617fb84a86fe114ed7ac6eab (diff)
s/subrepo/subtree/
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md32
1 files changed, 16 insertions, 16 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 69ce9dae5aa..fb1d43c8711 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -188,7 +188,7 @@ with one another are rolled up.
Speaking of tests, Rust has a comprehensive test suite. More information about
it can be found [here][rctd].
-### External Dependencies (subrepo)
+### External Dependencies (subtree)
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:
@@ -198,39 +198,39 @@ differently from other crates that are directly in this repo:
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
+If you want to synchronize or otherwise work with subtrees, install the `git subtree` command via
+instructions found at https://github.com/ingydotnet/git-subtree
-#### Synchronizing a subrepo
+#### Synchronizing a subtree
-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.
+There are two synchronization directions: `subtree push` and `subtree pull`.
-A `git subrepo push src/tools/clippy`
+A `git subtree push -P 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).
+changes (so every local commit that touched the subtree 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
+A `git subtree pull -P src/tools/clippy` takes all changes since the last `subtree pull` from the clippy
repo and creates a single commit in the rustc repo with all the changes.
-#### Creating a new subrepo dependency
+You always need to specifiy the `-P` prefix to the subtree directory. If you specify the wrong directory
+you'll get very fun merges that try to push the wrong directory to the remote repository. Luckily you
+can just abort this without any consequences.
-If you want to create a new subrepo dependency from an existing repository, call (from this
+#### Creating a new subtree dependency
+
+If you want to create a new subtree 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
+git subtree add -P src/tools/clippy https://github.com/rust-lang/rust-clippy.git master
```
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`
+monorepo, so no one but you (or others that synchronize subtrees) needs to have `git subtree`
installed.