Skip to content
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

Consolidate all repositories #10307

Closed
matklad opened this issue Sep 22, 2021 · 7 comments
Closed

Consolidate all repositories #10307

matklad opened this issue Sep 22, 2021 · 7 comments

Comments

@matklad
Copy link
Member

matklad commented Sep 22, 2021

rust-analyzer org has a bunch of repos. I feel that they all (except the main one) are neglected, at least by me -- I miss PRs, the r lists are not synced, there's no established workflows for smaller repos, etc. Additionally, if we are to move rust-analyzer to rust-lang, it's easier to move over just one repo.

I suggest merging satellite repos into the main one, using the following stategy:

  • each sub-project gets a folder inside /libs directory
  • each sub-project is a separate workspace
  • the main project does not use path dependencies
  • in CI, we add an separate parallel job which runs cargo test in each of the smaller projects
  • smaller projects keep their auto-publish infrastructure

Specifically, I feel we should definitely merge

I am torn about https://github.com/rust-analyzer/rowan -- it feels big enough to be worthwhile to be a separate thing...

@bjorn3
Copy link
Member

bjorn3 commented Sep 22, 2021

It would be nice to preserve the full history of the merged repos. You could either use git subtree for this or in the original repo move all files to the dir it would end up after the merge, commit and then merge from their repo into the main rust-analyzer repo. This second option was for example done when merging a big chunk of miri into rustc to be the new const-eval engine.

@djc
Copy link

djc commented Sep 22, 2021

You've definitely thought about this, so can you articulate why you don't want to flatten everything into a single workspace? Your approach here somewhat seems to contradict your own article on managing large Rust workspaces.

@matklad
Copy link
Member Author

matklad commented Sep 22, 2021

The physical reason here is that crates in libs/* have a meaningful semver, while crates in crates/* don't. This kinds of reasons are a good motivation for adding some hierarchy. That's, eg, the reason behind the split of rust-lang/rust into /compiler and /library (incidentally, the remaining /src which contains just stuff is a good demonstarton why trees are hard).

So, we have independent versioning, and independent CI, and that's why we put them into /libs.

@djc
Copy link

djc commented Sep 22, 2021

Makes sense, thanks for expanding on that.

@kjeremy
Copy link
Contributor

kjeremy commented Sep 22, 2021 via email

@jplatte
Copy link
Contributor

jplatte commented Sep 24, 2021

If there won't be any path dependencies, you could even limit the new CI jobs to only run when those crates are changed by a PR (and conversely, have some of the current CI jobs only run when part of the big workspace is touched, though this might be harder).

Docs: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths

@Veykril
Copy link
Member

Veykril commented Aug 5, 2024

We've moved the lsp-server into this repo, the other two I personally don't feel like we should move them in here (ungrammar maybe though I doubt that will really receive any more changes)

@Veykril Veykril closed this as completed Aug 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants