# Add workspace-hack \(\#27277\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/01ec6e0f77350f784f241c5d66cf1928b1547482)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 01ec6e0f77350f784f241c5d66cf1928b1547482

Requested commit: 01ec6e0f77350f784f241c5d66cf1928b1547482

Commit: 01ec6e0f77350f784f241c5d66cf1928b1547482

Tree: 700daaf3bd1146d147d3f81cd3fa2c428fd5aad5

Author: Julia Ryan

Committer: GitHub

## Message

```
Add workspace-hack (#27277)

This adds a "workspace-hack" crate, see
[mozilla's](https://hg.mozilla.org/mozilla-central/file/3a265fdc9f33e5946f0ca0a04af73acd7e6d1a39/build/workspace-hack/Cargo.toml#l7)
for a concise explanation of why this is useful. For us in practice this
means that if I were to run all the tests (`cargo nextest r
--workspace`) and then `cargo r`, all the deps from the previous cargo
command will be reused. Before this PR it would rebuild many deps due to
resolving different sets of features for them. For me this frequently
caused long rebuilds when things "should" already be cached.

To avoid manually maintaining our workspace-hack crate, we will use
[cargo hakari](https://docs.rs/cargo-hakari) to update the build files
when there's a necessary change. I've added a step to CI that checks
whether the workspace-hack crate is up to date, and instructs you to
re-run `script/update-workspace-hack` when it fails.

Finally, to make sure that people can still depend on crates in our
workspace without pulling in all the workspace deps, we use a `[patch]`
section following [hakari's
instructions](https://docs.rs/cargo-hakari/0.9.36/cargo_hakari/patch_directive/index.html)

One possible followup task would be making guppy use our
`rust-toolchain.toml` instead of having to duplicate that list in its
config, I opened an issue for that upstream: guppy-rs/guppy#481.

TODO:
- [x] Fix the extension test failure
- [x] Ensure the dev dependencies aren't being unified by Hakari into
the main dependencies
- [x] Ensure that the remote-server binary continues to not depend on
LibSSL

Release Notes:

- N/A

---------

Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
```

## Parents

- [07a77792c5146ab917843a3208bc70dce2f13d11](https://git.cafe/gitcafe/zed/commit/07a77792c5146ab917843a3208bc70dce2f13d11?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/01ec6e0f77350f784f241c5d66cf1928b1547482?format=markdown)
