Skip to content

Implement gitmulti per its design (currently a 2019 CLI stub, no logic) #7

Description

@Shinrai

Preserving the intent so it isn't lost — gitmulti is a distinct idea that was never implemented.

What it's meant to be (from the README): a tool to fan a single edited working folder out to the multiple repos each file belongs to. Scan a tree for .gitmulti files (JSON manifests) that map files/paths → a repo's git URL; the tool then moves files into place and runs commit / push / pull(-request) per individual repo. Deliberately scoped to just commit/push/pull.

This is NOT the same as git-embedded.git-embeddedhides a child repo behind an anonymous gitlink (keeps its origin URL out of the public parent); gitmulti does the opposite direction — distributes edits from one combined folder out to many independent repos. They solve different problems.

Current state (abandoned since 2019):gitmulti.js is a ~14-line commander skeleton. It registers a default list [dir] subcommand as an executable subcommand pointing at a gitmulti-list sibling that was never written; the intended install/search commands and -r/--repo / -d/--dir options are commented out; the --verbose option is dead wiring (a listener with no matching .option()); there is no .gitmulti parsing, no file-assignment, and no per-repo git orchestration. lodash is a dependency but unused.

Work to do (not urgent):

  • Implement the .gitmulti JSON manifest format + parser (file/path → repo-URL mapping).
  • File assignment + move-into-place logic.
  • Per-repo commit / push / pull orchestration.
  • Resolve the list subcommand (write gitmulti-list, or restructure to non-executable subcommands); remove dead --verbose wiring; drop unused lodash.
  • Build it ESM-native with a CJS wrapper (folds in Convert to ESM-native + CJS wrapper (dual format) #5) rather than converting the stub.

The @v4 onboarding added CI + characterization tests around the current stub, so any implementation starts from green.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions