-
Notifications
You must be signed in to change notification settings - Fork 332
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
Repo split #2639
Comments
Detailed proposalBelow is a more detailed proposal and an (opinionated) action plan ->
Phase 1IMO, the best way to extract a directory in a git repo into its own repo is to use git-filter-repo - this is also the officially recommended tool for this purpose both by git and GitHub. Creating the
|
I think the history should be preserved unchanged in both repositories after the split (without making it an official fork on GitHub). The repo size of 39 MB is not something I would worry about. This way, anybody with an outstanding branch can rebase or merge against either or both the new repositories. |
I would also take exception to |
With my current proposal, the history will be preserved unchanged for the relayer repo. The module repo will also preserve the history but only for the modules, proto & proto-compiler crates, because we're using
Do you mean we move the |
To In |
Two minor thoughts:
|
I'm generally against splitting crates that are tightly coupled, like handlers and ibc-proto need to be. This leads to increased developer logistics when changes are introduced. Having to synchronize a change across two repositories (ibc-rs and hermes) is already a burden, but at least there are good reasons for this split, including the tentative idea to get rid of code reuse between modules and hermes. |
As discussed with @plafer and @romac, we decided to keep the proto crates in a different repository for now since both the relayer and modules currently depend on the raw types. With the split this means each repo will have it's own version(s) of the domain types. We seem to have consensus on
|
An alternative is to create a repo I think hosting the Hermes repo under |
Regarding the naming of the proto repo, I see that we already have an archived |
Yeah let's re-use that repo 👍🏻 |
While we're at it, we should use this opportunity to rename the default branch from |
I would use this event to break out |
Add Cargo.lock to .gitignore Add workspace Cargo.toml Fix github workflow Add dependabot.yml Move ibc-proto crate to the root instead of using a workspace Add license file Fix links to point to cosmos/ibc-rs and cosmos/ibc-proto-rs Fix workflow triggers to use main branch Update MSRV Add sync-protobuf.sh script
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory Bump tendermint-rs dependencies to v0.25.0
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory Bump tendermint-rs dependencies to v0.25.0 Use cosmos/ibc-proto-rs patch in ci/no-std-check Fix clippy errors
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory Bump tendermint-rs dependencies to v0.25.0 Use cosmos/ibc-proto-rs patch in ci/no-std-check Fix clippy errors Undo no-std-check use deletions
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory Bump tendermint-rs dependencies to v0.25.0 Use cosmos/ibc-proto-rs patch in ci/no-std-check Fix clippy errors Undo no-std-check use deletions Fix Cargo.tomls
Might also be a good idea to rename from |
Good idea but when we use the tool it's |
Yes, basically rename the binary. @harveenSingh can you please create a separate issue in the gm repo to track renaming I will close this as the repo split is done. |
Add Cargo.lock to .gitignore Update all GitHub workflows Update Cargo.tomls to point to upstream ibc-proto Add root level README.md Add CONTRIBUTING.md Rename branch master -> main in CONTRIBUTING.md Add ADR dir Fix links to point to cosmos/ibc-rs Add license file Fix workflow triggers to use main branch Fix links Fix workflow trigger paths Remove references to hermes in docs Update README.md Removed Requirements section. I don't think it adds much value, and it would always fall behind (e.g. it was saying the latest Rust version is 1.60). Update README.md Remove the term "IBC module" Update README.md Update README.md Update README.md Fix dependabot.yml ibc crate directory Bump tendermint-rs dependencies to v0.25.0 Use cosmos/ibc-proto-rs patch in ci/no-std-check Fix clippy errors Undo no-std-check use deletions Fix Cargo.tomls
Summary
It has been proposed that we split the ibc-rs monorepo into two repos - one for the proto & module crates and the other for the relayer crate (and its associated crates).
Additionally, the relayer code must not depend on the
ibc
crate to have clear boundaries/separation and allow the modules to evolve independently.Problem Statement
The monorepo approach is restrictive and becoming difficult to maintain. (See #1437 (comment))
Moreover, having the relayer crate depend on the ibc crate makes it difficult to modify one without touching the other, and have resulted in code bloat and unclear boundaries - for e.g. the modules code contains relayer specific code.
Proposal
Using the ideas described in #2541 and #1437, the repo hosting the relayer crates (the
relayer
repo) would look like so ->And the
modules
repo would look like so ->Acceptance Criteria
The ibc-rs repo is split into two repos as proposed above, ideally preserving history.
TODOs
master
tomain
gm
out of the repositoryFor Admin Use
The text was updated successfully, but these errors were encountered: