rust-lang / rust-lang/josh-sync

Upgrading Josh

Open
#42 8 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.