rust-lang / rust-lang/josh-sync
Upgrading Josh
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 31
- Forks
- 16
- Avg merge
- 4d 16h
- Merged PRs (30d)
- 6
Description
I have been seing some things happening in josh-sync like pr #38, where @Kobzol suggested to move to the new cli because josh-sync is re-implementing things we already added upstream.
Now I set out to contribute that myself while having some time over easter but then realized there is a bigger problem here:
There was one breaking change in Josh about handleing trivial merge commits. While there is a supported migration path, it is hard to adopt since it would require some subtrees to use the old version and others the new version, at least till of them are upgraded (on all branches).
I don't expect breaking changes link this in Josh to be common, but it still got me thinking...
Things would be a lot easier if the configuration for all subtrees was centralized in one place. It's semantics are anyway tied to the "current repo setup" and not really live on the same time axis as the code itself.
Places to store is could be a ref/branch here in rust-lang/josh-sync or rust-lang/rust. (could even be on the main branch of "josh-sync" if the tool is not intended to use outside of rust-lang)
Then when doing syncs, josh-sync could get the config from there, all it would need is the "what subtree am i in" information passed to it.
Any thoughts on this? @Kobzol, @RalfJung
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading PR #38 and the current josh-sync synchronization flow, then trace how subtree configuration and subtree identity are handled. The issue proposes centralized configuration and migration support, but it does not identify files, tests, or acceptance criteria, so completion would require agreeing on the design and defining how syncs should obtain and apply that configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100