Monorepo management for opam overlays
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs(monopam): remove misleading "git subtree" references

Monopam uses ocaml-git, not the git subtree CLI command. Update
synopsis, descriptions, docstrings, and generated CLAUDE.md template
to avoid implying otherwise.

+22 -23
+1 -1
README.md
··· 1 1 # monopam 2 2 3 - Monorepo manager for OCaml using git subtrees. 3 + Monorepo manager for OCaml. 4 4 5 5 ## Core Idea 6 6
+2 -2
dune-project
··· 10 10 11 11 (package 12 12 (name monopam) 13 - (synopsis "Manage opam overlays with git subtree monorepos") 14 - (description "Monopam helps manage an opam overlay by synchronizing packages between individual git checkouts and a monorepo using git subtrees.") 13 + (synopsis "Monorepo manager for OCaml packages") 14 + (description "Monopam helps manage an opam overlay by synchronizing packages between individual git checkouts and a monorepo.") 15 15 (depends 16 16 (ocaml (>= 5.2.0)) 17 17 (eio (>= 1.2))
+3 -3
lib/fork_join.ml
··· 49 49 type discovery = { 50 50 mono_exists : bool; 51 51 src_exists : bool; 52 - has_subtree_history : bool; (** Can we git subtree split? *) 52 + has_subtree_history : bool; (** Can we split this subtree? *) 53 53 remote_accessible : bool option; (** None = not checked, Some = result *) 54 54 opam_files : string list; 55 55 local_path_is_repo : bool option; (** For join from local dir *) ··· 761 761 Git.Repository.write_config git_repo config; 762 762 Ok () 763 763 764 - (** Execute git subtree split action. *) 764 + (** Execute subtree split action. *) 765 765 let exec_subtree_split ~fs ~state ~repo ~prefix = 766 766 let git_repo = Git.Repository.open_repo ~fs repo in 767 767 match Git.Repository.read_ref git_repo "HEAD" with ··· 774 774 state.split_commit <- Some (Git.Hash.to_hex split_hash); 775 775 Ok ()) 776 776 777 - (** Execute git subtree add action. *) 777 + (** Execute subtree add action. *) 778 778 let exec_subtree_add ~proc ~fs ~repo ~prefix ~url ~branch = 779 779 match Git_cli.fetch_url ~proc ~fs ~repo ~url ~branch () with 780 780 | Error e -> Error (Git_error e)
+4 -4
lib/fork_join.mli
··· 69 69 type discovery = { 70 70 mono_exists : bool; (** Does mono/<name>/ exist? *) 71 71 src_exists : bool; (** Does src/<name>/ exist? *) 72 - has_subtree_history : bool; (** Can we git subtree split? *) 72 + has_subtree_history : bool; (** Can we split this subtree? *) 73 73 remote_accessible : bool option; (** None = not checked, Some = result *) 74 74 opam_files : string list; (** Package names found from .opam files *) 75 75 local_path_is_repo : bool option; (** For join from local dir *) ··· 245 245 subtree into its own repository. 246 246 247 247 This operation: 1. Validates [mono/<name>/] exists 2. Validates 248 - [src/<name>/] does not exist 3. Uses [git subtree split] to extract history 249 - 4. Creates a new git repo at [src/<name>/] 5. Pushes the split commit to the 248 + [src/<name>/] does not exist 3. Splits the subtree to extract history 4. 249 + Creates a new git repo at [src/<name>/] 5. Pushes the split commit to the 250 250 new repo 6. Updates [sources.toml] with [origin = "fork"] 7. Auto-discovers 251 251 packages from [.opam] files. 252 252 ··· 271 271 272 272 This operation: 1. Derives name from URL if not provided 2. Validates 273 273 [mono/<name>/] does not exist 3. Clones the repository to [src/<name>/] 4. 274 - Uses [git subtree add] to bring into monorepo 5. Updates [sources.toml] with 274 + Adds the subtree into the monorepo 5. Updates [sources.toml] with 275 275 [origin = "join"] 6. Auto-discovers packages from [.opam] files. 276 276 277 277 @param url Git URL to clone from.
+1 -2
lib/git_cli.mli
··· 1 1 (** Git operations for monopam. 2 2 3 3 This module provides git operations needed for managing individual checkouts 4 - and git subtree operations in the monorepo. All operations use Eio for 5 - process spawning. *) 4 + in the monorepo. All operations use Eio for process spawning. *) 6 5 7 6 (** {1 User configuration} *) 8 7
+1 -1
lib/init.ml
··· 12 12 let claude_md_header = 13 13 {|# Monorepo Development Guide 14 14 15 - This is a monorepo managed by `monopam`. Each subdirectory is a git subtree 15 + This is a monorepo managed by `monopam`. Each subdirectory is a subtree 16 16 from a separate upstream repository. 17 17 18 18 > **Note:** Check `CLAUDE.local.md` (if it exists) for additional local
+2 -2
lib/monopam.ml
··· 1 1 (** Monopam - Monorepo package manager. 2 2 3 - Orchestrates git subtree operations for managing a monorepo of OCaml 4 - packages synchronized from upstream repositories. *) 3 + Manages a monorepo of OCaml packages synchronized from upstream 4 + repositories. *) 5 5 6 6 (** {1 Core Modules} *) 7 7
+4 -4
lib/monopam.mli
··· 1 1 (** Monopam - Monorepo package manager. 2 2 3 - Orchestrates git subtree operations for managing a monorepo of OCaml 4 - packages synchronized from upstream repositories. 3 + Manages a monorepo of OCaml packages synchronized from upstream 4 + repositories. 5 5 6 6 {1 Core Modules} 7 7 ··· 18 18 19 19 - {!Ctx} - Operational context (filesystem, package discovery, checkouts) 20 20 - {!Init} - Monorepo initialization 21 - - {!Pull} - Pull operations (fetch checkouts, merge subtrees) 22 - - {!Push} - Push operations (subtree split, export to checkouts) 21 + - {!Pull} - Pull operations (fetch checkouts, merge into monorepo) 22 + - {!Push} - Push operations (extract and export to checkouts) 23 23 - {!Add} - Add packages to monorepo 24 24 - {!Remove} - Remove packages from monorepo 25 25 - {!Clean} - Clean empty commits from history
+2 -2
lib/push.ml
··· 1 1 (** Push operations for exporting monorepo changes to checkouts and upstream. 2 2 3 - Uses subtree split to extract commits for each package and pushes to local 4 - checkouts and optionally to remote upstreams. *) 3 + Extracts per-package commits and pushes to local checkouts and optionally to 4 + remote upstreams. *) 5 5 6 6 let src = Logs.Src.create "monopam.push" ~doc:"Monopam push operations" 7 7
+2 -2
monopam.opam
··· 1 1 # This file is generated by dune, edit dune-project instead 2 2 opam-version: "2.0" 3 - synopsis: "Manage opam overlays with git subtree monorepos" 3 + synopsis: "Monorepo manager for OCaml packages" 4 4 description: 5 - "Monopam helps manage an opam overlay by synchronizing packages between individual git checkouts and a monorepo using git subtrees." 5 + "Monopam helps manage an opam overlay by synchronizing packages between individual git checkouts and a monorepo." 6 6 maintainer: ["Anil Madhavapeddy <anil@recoil.org>"] 7 7 authors: ["Anil Madhavapeddy <anil@recoil.org>"] 8 8 license: "ISC"