From 3d94663467df54eec843e46527bc7b28a6809391 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 12:08:48 +0000 Subject: [PATCH 01/26] refactor: extract x-kv into separate mizchi/bitx_kv module (PoC) Introduce a moon.work workspace and split the first low-frequency extension (x-kv) out of the main mizchi/bit module, mirroring gitoxide's gix-* vs feature-crate layout. x-kv has no in-tree consumers, so it is the safe minimal candidate (no module-level cycle with mizchi/bit). Documents the new modules/ layout and the bitx_* naming convention in docs/package-layout.md. --- Taskfile.pkl | 4 +- docs/package-layout.md | 38 ++++++++++++++++++- modules/bitx_kv/moon.mod.json | 21 ++++++++++ {src/x-kv => modules/bitx_kv/src}/README.md | 0 .../bitx_kv/src}/bench_test.mbt | 0 {src/x-kv => modules/bitx_kv/src}/gossip.mbt | 0 {src/x-kv => modules/bitx_kv/src}/kv.mbt | 0 {src/x-kv => modules/bitx_kv/src}/kv_test.mbt | 0 {src/x-kv => modules/bitx_kv/src}/merge.mbt | 0 {src/x-kv => modules/bitx_kv/src}/moon.pkg | 0 .../bitx_kv/src}/native/moon.pkg | 2 +- .../bitx_kv/src}/native/pkg.generated.mbti | 0 .../bitx_kv/src}/native/sync_native.mbt | 0 .../src}/native/sync_native_wbtest.mbt | 0 .../bitx_kv/src}/pkg.generated.mbti | 0 .../bitx_kv/src}/serialization.mbt | 0 .../bitx_kv/src}/sync_engine.mbt | 0 .../bitx_kv/src}/sync_test.mbt | 0 {src/x-kv => modules/bitx_kv/src}/types.mbt | 0 moon.mod.json | 1 + moon.work | 6 +++ 21 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 modules/bitx_kv/moon.mod.json rename {src/x-kv => modules/bitx_kv/src}/README.md (100%) rename {src/x-kv => modules/bitx_kv/src}/bench_test.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/gossip.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/kv.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/kv_test.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/merge.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/moon.pkg (100%) rename {src/x-kv => modules/bitx_kv/src}/native/moon.pkg (95%) rename {src/x-kv => modules/bitx_kv/src}/native/pkg.generated.mbti (100%) rename {src/x-kv => modules/bitx_kv/src}/native/sync_native.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/native/sync_native_wbtest.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/pkg.generated.mbti (100%) rename {src/x-kv => modules/bitx_kv/src}/serialization.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/sync_engine.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/sync_test.mbt (100%) rename {src/x-kv => modules/bitx_kv/src}/types.mbt (100%) create mode 100644 moon.work diff --git a/Taskfile.pkl b/Taskfile.pkl index 9fbc6ad0..c7795bf7 100644 --- a/Taskfile.pkl +++ b/Taskfile.pkl @@ -321,7 +321,7 @@ local testDistributed: Task = new { moon test --target native -p mizchi/bit/x-rebase-ai moon test --target native -p mizchi/bit/x-hub moon test --target native -p mizchi/bit/x-hub/native - moon test --target native -p mizchi/bit/x-kv + moon test --target native -p mizchi/bitx_kv """# } @@ -477,7 +477,7 @@ local benchFsReal: Task = new { local benchKv: Task = new { name = "bench-kv" - cmd = "moon bench --target native -p mizchi/bit/x-kv" + cmd = "moon bench --target native -p mizchi/bitx_kv" } local benchLib: Task = new { diff --git a/docs/package-layout.md b/docs/package-layout.md index e2eb3eb9..e98f67a7 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -81,8 +81,8 @@ other `x-*` packages. May depend on `core/*`, `mid/*`, and `high/*`. | `mizchi/bit/x-hub` | `src/x-hub` | Local PR / Issue metadata | | `mizchi/bit/x-hub/crypto` | `src/x-hub/crypto` | Hub signing primitives | | `mizchi/bit/x-hub/native` | `src/x-hub/native` | Hub native bindings | -| `mizchi/bit/x-kv` | `src/x-kv` | Git-backed KV store | -| `mizchi/bit/x-kv/native` | `src/x-kv/native` | KV native sync | +| `mizchi/bitx_kv` † | `modules/bitx_kv/src` | Git-backed KV store | +| `mizchi/bitx_kv/native` † | `modules/bitx_kv/src/native` | KV native sync | | `mizchi/bit/x-hq` | `src/x-hq` | `ghq`-compatible repo mgr | | `mizchi/bit/x-rebase-ai` | `src/x-rebase-ai` | AI rebase helpers | | `mizchi/bit/x-subdir` | `src/x-subdir` | Subdirectory clone | @@ -90,6 +90,9 @@ other `x-*` packages. May depend on `core/*`, `mid/*`, and `high/*`. | `mizchi/bit/x-bitconfig` | `src/x-bitconfig` | bit-specific config | | `mizchi/bit/x-doc` | `src/x-doc` | Doc rendering | +† Lives in a separate MoonBit module under `modules/`. See [Multi-module +workspace](#multi-module-workspace) below. + ### cmd (binaries) CLI entry points. May depend on any layer. @@ -127,3 +130,34 @@ rules above. CI runs the same script. callers need the convenience. - `x-*` packages are independent. If two `x-*` packages need to share code, promote the shared piece into `mid` or `core`. + +## Multi-module workspace + +To keep the main `mizchi/bit` module focused on Git plumbing/porcelain, some +low-frequency extensions live in their own MoonBit modules under `modules/`. +The repo root has a `moon.work` file declaring the workspace members; when +`moon build` resolves dependencies it picks them up locally instead of from +`mooncakes.io`. This mirrors gitoxide's split between `gix-*` plumbing crates +and feature-specific crates. + +Extracted extensions follow the `bitx_*` naming convention (one underscore- +separated word for a single feature). Currently extracted: + +| Module | Path | Origin (before extraction) | +|------------------------|-----------------------|----------------------------| +| `mizchi/bitx_kv` | `modules/bitx_kv` | `src/x-kv` | + +### How to add a new extracted module + +1. Create `modules//moon.mod.json` (name should be `mizchi/bitx_`). +2. Move the package directory into `modules//src/`. +3. Replace any self-import of the old path inside the moved package's + `moon.pkg` files (e.g. `"mizchi/bit/x-kv"` → `"mizchi/bitx_kv"`). +4. Add the new path to `moon.work`'s `members`. +5. If anything in `mizchi/bit` (typically `cmd/*`) consumes the extracted + module, add it to the consumer's `moon.pkg` import and to + `moon.mod.json`'s `deps`. Note: this creates a module-level dependency + from `mizchi/bit` onto the extension, so do not extract a feature that + would back-depend on `mizchi/bit` while also being imported by it + (cycle). When in doubt, extract `cmd/*` first. +6. Update `docs/package-layout.md` and any references in `Taskfile.pkl`. diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json new file mode 100644 index 00000000..4dd709f1 --- /dev/null +++ b/modules/bitx_kv/moon.mod.json @@ -0,0 +1,21 @@ +{ + "name": "mizchi/bitx_kv", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40", + "mizchi/x": "0.2.0" + }, + "readme": "src/README.md", + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": [ + "git", + "kv", + "sync" + ], + "description": "Git-backed KV store with CRDT sync (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-kv/README.md b/modules/bitx_kv/src/README.md similarity index 100% rename from src/x-kv/README.md rename to modules/bitx_kv/src/README.md diff --git a/src/x-kv/bench_test.mbt b/modules/bitx_kv/src/bench_test.mbt similarity index 100% rename from src/x-kv/bench_test.mbt rename to modules/bitx_kv/src/bench_test.mbt diff --git a/src/x-kv/gossip.mbt b/modules/bitx_kv/src/gossip.mbt similarity index 100% rename from src/x-kv/gossip.mbt rename to modules/bitx_kv/src/gossip.mbt diff --git a/src/x-kv/kv.mbt b/modules/bitx_kv/src/kv.mbt similarity index 100% rename from src/x-kv/kv.mbt rename to modules/bitx_kv/src/kv.mbt diff --git a/src/x-kv/kv_test.mbt b/modules/bitx_kv/src/kv_test.mbt similarity index 100% rename from src/x-kv/kv_test.mbt rename to modules/bitx_kv/src/kv_test.mbt diff --git a/src/x-kv/merge.mbt b/modules/bitx_kv/src/merge.mbt similarity index 100% rename from src/x-kv/merge.mbt rename to modules/bitx_kv/src/merge.mbt diff --git a/src/x-kv/moon.pkg b/modules/bitx_kv/src/moon.pkg similarity index 100% rename from src/x-kv/moon.pkg rename to modules/bitx_kv/src/moon.pkg diff --git a/src/x-kv/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg similarity index 95% rename from src/x-kv/native/moon.pkg rename to modules/bitx_kv/src/native/moon.pkg index a2fda4fb..d7bfa5b2 100644 --- a/src/x-kv/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit" @bit, "mizchi/bit/lib" @lib, "mizchi/bit/vfs" @fs, - "mizchi/bit/x-kv" @kv, + "mizchi/bitx_kv" @kv, "mizchi/x/http" @xhttp, "mizchi/x/websocket" @xws, "moonbitlang/core/encoding/base64" @base64, diff --git a/src/x-kv/native/pkg.generated.mbti b/modules/bitx_kv/src/native/pkg.generated.mbti similarity index 100% rename from src/x-kv/native/pkg.generated.mbti rename to modules/bitx_kv/src/native/pkg.generated.mbti diff --git a/src/x-kv/native/sync_native.mbt b/modules/bitx_kv/src/native/sync_native.mbt similarity index 100% rename from src/x-kv/native/sync_native.mbt rename to modules/bitx_kv/src/native/sync_native.mbt diff --git a/src/x-kv/native/sync_native_wbtest.mbt b/modules/bitx_kv/src/native/sync_native_wbtest.mbt similarity index 100% rename from src/x-kv/native/sync_native_wbtest.mbt rename to modules/bitx_kv/src/native/sync_native_wbtest.mbt diff --git a/src/x-kv/pkg.generated.mbti b/modules/bitx_kv/src/pkg.generated.mbti similarity index 100% rename from src/x-kv/pkg.generated.mbti rename to modules/bitx_kv/src/pkg.generated.mbti diff --git a/src/x-kv/serialization.mbt b/modules/bitx_kv/src/serialization.mbt similarity index 100% rename from src/x-kv/serialization.mbt rename to modules/bitx_kv/src/serialization.mbt diff --git a/src/x-kv/sync_engine.mbt b/modules/bitx_kv/src/sync_engine.mbt similarity index 100% rename from src/x-kv/sync_engine.mbt rename to modules/bitx_kv/src/sync_engine.mbt diff --git a/src/x-kv/sync_test.mbt b/modules/bitx_kv/src/sync_test.mbt similarity index 100% rename from src/x-kv/sync_test.mbt rename to modules/bitx_kv/src/sync_test.mbt diff --git a/src/x-kv/types.mbt b/modules/bitx_kv/src/types.mbt similarity index 100% rename from src/x-kv/types.mbt rename to modules/bitx_kv/src/types.mbt diff --git a/moon.mod.json b/moon.mod.json index 4c559565..bdaa1917 100644 --- a/moon.mod.json +++ b/moon.mod.json @@ -30,6 +30,7 @@ "docs", "t", "octorus", + "modules", "third_party/git", "file.txt", "install.sh", diff --git a/moon.work b/moon.work new file mode 100644 index 00000000..ff04925b --- /dev/null +++ b/moon.work @@ -0,0 +1,6 @@ +// Workspace file. Members are resolved locally instead of from mooncakes.io. +// See docs/package-layout.md for the module split rationale. +members = [ + ".", + "modules/bitx_kv", +] From 699ecf89ef025c02482279d2b187d9f2a4195405 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 12:24:17 +0000 Subject: [PATCH 02/26] refactor: extract all x-* extensions into bitx_* workspace modules Split the remaining bit extensions (x-bitconfig, x-doc, x-hq, x-hub, x-rebase-ai, x-subdir, x-workspace) out of the main mizchi/bit module and into their own MoonBit modules under modules/, joining the previously-extracted bitx_kv. MoonBit's workspace resolver accepts the module-level cycle (mizchi/bit <-> mizchi/bitx_*) because the in-package dependency graph stays acyclic. - moon.work now lists all eight bitx_* modules as members - cmd/bit and cmd/git-bit are rewired to import from the new module paths - tools/check-layers.mjs walks modules//src as additional roots and classifies mizchi/bitx_* as the ext layer - docs/package-layout.md updated for the new module table and layout - Taskfile.pkl test/bench targets point at the new module names All 298 tests across the 8 extracted modules pass (moon test); moon check on the full workspace is clean (0 errors). --- Taskfile.pkl | 6 +- docs/distributed-testing.md | 14 +-- docs/package-layout.md | 118 ++++++++++-------- modules/bitx_bitconfig/moon.mod.json | 14 +++ .../bitx_bitconfig/src}/load.mbt | 0 .../bitx_bitconfig/src}/load_wbtest.mbt | 0 .../bitx_bitconfig/src}/moon.pkg | 0 .../bitx_bitconfig/src}/pkg.generated.mbti | 0 modules/bitx_doc/moon.mod.json | 17 +++ {src/x-doc => modules/bitx_doc/src}/doc.mbt | 0 .../bitx_doc/src}/doc_test.mbt | 0 {src/x-doc => modules/bitx_doc/src}/moon.pkg | 0 .../bitx_doc/src}/pkg.generated.mbti | 0 modules/bitx_hq/moon.mod.json | 11 ++ {src/x-hq => modules/bitx_hq/src}/config.mbt | 0 {src/x-hq => modules/bitx_hq/src}/get.mbt | 0 {src/x-hq => modules/bitx_hq/src}/hq_test.mbt | 0 {src/x-hq => modules/bitx_hq/src}/list.mbt | 0 {src/x-hq => modules/bitx_hq/src}/moon.pkg | 0 .../bitx_hq/src}/pkg.generated.mbti | 0 {src/x-hq => modules/bitx_hq/src}/root.mbt | 0 {src/x-hq => modules/bitx_hq/src}/types.mbt | 0 .../bitx_hq/src}/url_parse.mbt | 0 modules/bitx_hub/moon.mod.json | 16 +++ {src/x-hub => modules/bitx_hub/src}/claim.mbt | 0 .../bitx_hub/src}/claim_wbtest.mbt | 0 .../bitx_hub/src}/comment.mbt | 0 .../bitx_hub/src}/crypto/moon.pkg | 0 .../bitx_hub/src}/crypto/pkg.generated.mbti | 0 .../bitx_hub/src}/crypto/relay_sign.mbt | 0 .../bitx_hub/src}/crypto/relay_sign_js.mbt | 0 .../src}/crypto/relay_sign_native.mbt | 0 .../bitx_hub/src}/crypto/relay_sign_wasm.mbt | 0 .../src}/crypto/relay_sign_wasm_wbtest.mbt | 0 .../src}/crypto/relay_sign_web_crypto.mbt | 0 .../src}/crypto/relay_sign_web_wbtest.mbt | 0 .../x-hub => modules/bitx_hub/src}/format.mbt | 0 .../bitx_hub/src}/github_convert.mbt | 0 .../bitx_hub/src}/github_convert_wbtest.mbt | 0 .../bitx_hub/src}/github_types.mbt | 0 {src/x-hub => modules/bitx_hub/src}/hub.mbt | 0 .../bitx_hub/src}/hub_test.mbt | 0 .../x-hub => modules/bitx_hub/src}/import.mbt | 0 .../bitx_hub/src}/import_test.mbt | 0 {src/x-hub => modules/bitx_hub/src}/issue.mbt | 0 .../bitx_hub/src}/js_hub_exports.mbt | 0 .../bitx_hub/src}/js_hub_host_bridge.mbt | 0 {src/x-hub => modules/bitx_hub/src}/merge.mbt | 0 {src/x-hub => modules/bitx_hub/src}/moon.pkg | 0 .../bitx_hub/src}/native/claim_native.mbt | 0 .../bitx_hub/src}/native/github_api.mbt | 0 .../src}/native/github_api_wbtest.mbt | 0 .../bitx_hub/src}/native/github_sync.mbt | 0 .../bitx_hub/src}/native/moon.pkg | 4 +- .../bitx_hub/src}/native/pkg.generated.mbti | 0 .../bitx_hub/src}/native/sync_native.mbt | 0 .../src}/native/sync_native_bench_wbtest.mbt | 0 .../src}/native/sync_native_wbtest.mbt | 0 {src/x-hub => modules/bitx_hub/src}/notes.mbt | 0 .../bitx_hub/src}/pkg.generated.mbti | 0 .../bitx_hub/src}/proposal.mbt | 0 .../x-hub => modules/bitx_hub/src}/review.mbt | 0 {src/x-hub => modules/bitx_hub/src}/store.mbt | 0 {src/x-hub => modules/bitx_hub/src}/sync.mbt | 0 .../bitx_hub/src}/sync_link.mbt | 0 .../bitx_hub/src}/sync_link_ops.mbt | 0 .../bitx_hub/src}/sync_wbtest.mbt | 0 .../bitx_hub/src}/timestamp.mbt | 0 {src/x-hub => modules/bitx_hub/src}/types.mbt | 0 .../bitx_hub/src}/work_item.mbt | 0 .../bitx_hub/src}/workflow.mbt | 0 modules/bitx_rebase_ai/moon.mod.json | 16 +++ .../bitx_rebase_ai/src}/moon.pkg | 0 .../bitx_rebase_ai/src}/pkg.generated.mbti | 0 .../bitx_rebase_ai/src}/rebase_ai.mbt | 0 .../bitx_rebase_ai/src}/rebase_ai_wbtest.mbt | 0 modules/bitx_subdir/moon.mod.json | 14 +++ .../bitx_subdir/src}/commit.mbt | 0 .../bitx_subdir/src}/history.mbt | 0 .../bitx_subdir/src}/init.mbt | 0 .../bitx_subdir/src}/module.mbt | 0 .../bitx_subdir/src}/moon.pkg | 0 .../bitx_subdir/src}/pkg.generated.mbti | 0 .../bitx_subdir/src}/sparse.mbt | 0 .../bitx_subdir/src}/subdir.mbt | 0 .../bitx_subdir/src}/subdir_test.mbt | 0 .../bitx_subdir/src}/types.mbt | 0 modules/bitx_workspace/moon.mod.json | 16 +++ .../bitx_workspace/src}/moon.pkg | 0 .../bitx_workspace/src}/pkg.generated.mbti | 0 .../bitx_workspace/src}/workspace.mbt | 0 .../bitx_workspace/src}/workspace_wbtest.mbt | 0 moon.mod.json | 9 +- moon.work | 7 ++ src/cmd/bit/moon.pkg | 16 +-- src/cmd/git-bit/moon.pkg | 6 +- tools/check-layers.mjs | 61 +++++++-- 97 files changed, 255 insertions(+), 90 deletions(-) create mode 100644 modules/bitx_bitconfig/moon.mod.json rename {src/x-bitconfig => modules/bitx_bitconfig/src}/load.mbt (100%) rename {src/x-bitconfig => modules/bitx_bitconfig/src}/load_wbtest.mbt (100%) rename {src/x-bitconfig => modules/bitx_bitconfig/src}/moon.pkg (100%) rename {src/x-bitconfig => modules/bitx_bitconfig/src}/pkg.generated.mbti (100%) create mode 100644 modules/bitx_doc/moon.mod.json rename {src/x-doc => modules/bitx_doc/src}/doc.mbt (100%) rename {src/x-doc => modules/bitx_doc/src}/doc_test.mbt (100%) rename {src/x-doc => modules/bitx_doc/src}/moon.pkg (100%) rename {src/x-doc => modules/bitx_doc/src}/pkg.generated.mbti (100%) create mode 100644 modules/bitx_hq/moon.mod.json rename {src/x-hq => modules/bitx_hq/src}/config.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/get.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/hq_test.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/list.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/moon.pkg (100%) rename {src/x-hq => modules/bitx_hq/src}/pkg.generated.mbti (100%) rename {src/x-hq => modules/bitx_hq/src}/root.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/types.mbt (100%) rename {src/x-hq => modules/bitx_hq/src}/url_parse.mbt (100%) create mode 100644 modules/bitx_hub/moon.mod.json rename {src/x-hub => modules/bitx_hub/src}/claim.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/claim_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/comment.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/moon.pkg (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/pkg.generated.mbti (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_js.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_native.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_wasm.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_wasm_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_web_crypto.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/crypto/relay_sign_web_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/format.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/github_convert.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/github_convert_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/github_types.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/hub.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/hub_test.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/import.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/import_test.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/issue.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/js_hub_exports.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/js_hub_host_bridge.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/merge.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/moon.pkg (100%) rename {src/x-hub => modules/bitx_hub/src}/native/claim_native.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/github_api.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/github_api_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/github_sync.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/moon.pkg (93%) rename {src/x-hub => modules/bitx_hub/src}/native/pkg.generated.mbti (100%) rename {src/x-hub => modules/bitx_hub/src}/native/sync_native.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/sync_native_bench_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/native/sync_native_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/notes.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/pkg.generated.mbti (100%) rename {src/x-hub => modules/bitx_hub/src}/proposal.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/review.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/store.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/sync.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/sync_link.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/sync_link_ops.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/sync_wbtest.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/timestamp.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/types.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/work_item.mbt (100%) rename {src/x-hub => modules/bitx_hub/src}/workflow.mbt (100%) create mode 100644 modules/bitx_rebase_ai/moon.mod.json rename {src/x-rebase-ai => modules/bitx_rebase_ai/src}/moon.pkg (100%) rename {src/x-rebase-ai => modules/bitx_rebase_ai/src}/pkg.generated.mbti (100%) rename {src/x-rebase-ai => modules/bitx_rebase_ai/src}/rebase_ai.mbt (100%) rename {src/x-rebase-ai => modules/bitx_rebase_ai/src}/rebase_ai_wbtest.mbt (100%) create mode 100644 modules/bitx_subdir/moon.mod.json rename {src/x-subdir => modules/bitx_subdir/src}/commit.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/history.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/init.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/module.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/moon.pkg (100%) rename {src/x-subdir => modules/bitx_subdir/src}/pkg.generated.mbti (100%) rename {src/x-subdir => modules/bitx_subdir/src}/sparse.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/subdir.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/subdir_test.mbt (100%) rename {src/x-subdir => modules/bitx_subdir/src}/types.mbt (100%) create mode 100644 modules/bitx_workspace/moon.mod.json rename {src/x-workspace => modules/bitx_workspace/src}/moon.pkg (100%) rename {src/x-workspace => modules/bitx_workspace/src}/pkg.generated.mbti (100%) rename {src/x-workspace => modules/bitx_workspace/src}/workspace.mbt (100%) rename {src/x-workspace => modules/bitx_workspace/src}/workspace_wbtest.mbt (100%) diff --git a/Taskfile.pkl b/Taskfile.pkl index c7795bf7..ce2596b6 100644 --- a/Taskfile.pkl +++ b/Taskfile.pkl @@ -318,9 +318,9 @@ local testDistributed: Task = new { description = "Agent/orchestration focused native checks" cmd = #""" moon test --target native -p mizchi/bit/x-mcp - moon test --target native -p mizchi/bit/x-rebase-ai - moon test --target native -p mizchi/bit/x-hub - moon test --target native -p mizchi/bit/x-hub/native + moon test --target native -p mizchi/bitx_rebase_ai + moon test --target native -p mizchi/bitx_hub + moon test --target native -p mizchi/bitx_hub/native moon test --target native -p mizchi/bitx_kv """# } diff --git a/docs/distributed-testing.md b/docs/distributed-testing.md index 6a4548d3..593710d4 100644 --- a/docs/distributed-testing.md +++ b/docs/distributed-testing.md @@ -9,17 +9,17 @@ Older agent/orchestrator notes still exist in `docs/`, but this guide is scoped 1. Pure logic (fast) - Purpose: Detect regressions in pure coordination and serialization logic -- Target: `src/x-hub/*_test.mbt`, `src/x-kv/*_test.mbt`, `src/x-rebase-ai/*_wbtest.mbt` +- Target: `modules/bitx_hub/src/*_test.mbt`, `modules/bitx_kv/src/*_test.mbt`, `modules/bitx_rebase_ai/src/*_wbtest.mbt` - Examples: Hub record round-trips, issue/PR state transitions, KV merge behavior, rebase-ai parser logic 2. Coordination/State (medium) - Purpose: Verify read/write consistency across relay, native sync, and repo-backed state -- Target: `src/x-hub/native/*_wbtest.mbt`, `src/x-kv/native/*_wbtest.mbt` +- Target: `modules/bitx_hub/src/native/*_wbtest.mbt`, `modules/bitx_kv/src/native/*_wbtest.mbt` - Examples: relay fetch/push behavior, sync conflict handling 3. Hub/Sync contract (medium) - Purpose: Verify PR/Issue/Review representation and sync contracts -- Target: `src/x-hub/*_test.mbt`, `src/x-hub/*_wbtest.mbt`, `src/x-hub/native/*_wbtest.mbt` +- Target: `modules/bitx_hub/src/*_test.mbt`, `modules/bitx_hub/src/*_wbtest.mbt`, `modules/bitx_hub/src/native/*_wbtest.mbt` 4. End-to-end simulation (heavy) - Purpose: End-to-end connectivity of repository collaboration and relay-oriented flows @@ -46,10 +46,10 @@ pkf run check Current `pkf run test-distributed` runs: -- `mizchi/bit/x-rebase-ai` -- `mizchi/bit/x-hub` -- `mizchi/bit/x-hub/native` -- `mizchi/bit/x-kv` +- `mizchi/bitx_rebase_ai` +- `mizchi/bitx_hub` +- `mizchi/bitx_hub/native` +- `mizchi/bitx_kv` ## 4. Minimal Fault Injection Set diff --git a/docs/package-layout.md b/docs/package-layout.md index e98f67a7..42722032 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -71,27 +71,27 @@ Porcelain layer. May depend on `core/*` and `mid/*`. Used by `cmd/*` and | `mizchi/bit/vfs` | `src/vfs` | Virtual FS over commits (used by `lib`, `x-kv`, `x-subdir`) | | `mizchi/bit/fingerprint` | `src/fingerprint` | Workspace fingerprint (used by `x-workspace`) | -### x-* (extensions, gitoxide にはない bit 独自機能) - -Optional features. Each `x-*` package is independent and must not depend on -other `x-*` packages. May depend on `core/*`, `mid/*`, and `high/*`. - -| Package | Path | Description | -|----------------------------------|---------------------------|------------------------------| -| `mizchi/bit/x-hub` | `src/x-hub` | Local PR / Issue metadata | -| `mizchi/bit/x-hub/crypto` | `src/x-hub/crypto` | Hub signing primitives | -| `mizchi/bit/x-hub/native` | `src/x-hub/native` | Hub native bindings | -| `mizchi/bitx_kv` † | `modules/bitx_kv/src` | Git-backed KV store | -| `mizchi/bitx_kv/native` † | `modules/bitx_kv/src/native` | KV native sync | -| `mizchi/bit/x-hq` | `src/x-hq` | `ghq`-compatible repo mgr | -| `mizchi/bit/x-rebase-ai` | `src/x-rebase-ai` | AI rebase helpers | -| `mizchi/bit/x-subdir` | `src/x-subdir` | Subdirectory clone | -| `mizchi/bit/x-workspace` | `src/x-workspace` | Workspace flow | -| `mizchi/bit/x-bitconfig` | `src/x-bitconfig` | bit-specific config | -| `mizchi/bit/x-doc` | `src/x-doc` | Doc rendering | - -† Lives in a separate MoonBit module under `modules/`. See [Multi-module -workspace](#multi-module-workspace) below. +### bitx_* (extensions, gitoxide にはない bit 独自機能) + +Optional features. Each extension is its own MoonBit module under +`modules/`, so consumers can pull in only the features they need. An +extension may depend on `mizchi/bit` (core / mid / high) but must not +depend on another extension module — shared logic should be promoted into +`mid` or `core` of the main module. + +| Module | Path | Description | +|------------------------------|---------------------------------|---------------------------------| +| `mizchi/bitx_bitconfig` | `modules/bitx_bitconfig/src` | bit-specific config | +| `mizchi/bitx_doc` | `modules/bitx_doc/src` | Repo-stored markdown docs | +| `mizchi/bitx_hq` | `modules/bitx_hq/src` | `ghq`-compatible repo manager | +| `mizchi/bitx_hub` | `modules/bitx_hub/src` | Local PR / Issue metadata | +| `mizchi/bitx_hub/crypto` | `modules/bitx_hub/src/crypto` | Hub signing primitives | +| `mizchi/bitx_hub/native` | `modules/bitx_hub/src/native` | Hub native bindings + GitHub | +| `mizchi/bitx_kv` | `modules/bitx_kv/src` | Git-backed KV store | +| `mizchi/bitx_kv/native` | `modules/bitx_kv/src/native` | KV native sync | +| `mizchi/bitx_rebase_ai` | `modules/bitx_rebase_ai/src` | AI-assisted rebase helpers | +| `mizchi/bitx_subdir` | `modules/bitx_subdir/src` | Subdirectory clone | +| `mizchi/bitx_workspace` | `modules/bitx_workspace/src` | Workspace flow | ### cmd (binaries) @@ -106,16 +106,17 @@ CLI entry points. May depend on any layer. Each layer may import from itself and lower layers only: -| From | core | mid | high (lib) | x-* | cmd | -|---------|:----:|:---:|:----------:|:----:|:----:| -| core | ✓ | | | | | -| mid | ✓ | ✓ | | | | -| high | ✓ | ✓ | ✓ | | | -| x-* | ✓ | ✓ | ✓ | (1) | | -| cmd | ✓ | ✓ | ✓ | ✓ | ✓ | +| From | core | mid | high (lib) | bitx_* | cmd | +|---------|:----:|:---:|:----------:|:------:|:----:| +| core | ✓ | | | | | +| mid | ✓ | ✓ | | | | +| high | ✓ | ✓ | ✓ | | | +| bitx_* | ✓ | ✓ | ✓ | (1) | | +| cmd | ✓ | ✓ | ✓ | ✓ | ✓ | -(1) An `x-*` package must not import another `x-*` package. Shared logic -should be lifted into `high`, `mid`, or `core`. +(1) A `bitx_*` module must not import another `bitx_*` module. Shared logic +should be lifted into `high`, `mid`, or `core` of the main `mizchi/bit` +module. ## Lint @@ -128,36 +129,43 @@ rules above. CI runs the same script. - `lib` (high) is a thin facade. Do not put new logic into `lib`; instead, add it to a focused `core/*` or `mid/*` package and re-export through `lib` if callers need the convenience. -- `x-*` packages are independent. If two `x-*` packages need to share code, - promote the shared piece into `mid` or `core`. +- `bitx_*` modules are independent. If two of them need to share code, + promote the shared piece into `mid` or `core` of the main `mizchi/bit` + module. ## Multi-module workspace -To keep the main `mizchi/bit` module focused on Git plumbing/porcelain, some -low-frequency extensions live in their own MoonBit modules under `modules/`. -The repo root has a `moon.work` file declaring the workspace members; when -`moon build` resolves dependencies it picks them up locally instead of from -`mooncakes.io`. This mirrors gitoxide's split between `gix-*` plumbing crates -and feature-specific crates. +The main `mizchi/bit` module is kept focused on Git plumbing/porcelain. All +non-Git extensions are extracted into their own MoonBit modules under +`modules/`, so a consumer can pull in only the features they need. This +mirrors gitoxide's split between `gix-*` plumbing crates and feature-specific +crates. -Extracted extensions follow the `bitx_*` naming convention (one underscore- -separated word for a single feature). Currently extracted: +The repo root has a `moon.work` file listing every workspace member. When +`moon build` resolves dependencies it picks the listed members up locally +instead of from `mooncakes.io`. The naming convention is `bitx_` +(underscore-separated, single underscore-prefixed segment per feature). -| Module | Path | Origin (before extraction) | -|------------------------|-----------------------|----------------------------| -| `mizchi/bitx_kv` | `modules/bitx_kv` | `src/x-kv` | +### Cross-module dependencies + +`mizchi/bit` declares each `bitx_*` it consumes (via `cmd/*`) in its +`moon.mod.json` `deps`. Each `bitx_*` module declares `mizchi/bit` in its +own `deps` when it needs core types. MoonBit's workspace resolver allows +this module-level cycle because the in-package dependency graph remains +acyclic. ### How to add a new extracted module -1. Create `modules//moon.mod.json` (name should be `mizchi/bitx_`). -2. Move the package directory into `modules//src/`. -3. Replace any self-import of the old path inside the moved package's - `moon.pkg` files (e.g. `"mizchi/bit/x-kv"` → `"mizchi/bitx_kv"`). -4. Add the new path to `moon.work`'s `members`. -5. If anything in `mizchi/bit` (typically `cmd/*`) consumes the extracted - module, add it to the consumer's `moon.pkg` import and to - `moon.mod.json`'s `deps`. Note: this creates a module-level dependency - from `mizchi/bit` onto the extension, so do not extract a feature that - would back-depend on `mizchi/bit` while also being imported by it - (cycle). When in doubt, extract `cmd/*` first. -6. Update `docs/package-layout.md` and any references in `Taskfile.pkl`. +1. Create `modules/bitx_/moon.mod.json` with `"name": + "mizchi/bitx_"` and the minimum `deps` set. +2. Move the package directory under `modules/bitx_/src/` with + `git mv`. +3. Replace any self-import inside the moved package's `moon.pkg` files + (e.g. `"mizchi/bit/x-foo"` → `"mizchi/bitx_foo"`). +4. Add the new directory to `moon.work`'s `members`. +5. For every consumer in `mizchi/bit` (typically `cmd/*`), update the + `moon.pkg` import path and add the new module to the root + `moon.mod.json`'s `deps`. +6. Update this document and any references in `Taskfile.pkl`. +7. Run `moon check` and `moon test --target native -p mizchi/bitx_` + to confirm the move is clean. diff --git a/modules/bitx_bitconfig/moon.mod.json b/modules/bitx_bitconfig/moon.mod.json new file mode 100644 index 00000000..16d500e3 --- /dev/null +++ b/modules/bitx_bitconfig/moon.mod.json @@ -0,0 +1,14 @@ +{ + "name": "mizchi/bitx_bitconfig", + "version": "0.42.2", + "deps": { + "bobzhang/toml": "0.1.7", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "config"], + "description": "bit-specific config (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-bitconfig/load.mbt b/modules/bitx_bitconfig/src/load.mbt similarity index 100% rename from src/x-bitconfig/load.mbt rename to modules/bitx_bitconfig/src/load.mbt diff --git a/src/x-bitconfig/load_wbtest.mbt b/modules/bitx_bitconfig/src/load_wbtest.mbt similarity index 100% rename from src/x-bitconfig/load_wbtest.mbt rename to modules/bitx_bitconfig/src/load_wbtest.mbt diff --git a/src/x-bitconfig/moon.pkg b/modules/bitx_bitconfig/src/moon.pkg similarity index 100% rename from src/x-bitconfig/moon.pkg rename to modules/bitx_bitconfig/src/moon.pkg diff --git a/src/x-bitconfig/pkg.generated.mbti b/modules/bitx_bitconfig/src/pkg.generated.mbti similarity index 100% rename from src/x-bitconfig/pkg.generated.mbti rename to modules/bitx_bitconfig/src/pkg.generated.mbti diff --git a/modules/bitx_doc/moon.mod.json b/modules/bitx_doc/moon.mod.json new file mode 100644 index 00000000..5917aa6b --- /dev/null +++ b/modules/bitx_doc/moon.mod.json @@ -0,0 +1,17 @@ +{ + "name": "mizchi/bitx_doc", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": [ + "git", + "docs" + ], + "description": "Repo-stored markdown docs (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-doc/doc.mbt b/modules/bitx_doc/src/doc.mbt similarity index 100% rename from src/x-doc/doc.mbt rename to modules/bitx_doc/src/doc.mbt diff --git a/src/x-doc/doc_test.mbt b/modules/bitx_doc/src/doc_test.mbt similarity index 100% rename from src/x-doc/doc_test.mbt rename to modules/bitx_doc/src/doc_test.mbt diff --git a/src/x-doc/moon.pkg b/modules/bitx_doc/src/moon.pkg similarity index 100% rename from src/x-doc/moon.pkg rename to modules/bitx_doc/src/moon.pkg diff --git a/src/x-doc/pkg.generated.mbti b/modules/bitx_doc/src/pkg.generated.mbti similarity index 100% rename from src/x-doc/pkg.generated.mbti rename to modules/bitx_doc/src/pkg.generated.mbti diff --git a/modules/bitx_hq/moon.mod.json b/modules/bitx_hq/moon.mod.json new file mode 100644 index 00000000..9725e778 --- /dev/null +++ b/modules/bitx_hq/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bitx_hq", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "ghq"], + "description": "ghq-compatible repo manager (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-hq/config.mbt b/modules/bitx_hq/src/config.mbt similarity index 100% rename from src/x-hq/config.mbt rename to modules/bitx_hq/src/config.mbt diff --git a/src/x-hq/get.mbt b/modules/bitx_hq/src/get.mbt similarity index 100% rename from src/x-hq/get.mbt rename to modules/bitx_hq/src/get.mbt diff --git a/src/x-hq/hq_test.mbt b/modules/bitx_hq/src/hq_test.mbt similarity index 100% rename from src/x-hq/hq_test.mbt rename to modules/bitx_hq/src/hq_test.mbt diff --git a/src/x-hq/list.mbt b/modules/bitx_hq/src/list.mbt similarity index 100% rename from src/x-hq/list.mbt rename to modules/bitx_hq/src/list.mbt diff --git a/src/x-hq/moon.pkg b/modules/bitx_hq/src/moon.pkg similarity index 100% rename from src/x-hq/moon.pkg rename to modules/bitx_hq/src/moon.pkg diff --git a/src/x-hq/pkg.generated.mbti b/modules/bitx_hq/src/pkg.generated.mbti similarity index 100% rename from src/x-hq/pkg.generated.mbti rename to modules/bitx_hq/src/pkg.generated.mbti diff --git a/src/x-hq/root.mbt b/modules/bitx_hq/src/root.mbt similarity index 100% rename from src/x-hq/root.mbt rename to modules/bitx_hq/src/root.mbt diff --git a/src/x-hq/types.mbt b/modules/bitx_hq/src/types.mbt similarity index 100% rename from src/x-hq/types.mbt rename to modules/bitx_hq/src/types.mbt diff --git a/src/x-hq/url_parse.mbt b/modules/bitx_hq/src/url_parse.mbt similarity index 100% rename from src/x-hq/url_parse.mbt rename to modules/bitx_hq/src/url_parse.mbt diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json new file mode 100644 index 00000000..974a08fc --- /dev/null +++ b/modules/bitx_hub/moon.mod.json @@ -0,0 +1,16 @@ +{ + "name": "mizchi/bitx_hub", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/x": "0.2.0", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "hub", "pr", "issue"], + "description": "Local PR/Issue metadata + GitHub sync (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-hub/claim.mbt b/modules/bitx_hub/src/claim.mbt similarity index 100% rename from src/x-hub/claim.mbt rename to modules/bitx_hub/src/claim.mbt diff --git a/src/x-hub/claim_wbtest.mbt b/modules/bitx_hub/src/claim_wbtest.mbt similarity index 100% rename from src/x-hub/claim_wbtest.mbt rename to modules/bitx_hub/src/claim_wbtest.mbt diff --git a/src/x-hub/comment.mbt b/modules/bitx_hub/src/comment.mbt similarity index 100% rename from src/x-hub/comment.mbt rename to modules/bitx_hub/src/comment.mbt diff --git a/src/x-hub/crypto/moon.pkg b/modules/bitx_hub/src/crypto/moon.pkg similarity index 100% rename from src/x-hub/crypto/moon.pkg rename to modules/bitx_hub/src/crypto/moon.pkg diff --git a/src/x-hub/crypto/pkg.generated.mbti b/modules/bitx_hub/src/crypto/pkg.generated.mbti similarity index 100% rename from src/x-hub/crypto/pkg.generated.mbti rename to modules/bitx_hub/src/crypto/pkg.generated.mbti diff --git a/src/x-hub/crypto/relay_sign.mbt b/modules/bitx_hub/src/crypto/relay_sign.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign.mbt rename to modules/bitx_hub/src/crypto/relay_sign.mbt diff --git a/src/x-hub/crypto/relay_sign_js.mbt b/modules/bitx_hub/src/crypto/relay_sign_js.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_js.mbt rename to modules/bitx_hub/src/crypto/relay_sign_js.mbt diff --git a/src/x-hub/crypto/relay_sign_native.mbt b/modules/bitx_hub/src/crypto/relay_sign_native.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_native.mbt rename to modules/bitx_hub/src/crypto/relay_sign_native.mbt diff --git a/src/x-hub/crypto/relay_sign_wasm.mbt b/modules/bitx_hub/src/crypto/relay_sign_wasm.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_wasm.mbt rename to modules/bitx_hub/src/crypto/relay_sign_wasm.mbt diff --git a/src/x-hub/crypto/relay_sign_wasm_wbtest.mbt b/modules/bitx_hub/src/crypto/relay_sign_wasm_wbtest.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_wasm_wbtest.mbt rename to modules/bitx_hub/src/crypto/relay_sign_wasm_wbtest.mbt diff --git a/src/x-hub/crypto/relay_sign_web_crypto.mbt b/modules/bitx_hub/src/crypto/relay_sign_web_crypto.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_web_crypto.mbt rename to modules/bitx_hub/src/crypto/relay_sign_web_crypto.mbt diff --git a/src/x-hub/crypto/relay_sign_web_wbtest.mbt b/modules/bitx_hub/src/crypto/relay_sign_web_wbtest.mbt similarity index 100% rename from src/x-hub/crypto/relay_sign_web_wbtest.mbt rename to modules/bitx_hub/src/crypto/relay_sign_web_wbtest.mbt diff --git a/src/x-hub/format.mbt b/modules/bitx_hub/src/format.mbt similarity index 100% rename from src/x-hub/format.mbt rename to modules/bitx_hub/src/format.mbt diff --git a/src/x-hub/github_convert.mbt b/modules/bitx_hub/src/github_convert.mbt similarity index 100% rename from src/x-hub/github_convert.mbt rename to modules/bitx_hub/src/github_convert.mbt diff --git a/src/x-hub/github_convert_wbtest.mbt b/modules/bitx_hub/src/github_convert_wbtest.mbt similarity index 100% rename from src/x-hub/github_convert_wbtest.mbt rename to modules/bitx_hub/src/github_convert_wbtest.mbt diff --git a/src/x-hub/github_types.mbt b/modules/bitx_hub/src/github_types.mbt similarity index 100% rename from src/x-hub/github_types.mbt rename to modules/bitx_hub/src/github_types.mbt diff --git a/src/x-hub/hub.mbt b/modules/bitx_hub/src/hub.mbt similarity index 100% rename from src/x-hub/hub.mbt rename to modules/bitx_hub/src/hub.mbt diff --git a/src/x-hub/hub_test.mbt b/modules/bitx_hub/src/hub_test.mbt similarity index 100% rename from src/x-hub/hub_test.mbt rename to modules/bitx_hub/src/hub_test.mbt diff --git a/src/x-hub/import.mbt b/modules/bitx_hub/src/import.mbt similarity index 100% rename from src/x-hub/import.mbt rename to modules/bitx_hub/src/import.mbt diff --git a/src/x-hub/import_test.mbt b/modules/bitx_hub/src/import_test.mbt similarity index 100% rename from src/x-hub/import_test.mbt rename to modules/bitx_hub/src/import_test.mbt diff --git a/src/x-hub/issue.mbt b/modules/bitx_hub/src/issue.mbt similarity index 100% rename from src/x-hub/issue.mbt rename to modules/bitx_hub/src/issue.mbt diff --git a/src/x-hub/js_hub_exports.mbt b/modules/bitx_hub/src/js_hub_exports.mbt similarity index 100% rename from src/x-hub/js_hub_exports.mbt rename to modules/bitx_hub/src/js_hub_exports.mbt diff --git a/src/x-hub/js_hub_host_bridge.mbt b/modules/bitx_hub/src/js_hub_host_bridge.mbt similarity index 100% rename from src/x-hub/js_hub_host_bridge.mbt rename to modules/bitx_hub/src/js_hub_host_bridge.mbt diff --git a/src/x-hub/merge.mbt b/modules/bitx_hub/src/merge.mbt similarity index 100% rename from src/x-hub/merge.mbt rename to modules/bitx_hub/src/merge.mbt diff --git a/src/x-hub/moon.pkg b/modules/bitx_hub/src/moon.pkg similarity index 100% rename from src/x-hub/moon.pkg rename to modules/bitx_hub/src/moon.pkg diff --git a/src/x-hub/native/claim_native.mbt b/modules/bitx_hub/src/native/claim_native.mbt similarity index 100% rename from src/x-hub/native/claim_native.mbt rename to modules/bitx_hub/src/native/claim_native.mbt diff --git a/src/x-hub/native/github_api.mbt b/modules/bitx_hub/src/native/github_api.mbt similarity index 100% rename from src/x-hub/native/github_api.mbt rename to modules/bitx_hub/src/native/github_api.mbt diff --git a/src/x-hub/native/github_api_wbtest.mbt b/modules/bitx_hub/src/native/github_api_wbtest.mbt similarity index 100% rename from src/x-hub/native/github_api_wbtest.mbt rename to modules/bitx_hub/src/native/github_api_wbtest.mbt diff --git a/src/x-hub/native/github_sync.mbt b/modules/bitx_hub/src/native/github_sync.mbt similarity index 100% rename from src/x-hub/native/github_sync.mbt rename to modules/bitx_hub/src/native/github_sync.mbt diff --git a/src/x-hub/native/moon.pkg b/modules/bitx_hub/src/native/moon.pkg similarity index 93% rename from src/x-hub/native/moon.pkg rename to modules/bitx_hub/src/native/moon.pkg index affe01da..108d8074 100644 --- a/src/x-hub/native/moon.pkg +++ b/modules/bitx_hub/src/native/moon.pkg @@ -4,8 +4,8 @@ import { "mizchi/bit/protocol" @protocol, "mizchi/bit/io/native" @bitnative, "mizchi/bit/lib" @lib, - "mizchi/bit/x-hub" @hub, - "mizchi/bit/x-hub/crypto" @crypto, + "mizchi/bitx_hub" @hub, + "mizchi/bitx_hub/crypto" @crypto, "moonbitlang/async" @async, "moonbitlang/async/process" @process, "moonbitlang/core/bench" @bench, diff --git a/src/x-hub/native/pkg.generated.mbti b/modules/bitx_hub/src/native/pkg.generated.mbti similarity index 100% rename from src/x-hub/native/pkg.generated.mbti rename to modules/bitx_hub/src/native/pkg.generated.mbti diff --git a/src/x-hub/native/sync_native.mbt b/modules/bitx_hub/src/native/sync_native.mbt similarity index 100% rename from src/x-hub/native/sync_native.mbt rename to modules/bitx_hub/src/native/sync_native.mbt diff --git a/src/x-hub/native/sync_native_bench_wbtest.mbt b/modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt similarity index 100% rename from src/x-hub/native/sync_native_bench_wbtest.mbt rename to modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt diff --git a/src/x-hub/native/sync_native_wbtest.mbt b/modules/bitx_hub/src/native/sync_native_wbtest.mbt similarity index 100% rename from src/x-hub/native/sync_native_wbtest.mbt rename to modules/bitx_hub/src/native/sync_native_wbtest.mbt diff --git a/src/x-hub/notes.mbt b/modules/bitx_hub/src/notes.mbt similarity index 100% rename from src/x-hub/notes.mbt rename to modules/bitx_hub/src/notes.mbt diff --git a/src/x-hub/pkg.generated.mbti b/modules/bitx_hub/src/pkg.generated.mbti similarity index 100% rename from src/x-hub/pkg.generated.mbti rename to modules/bitx_hub/src/pkg.generated.mbti diff --git a/src/x-hub/proposal.mbt b/modules/bitx_hub/src/proposal.mbt similarity index 100% rename from src/x-hub/proposal.mbt rename to modules/bitx_hub/src/proposal.mbt diff --git a/src/x-hub/review.mbt b/modules/bitx_hub/src/review.mbt similarity index 100% rename from src/x-hub/review.mbt rename to modules/bitx_hub/src/review.mbt diff --git a/src/x-hub/store.mbt b/modules/bitx_hub/src/store.mbt similarity index 100% rename from src/x-hub/store.mbt rename to modules/bitx_hub/src/store.mbt diff --git a/src/x-hub/sync.mbt b/modules/bitx_hub/src/sync.mbt similarity index 100% rename from src/x-hub/sync.mbt rename to modules/bitx_hub/src/sync.mbt diff --git a/src/x-hub/sync_link.mbt b/modules/bitx_hub/src/sync_link.mbt similarity index 100% rename from src/x-hub/sync_link.mbt rename to modules/bitx_hub/src/sync_link.mbt diff --git a/src/x-hub/sync_link_ops.mbt b/modules/bitx_hub/src/sync_link_ops.mbt similarity index 100% rename from src/x-hub/sync_link_ops.mbt rename to modules/bitx_hub/src/sync_link_ops.mbt diff --git a/src/x-hub/sync_wbtest.mbt b/modules/bitx_hub/src/sync_wbtest.mbt similarity index 100% rename from src/x-hub/sync_wbtest.mbt rename to modules/bitx_hub/src/sync_wbtest.mbt diff --git a/src/x-hub/timestamp.mbt b/modules/bitx_hub/src/timestamp.mbt similarity index 100% rename from src/x-hub/timestamp.mbt rename to modules/bitx_hub/src/timestamp.mbt diff --git a/src/x-hub/types.mbt b/modules/bitx_hub/src/types.mbt similarity index 100% rename from src/x-hub/types.mbt rename to modules/bitx_hub/src/types.mbt diff --git a/src/x-hub/work_item.mbt b/modules/bitx_hub/src/work_item.mbt similarity index 100% rename from src/x-hub/work_item.mbt rename to modules/bitx_hub/src/work_item.mbt diff --git a/src/x-hub/workflow.mbt b/modules/bitx_hub/src/workflow.mbt similarity index 100% rename from src/x-hub/workflow.mbt rename to modules/bitx_hub/src/workflow.mbt diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json new file mode 100644 index 00000000..b15c7422 --- /dev/null +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -0,0 +1,16 @@ +{ + "name": "mizchi/bitx_rebase_ai", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/llm": "0.2.2", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "ai", "rebase"], + "description": "AI-assisted rebase helpers (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-rebase-ai/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg similarity index 100% rename from src/x-rebase-ai/moon.pkg rename to modules/bitx_rebase_ai/src/moon.pkg diff --git a/src/x-rebase-ai/pkg.generated.mbti b/modules/bitx_rebase_ai/src/pkg.generated.mbti similarity index 100% rename from src/x-rebase-ai/pkg.generated.mbti rename to modules/bitx_rebase_ai/src/pkg.generated.mbti diff --git a/src/x-rebase-ai/rebase_ai.mbt b/modules/bitx_rebase_ai/src/rebase_ai.mbt similarity index 100% rename from src/x-rebase-ai/rebase_ai.mbt rename to modules/bitx_rebase_ai/src/rebase_ai.mbt diff --git a/src/x-rebase-ai/rebase_ai_wbtest.mbt b/modules/bitx_rebase_ai/src/rebase_ai_wbtest.mbt similarity index 100% rename from src/x-rebase-ai/rebase_ai_wbtest.mbt rename to modules/bitx_rebase_ai/src/rebase_ai_wbtest.mbt diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json new file mode 100644 index 00000000..503cd062 --- /dev/null +++ b/modules/bitx_subdir/moon.mod.json @@ -0,0 +1,14 @@ +{ + "name": "mizchi/bitx_subdir", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/zlib": "0.4.5" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "subdir"], + "description": "Subdirectory clone (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-subdir/commit.mbt b/modules/bitx_subdir/src/commit.mbt similarity index 100% rename from src/x-subdir/commit.mbt rename to modules/bitx_subdir/src/commit.mbt diff --git a/src/x-subdir/history.mbt b/modules/bitx_subdir/src/history.mbt similarity index 100% rename from src/x-subdir/history.mbt rename to modules/bitx_subdir/src/history.mbt diff --git a/src/x-subdir/init.mbt b/modules/bitx_subdir/src/init.mbt similarity index 100% rename from src/x-subdir/init.mbt rename to modules/bitx_subdir/src/init.mbt diff --git a/src/x-subdir/module.mbt b/modules/bitx_subdir/src/module.mbt similarity index 100% rename from src/x-subdir/module.mbt rename to modules/bitx_subdir/src/module.mbt diff --git a/src/x-subdir/moon.pkg b/modules/bitx_subdir/src/moon.pkg similarity index 100% rename from src/x-subdir/moon.pkg rename to modules/bitx_subdir/src/moon.pkg diff --git a/src/x-subdir/pkg.generated.mbti b/modules/bitx_subdir/src/pkg.generated.mbti similarity index 100% rename from src/x-subdir/pkg.generated.mbti rename to modules/bitx_subdir/src/pkg.generated.mbti diff --git a/src/x-subdir/sparse.mbt b/modules/bitx_subdir/src/sparse.mbt similarity index 100% rename from src/x-subdir/sparse.mbt rename to modules/bitx_subdir/src/sparse.mbt diff --git a/src/x-subdir/subdir.mbt b/modules/bitx_subdir/src/subdir.mbt similarity index 100% rename from src/x-subdir/subdir.mbt rename to modules/bitx_subdir/src/subdir.mbt diff --git a/src/x-subdir/subdir_test.mbt b/modules/bitx_subdir/src/subdir_test.mbt similarity index 100% rename from src/x-subdir/subdir_test.mbt rename to modules/bitx_subdir/src/subdir_test.mbt diff --git a/src/x-subdir/types.mbt b/modules/bitx_subdir/src/types.mbt similarity index 100% rename from src/x-subdir/types.mbt rename to modules/bitx_subdir/src/types.mbt diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json new file mode 100644 index 00000000..e74d3b44 --- /dev/null +++ b/modules/bitx_workspace/moon.mod.json @@ -0,0 +1,16 @@ +{ + "name": "mizchi/bitx_workspace", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bitflow": "0.4.0", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "workspace"], + "description": "Workspace flow (extension module for mizchi/bit)", + "source": "src", + "preferred-target": "native" +} diff --git a/src/x-workspace/moon.pkg b/modules/bitx_workspace/src/moon.pkg similarity index 100% rename from src/x-workspace/moon.pkg rename to modules/bitx_workspace/src/moon.pkg diff --git a/src/x-workspace/pkg.generated.mbti b/modules/bitx_workspace/src/pkg.generated.mbti similarity index 100% rename from src/x-workspace/pkg.generated.mbti rename to modules/bitx_workspace/src/pkg.generated.mbti diff --git a/src/x-workspace/workspace.mbt b/modules/bitx_workspace/src/workspace.mbt similarity index 100% rename from src/x-workspace/workspace.mbt rename to modules/bitx_workspace/src/workspace.mbt diff --git a/src/x-workspace/workspace_wbtest.mbt b/modules/bitx_workspace/src/workspace_wbtest.mbt similarity index 100% rename from src/x-workspace/workspace_wbtest.mbt rename to modules/bitx_workspace/src/workspace_wbtest.mbt diff --git a/moon.mod.json b/moon.mod.json index bdaa1917..a1beb57a 100644 --- a/moon.mod.json +++ b/moon.mod.json @@ -10,7 +10,14 @@ "mizchi/x": "0.2.0", "bobzhang/toml": "0.1.7", "mizchi/libgit2": "0.1.0", - "mizchi/zlib": "0.4.5" + "mizchi/zlib": "0.4.5", + "mizchi/bitx_bitconfig": "0.42.2", + "mizchi/bitx_doc": "0.42.2", + "mizchi/bitx_hq": "0.42.2", + "mizchi/bitx_hub": "0.42.2", + "mizchi/bitx_rebase_ai": "0.42.2", + "mizchi/bitx_subdir": "0.42.2", + "mizchi/bitx_workspace": "0.42.2" }, "readme": "README.mbt.md", "repository": "https://github.com/mizchi/bit-vcs", diff --git a/moon.work b/moon.work index ff04925b..c27e3da6 100644 --- a/moon.work +++ b/moon.work @@ -2,5 +2,12 @@ // See docs/package-layout.md for the module split rationale. members = [ ".", + "modules/bitx_bitconfig", + "modules/bitx_doc", + "modules/bitx_hq", + "modules/bitx_hub", "modules/bitx_kv", + "modules/bitx_rebase_ai", + "modules/bitx_subdir", + "modules/bitx_workspace", ] diff --git a/src/cmd/bit/moon.pkg b/src/cmd/bit/moon.pkg index c74e6dad..51055642 100644 --- a/src/cmd/bit/moon.pkg +++ b/src/cmd/bit/moon.pkg @@ -20,15 +20,15 @@ import { "mizchi/bit/io" @bitio, "mizchi/bit/lib/native" @bitlibnative, "mizchi/bit/io/native" @bitnative, - "mizchi/bit/x-hub" @hub, - "mizchi/bit/x-hub/native" @hub_native, - "mizchi/bit/x-rebase-ai" @rebase_ai, + "mizchi/bitx_hub" @hub, + "mizchi/bitx_hub/native" @hub_native, + "mizchi/bitx_rebase_ai" @rebase_ai, "mizchi/bit/vfs" @bitfs, - "mizchi/bit/x-doc" @xdoc, - "mizchi/bit/x-hq" @hq, - "mizchi/bit/x-subdir" @subdir, - "mizchi/bit/x-bitconfig" @bitconfig, - "mizchi/bit/x-workspace" @workspace, + "mizchi/bitx_doc" @xdoc, + "mizchi/bitx_hq" @hq, + "mizchi/bitx_subdir" @subdir, + "mizchi/bitx_bitconfig" @bitconfig, + "mizchi/bitx_workspace" @workspace, "mizchi/bit/reftable" @reftable, "mizchi/bit/runtime" @runtime, "mizchi/bit/string_utils" @string_utils, diff --git a/src/cmd/git-bit/moon.pkg b/src/cmd/git-bit/moon.pkg index 0de1684b..2d4e7a12 100644 --- a/src/cmd/git-bit/moon.pkg +++ b/src/cmd/git-bit/moon.pkg @@ -5,9 +5,9 @@ import { "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit/string_utils" @string_utils, - "mizchi/bit/x-hq" @hq, - "mizchi/bit/x-hub" @hub, - "mizchi/bit/x-hub/native" @hub_native, + "mizchi/bitx_hq" @hq, + "mizchi/bitx_hub" @hub, + "mizchi/bitx_hub/native" @hub_native, "moonbitlang/async" @async, "moonbitlang/async/process" @process, "moonbitlang/async/stdio" @stdio, diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index f19eda24..68379376 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -6,13 +6,15 @@ // // Exit codes: 0 = clean, 1 = violations found. -import { readFileSync, readdirSync, statSync } from "node:fs"; +import { existsSync, readFileSync, readdirSync, statSync } from "node:fs"; import { join, relative } from "node:path"; import { fileURLToPath } from "node:url"; const REPO_ROOT = join(fileURLToPath(import.meta.url), "..", ".."); const SRC = join(REPO_ROOT, "src"); +const MODULES_DIR = join(REPO_ROOT, "modules"); const MODULE_PREFIX = "mizchi/bit"; +const EXT_PREFIX = "mizchi/bitx_"; // Layer order (low to high). A package may import from its own layer or any // lower layer. @@ -65,18 +67,26 @@ const HIGH = new Set([ "fingerprint", ]); +function isExtModule(pkgPath) { + return pkgPath === EXT_PREFIX.slice(0, -1) /* never matches */ || + pkgPath.startsWith(EXT_PREFIX); +} + function isOurModule(pkgPath) { - return pkgPath === MODULE_PREFIX || pkgPath.startsWith(MODULE_PREFIX + "/"); + if (pkgPath === MODULE_PREFIX || pkgPath.startsWith(MODULE_PREFIX + "/")) return true; + if (isExtModule(pkgPath)) return true; + return false; } -// Map a package path (e.g. "mizchi/bit/hash") to its layer. +// Map a package path (e.g. "mizchi/bit/hash" or "mizchi/bitx_hub/native") +// to its layer. function classify(pkgPath) { if (!isOurModule(pkgPath)) return null; // external + if (isExtModule(pkgPath)) return "ext"; const rel = pkgPath === MODULE_PREFIX ? "" : pkgPath.slice(MODULE_PREFIX.length + 1); const top = rel.split("/")[0]; if (rel === "") return "core"; if (top === "cmd" || top === "tests" || top === "fuzz_tests") return "cmd"; - if (top.startsWith("x-")) return "ext"; if (CORE.has(top)) return "core"; if (MID.has(top)) return "mid"; if (HIGH.has(top)) return "high"; @@ -85,6 +95,12 @@ function classify(pkgPath) { function topSegment(pkgPath) { if (!isOurModule(pkgPath)) return null; + if (isExtModule(pkgPath)) { + // For ext modules, the "family" is the module name itself + // (e.g. "mizchi/bitx_hub" is one family — its sub-packages /native, + // /crypto are the same family). + return pkgPath.split("/").slice(0, 2).join("/"); + } if (pkgPath === MODULE_PREFIX) return ""; return pkgPath.slice(MODULE_PREFIX.length + 1).split("/")[0]; } @@ -101,12 +117,27 @@ function* walkPkgFiles(dir) { } } -// Derive the package path "mizchi/bit/" from a moon.pkg location. -function pkgPathOf(moonPkgFile) { +// Roots to walk. Each root maps a moon.pkg file to a package path: +// { dir, prefix } → package path = prefix + ("" or "/") +function discoverRoots() { + const roots = [{ dir: SRC, prefix: MODULE_PREFIX }]; + if (existsSync(MODULES_DIR)) { + for (const name of readdirSync(MODULES_DIR)) { + const modSrc = join(MODULES_DIR, name, "src"); + if (existsSync(modSrc)) { + roots.push({ dir: modSrc, prefix: `mizchi/${name}` }); + } + } + } + return roots; +} + +// Derive the package path from a moon.pkg location for a given root. +function pkgPathOf(moonPkgFile, root) { const dir = moonPkgFile.replace(/\/(moon\.pkg|moon\.pkg\.json)$/, ""); - const rel = relative(SRC, dir); - if (rel === "" || rel === ".") return MODULE_PREFIX; - return MODULE_PREFIX + "/" + rel.split("\\").join("/"); + const rel = relative(root.dir, dir); + if (rel === "" || rel === ".") return root.prefix; + return root.prefix + "/" + rel.split("\\").join("/"); } // Extract imported package paths from a moon.pkg / moon.pkg.json file. @@ -140,8 +171,16 @@ function extractImports(file) { const violations = []; -for (const file of walkPkgFiles(SRC)) { - const fromPath = pkgPathOf(file); +const roots = discoverRoots(); +const files = []; +for (const root of roots) { + for (const file of walkPkgFiles(root.dir)) { + files.push({ file, root }); + } +} + +for (const { file, root } of files) { + const fromPath = pkgPathOf(file, root); const fromLayer = classify(fromPath); if (fromLayer === null || fromLayer === "unknown") { violations.push({ From 6f418c5569f0c3f2c316b73994453c9604bd9c00 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 14:02:08 +0000 Subject: [PATCH 03/26] refactor: move main bit module into modules/bit/ for uniform layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flatten the repo layout so every workspace member lives under modules/. Previously the main mizchi/bit module sat at the repo root (src/ + moon.mod.json) while extensions lived under modules/bitx_*. Now: modules/ bit/ ← main module (was repo root) moon.mod.json README.mbt.md src/ bitx_bitconfig/ bitx_doc/ ... - moon.work members updated to point at modules/bit instead of "." - modules/bit/moon.mod.json: dropped the now-irrelevant `exclude` list (the repo-root sibling dirs are no longer reachable from the module root, so MoonBit's source globbing leaves them alone naturally) - tools/check-layers.mjs no longer treats src/ at repo root specially; it just walks modules/*/src - tools/check-layer-guards.sh, tools/install-bit.sh, tools/playground- dev.sh, tools/flaker-affected-rules.{toml,mjs}, tools/flaker-affected- rules.test.mjs all rewritten to use the modules/bit/src/* prefix - Taskfile.pkl: moonbitSources glob covers modules/**, build commands point at modules/bit/src/{lib,cmd/bit} - flake.nix / package.nix: moonModJson now resolves to modules/bit/moon.mod.json - .github/workflows/pages-demo.yml path filter updated - docs/package-layout.md rewritten with the new repository layout diagram and updated per-package path columns moon check passes (0 errors) and node tools/check-layers.mjs is clean. --- .github/workflows/pages-demo.yml | 5 +- Taskfile.pkl | 21 +- docs/package-layout.md | 103 +++++---- flake.nix | 2 +- README.mbt.md => modules/bit/README.mbt.md | 0 moon.mod.json => modules/bit/moon.mod.json | 20 -- {src => modules/bit/src}/TODO.md | 0 {src => modules/bit/src}/apply/apply.mbt | 0 {src => modules/bit/src}/apply/apply_test.mbt | 0 {src => modules/bit/src}/apply/moon.pkg | 0 .../bit/src}/apply/pkg.generated.mbti | 0 .../bit/src}/bootstrap/bootstrap.mbt | 0 {src => modules/bit/src}/bootstrap/moon.pkg | 0 .../bit/src}/bootstrap/pkg.generated.mbti | 0 .../bit/src}/bootstrap/stdio_guard_stub.c | 0 {src => modules/bit/src}/cmd/bit/add.mbt | 0 .../bit/src}/cmd/bit/add_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/ai.mbt | 0 {src => modules/bit/src}/cmd/bit/am.mbt | 0 {src => modules/bit/src}/cmd/bit/apply.mbt | 0 {src => modules/bit/src}/cmd/bit/archive.mbt | 0 .../bit/src}/cmd/bit/bench_apply_wbtest.mbt | 0 .../src}/cmd/bit/bench_cat_file_wbtest.mbt | 0 .../cmd/bit/bench_e2e_clone_fetch_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_fsck_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_grep_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_init_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_log_wbtest.mbt | 0 .../src}/cmd/bit/bench_midx_clone_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_repack_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_stash_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_status_wbtest.mbt | 0 .../bit/src}/cmd/bit/bench_suppress_stub.c | 0 .../src}/cmd/bit/bench_suppress_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/bisect.mbt | 0 .../bit/src}/cmd/bit/bisect_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/blame.mbt | 0 .../bit/src}/cmd/bit/blame_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/branch.mbt | 0 .../bit/src}/cmd/bit/branch_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/bundle.mbt | 0 {src => modules/bit/src}/cmd/bit/cat.mbt | 0 {src => modules/bit/src}/cmd/bit/cat_file.mbt | 0 .../bit/src}/cmd/bit/cat_file_wbtest.mbt | 0 .../bit/src}/cmd/bit/check_attr.mbt | 0 .../bit/src}/cmd/bit/check_ignore.mbt | 0 .../bit/src}/cmd/bit/check_ignore_wbtest.mbt | 0 .../bit/src}/cmd/bit/check_mailmap.mbt | 0 .../bit/src}/cmd/bit/check_ref_format.mbt | 0 {src => modules/bit/src}/cmd/bit/checkout.mbt | 0 .../bit/src}/cmd/bit/checkout_index.mbt | 0 .../bit/src}/cmd/bit/checkout_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/cherry.mbt | 0 .../bit/src}/cmd/bit/cherry_pick.mbt | 0 .../bit/src}/cmd/bit/cherry_pick_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/clean.mbt | 0 {src => modules/bit/src}/cmd/bit/clone.mbt | 0 .../bit/src}/cmd/bit/clone_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/column.mbt | 0 {src => modules/bit/src}/cmd/bit/commit.mbt | 0 .../bit/src}/cmd/bit/commit_graph.mbt | 0 .../bit/src}/cmd/bit/commit_graph_write.mbt | 0 .../cmd/bit/commit_graph_write_wbtest.mbt | 0 .../bit/src}/cmd/bit/commit_tree.mbt | 0 .../bit/src}/cmd/bit/commit_wbtest.mbt | 0 .../bit/src}/cmd/bit/completion.mbt | 0 {src => modules/bit/src}/cmd/bit/config.mbt | 0 .../bit/src}/cmd/bit/count_objects.mbt | 0 .../bit/src}/cmd/bit/credential.mbt | 0 {src => modules/bit/src}/cmd/bit/debug.mbt | 0 .../cmd/bit/delegation_cleanup_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/describe.mbt | 0 {src => modules/bit/src}/cmd/bit/diff.mbt | 0 .../bit/src}/cmd/bit/diff_tree.mbt | 0 .../bit/src}/cmd/bit/diff_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/difftool.mbt | 0 {src => modules/bit/src}/cmd/bit/doc.mbt | 0 {src => modules/bit/src}/cmd/bit/fallback.mbt | 0 .../bit/src}/cmd/bit/fallback_wbtest.mbt | 0 .../bit/src}/cmd/bit/fast_export.mbt | 0 .../bit/src}/cmd/bit/fast_import.mbt | 0 {src => modules/bit/src}/cmd/bit/fetch.mbt | 0 .../bit/src}/cmd/bit/fetch_pack.mbt | 0 .../bit/src}/cmd/bit/fetch_serve_js.mbt | 0 .../bit/src}/cmd/bit/fetch_serve_native.mbt | 0 .../bit/src}/cmd/bit/fetch_wbtest.mbt | 0 .../bit/src}/cmd/bit/filter_branch.mbt | 0 .../bit/src}/cmd/bit/fmt_merge_msg.mbt | 0 .../bit/src}/cmd/bit/for_each_ref.mbt | 0 .../bit/src}/cmd/bit/for_each_repo.mbt | 0 .../bit/src}/cmd/bit/format_patch.mbt | 0 .../bit/src}/cmd/bit/format_patch_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/fsck.mbt | 0 {src => modules/bit/src}/cmd/bit/gc.mbt | 0 .../bit/src}/cmd/bit/get_tar_commit_id.mbt | 0 .../bit/src}/cmd/bit/gitconfig.mbt | 0 .../bit/src}/cmd/bit/gitconfig_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/grep.mbt | 0 .../bit/src}/cmd/bit/grep_filter.mbt | 0 .../bit/src}/cmd/bit/grep_filter_wbtest.mbt | 0 .../bit/src}/cmd/bit/grep_wbtest.mbt | 0 .../bit/src}/cmd/bit/handlers_core_wbtest.mbt | 0 .../bit/src}/cmd/bit/handlers_hub_wbtest.mbt | 0 .../cmd/bit/handlers_interactive_wbtest.mbt | 0 .../bit/src}/cmd/bit/handlers_misc_wbtest.mbt | 0 .../cmd/bit/handlers_remote_pull_wbtest.mbt | 0 .../cmd/bit/handlers_remote_push_wbtest.mbt | 0 .../src}/cmd/bit/handlers_scalar_wbtest.mbt | 0 .../src}/cmd/bit/handlers_shell_wbtest.mbt | 0 .../src}/cmd/bit/handlers_subdir_wbtest.mbt | 0 .../bit/src}/cmd/bit/hash_object.mbt | 0 .../bit/src}/cmd/bit/hash_object_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/helpers.mbt | 0 .../bit/src}/cmd/bit/helpers_js.mbt | 0 .../bit/src}/cmd/bit/helpers_shared.mbt | 0 .../bit/src}/cmd/bit/helpers_wbtest.mbt | 0 .../bit/src}/cmd/bit/hook_runner.mbt | 0 {src => modules/bit/src}/cmd/bit/hooks.mbt | 0 .../bit/src}/cmd/bit/hooks_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/hq.mbt | 0 .../bit/src}/cmd/bit/http_fetch.mbt | 0 .../bit/src}/cmd/bit/http_serve_js.mbt | 0 .../bit/src}/cmd/bit/http_serve_native.mbt | 0 .../bit/src}/cmd/bit/hub_active.mbt | 0 .../bit/src}/cmd/bit/hub_active_wbtest.mbt | 0 .../bit/src}/cmd/bit/hub_compat.mbt | 0 .../bit/src}/cmd/bit/hub_debug.mbt | 0 .../bit/src}/cmd/bit/hub_github_sync.mbt | 0 .../bit/src}/cmd/bit/hub_helpers.mbt | 0 .../bit/src}/cmd/bit/hub_import.mbt | 0 .../bit/src}/cmd/bit/hub_issue.mbt | 0 {src => modules/bit/src}/cmd/bit/hub_note.mbt | 0 {src => modules/bit/src}/cmd/bit/hub_pr.mbt | 0 .../bit/src}/cmd/bit/hub_remote.mbt | 0 .../bit/src}/cmd/bit/hub_remote_wbtest.mbt | 0 .../bit/src}/cmd/bit/hub_search.mbt | 0 .../bit/src}/cmd/bit/hub_stores.mbt | 0 {src => modules/bit/src}/cmd/bit/hub_sync.mbt | 0 .../bit/src}/cmd/bit/hub_tty_stub.c | 0 .../bit/src}/cmd/bit/index_pack.mbt | 0 {src => modules/bit/src}/cmd/bit/init.mbt | 0 .../bit/src}/cmd/bit/init_wbtest.mbt | 0 .../bit/src}/cmd/bit/interactive.mbt | 0 .../bit/src}/cmd/bit/interpret_trailers.mbt | 0 {src => modules/bit/src}/cmd/bit/log.mbt | 0 .../bit/src}/cmd/bit/log_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/ls_files.mbt | 0 .../bit/src}/cmd/bit/ls_files_wbtest.mbt | 0 .../bit/src}/cmd/bit/ls_remote.mbt | 0 {src => modules/bit/src}/cmd/bit/ls_tree.mbt | 0 {src => modules/bit/src}/cmd/bit/mailinfo.mbt | 0 .../bit/src}/cmd/bit/mailsplit.mbt | 0 {src => modules/bit/src}/cmd/bit/main.mbt | 0 {src => modules/bit/src}/cmd/bit/main_js.mbt | 0 .../bit/src}/cmd/bit/main_wasm.mbt | 0 .../bit/src}/cmd/bit/main_wbtest.mbt | 0 .../bit/src}/cmd/bit/maintenance.mbt | 0 {src => modules/bit/src}/cmd/bit/merge.mbt | 0 .../bit/src}/cmd/bit/merge_base.mbt | 0 .../bit/src}/cmd/bit/merge_file.mbt | 0 .../bit/src}/cmd/bit/merge_index.mbt | 0 .../bit/src}/cmd/bit/merge_one_file.mbt | 0 .../bit/src}/cmd/bit/merge_tree.mbt | 0 .../bit/src}/cmd/bit/merge_wbtest.mbt | 0 .../bit/src}/cmd/bit/mktag_cmd.mbt | 0 {src => modules/bit/src}/cmd/bit/mktree.mbt | 0 {src => modules/bit/src}/cmd/bit/moon.pkg | 0 .../bit/src}/cmd/bit/multi_pack_index.mbt | 0 .../src}/cmd/bit/multi_pack_index_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/mv.mbt | 0 {src => modules/bit/src}/cmd/bit/name_rev.mbt | 0 {src => modules/bit/src}/cmd/bit/notes.mbt | 0 {src => modules/bit/src}/cmd/bit/osfs.mbt | 0 .../bit/src}/cmd/bit/pack_bitmap_read.mbt | 0 .../bit/src}/cmd/bit/pack_bitmap_write.mbt | 0 .../src}/cmd/bit/pack_bitmap_write_wbtest.mbt | 0 .../bit/src}/cmd/bit/pack_helpers.mbt | 0 .../bit/src}/cmd/bit/pack_helpers_wbtest.mbt | 0 .../bit/src}/cmd/bit/pack_objects.mbt | 0 .../bit/src}/cmd/bit/pack_objects_cruft.mbt | 0 .../bit/src}/cmd/bit/pack_redundant.mbt | 0 .../bit/src}/cmd/bit/pack_refs.mbt | 0 {src => modules/bit/src}/cmd/bit/patch_id.mbt | 0 .../bit/src}/cmd/bit/pkg.generated.mbti | 0 {src => modules/bit/src}/cmd/bit/prune.mbt | 0 .../bit/src}/cmd/bit/prune_packed.mbt | 0 {src => modules/bit/src}/cmd/bit/pull.mbt | 0 {src => modules/bit/src}/cmd/bit/push.mbt | 0 .../bit/src}/cmd/bit/quiltimport.mbt | 0 .../bit/src}/cmd/bit/range_diff.mbt | 0 .../bit/src}/cmd/bit/read_tree.mbt | 0 {src => modules/bit/src}/cmd/bit/rebase.mbt | 0 .../bit/src}/cmd/bit/rebase_ai.mbt | 0 .../bit/src}/cmd/bit/rebase_ai_wbtest.mbt | 0 .../bit/src}/cmd/bit/rebase_wbtest.mbt | 0 .../bit/src}/cmd/bit/receive_pack.mbt | 0 {src => modules/bit/src}/cmd/bit/reflog.mbt | 0 .../bit/src}/cmd/bit/reflog_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/relay.mbt | 0 .../bit/src}/cmd/bit/relay_ci_review.mbt | 0 {src => modules/bit/src}/cmd/bit/relay_js.mbt | 0 .../bit/src}/cmd/bit/relay_watch.mbt | 0 .../bit/src}/cmd/bit/relay_watch_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/remote.mbt | 0 .../bit/src}/cmd/bit/remote_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/repack.mbt | 0 {src => modules/bit/src}/cmd/bit/replace.mbt | 0 .../bit/src}/cmd/bit/request_pull.mbt | 0 {src => modules/bit/src}/cmd/bit/rerere.mbt | 0 {src => modules/bit/src}/cmd/bit/reset.mbt | 0 .../bit/src}/cmd/bit/reset_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/restore.mbt | 0 .../bit/src}/cmd/bit/restore_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/rev_list.mbt | 0 .../bit/src}/cmd/bit/rev_list_wbtest.mbt | 0 .../bit/src}/cmd/bit/rev_parse.mbt | 0 .../bit/src}/cmd/bit/rev_parse_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/revert.mbt | 0 {src => modules/bit/src}/cmd/bit/rm.mbt | 0 .../bit/src}/cmd/bit/rm_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/scalar.mbt | 0 .../bit/src}/cmd/bit/send_pack.mbt | 0 {src => modules/bit/src}/cmd/bit/serve.mbt | 0 {src => modules/bit/src}/cmd/bit/shell.mbt | 0 {src => modules/bit/src}/cmd/bit/shortlog.mbt | 0 .../bit/src}/cmd/bit/shortlog_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/show.mbt | 0 .../bit/src}/cmd/bit/show_branches.mbt | 0 .../bit/src}/cmd/bit/show_index.mbt | 0 {src => modules/bit/src}/cmd/bit/show_ref.mbt | 0 .../bit/src}/cmd/bit/show_wbtest.mbt | 0 .../bit/src}/cmd/bit/signing_helpers.mbt | 0 .../bit/src}/cmd/bit/sigpipe_js.mbt | 0 .../bit/src}/cmd/bit/sigpipe_native.mbt | 0 .../bit/src}/cmd/bit/sigpipe_stub.c | 0 .../bit/src}/cmd/bit/sparse_checkout.mbt | 0 .../src}/cmd/bit/sparse_checkout_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/stash.mbt | 0 {src => modules/bit/src}/cmd/bit/status.mbt | 0 .../bit/src}/cmd/bit/status_wbtest.mbt | 0 .../bit/src}/cmd/bit/storage_runtime.mbt | 0 .../src}/cmd/bit/storage_runtime_wbtest.mbt | 0 .../bit/src}/cmd/bit/stripspace.mbt | 0 .../bit/src}/cmd/bit/subdir_clone.mbt | 0 .../bit/src}/cmd/bit/subdir_ops.mbt | 0 .../src}/cmd/bit/subdir_shorthand_wbtest.mbt | 0 .../bit/src}/cmd/bit/submodule.mbt | 0 .../bit/src}/cmd/bit/submodule_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/switch.mbt | 0 .../bit/src}/cmd/bit/switch_wbtest.mbt | 0 .../bit/src}/cmd/bit/symbolic_ref.mbt | 0 {src => modules/bit/src}/cmd/bit/tag.mbt | 0 .../bit/src}/cmd/bit/tag_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/time_js.mbt | 0 .../bit/src}/cmd/bit/time_native.mbt | 0 {src => modules/bit/src}/cmd/bit/time_stub.c | 0 .../bit/src}/cmd/bit/time_wasm.mbt | 0 .../bit/src}/cmd/bit/time_web_wbtest.mbt | 0 {src => modules/bit/src}/cmd/bit/tree.mbt | 0 .../bit/src}/cmd/bit/unpack_file.mbt | 0 .../bit/src}/cmd/bit/unpack_objects.mbt | 0 .../bit/src}/cmd/bit/update_index.mbt | 0 .../bit/src}/cmd/bit/update_index_wbtest.mbt | 0 .../bit/src}/cmd/bit/update_ref.mbt | 0 .../bit/src}/cmd/bit/update_ref_wbtest.mbt | 0 .../bit/src}/cmd/bit/update_server_info.mbt | 0 .../bit/src}/cmd/bit/upload_archive.mbt | 0 .../bit/src}/cmd/bit/upload_pack.mbt | 0 {src => modules/bit/src}/cmd/bit/var.mbt | 0 .../bit/src}/cmd/bit/verify_commit.mbt | 0 .../bit/src}/cmd/bit/verify_pack.mbt | 0 .../bit/src}/cmd/bit/verify_tag.mbt | 0 .../bit/src}/cmd/bit/verify_wbtest.mbt | 0 .../src}/cmd/bit/wbtest_env_lock_shared.mbt | 0 .../bit/src}/cmd/bit/web_browse.mbt | 0 .../bit/src}/cmd/bit/workspace.mbt | 0 {src => modules/bit/src}/cmd/bit/worktree.mbt | 0 .../bit/src}/cmd/bit/worktree_wbtest.mbt | 0 .../bit/src}/cmd/bit/write_tree.mbt | 0 .../bit/src}/cmd/bit/write_tree_wbtest.mbt | 0 .../bit/src}/cmd/git-bit/git_helpers.mbt | 0 .../bit/src}/cmd/git-bit/helpers_shared.mbt | 0 .../bit/src}/cmd/git-bit/hub_active.mbt | 0 .../bit/src}/cmd/git-bit/hub_debug.mbt | 0 .../bit/src}/cmd/git-bit/hub_github_sync.mbt | 0 .../bit/src}/cmd/git-bit/hub_helpers.mbt | 0 .../bit/src}/cmd/git-bit/hub_import.mbt | 0 .../bit/src}/cmd/git-bit/hub_issue.mbt | 0 .../src}/cmd/git-bit/hub_libgit2_native.mbt | 0 .../bit/src}/cmd/git-bit/hub_libgit2_stub.c | 0 .../bit/src}/cmd/git-bit/hub_note.mbt | 0 .../bit/src}/cmd/git-bit/hub_pr.mbt | 0 .../bit/src}/cmd/git-bit/hub_remote.mbt | 0 .../bit/src}/cmd/git-bit/hub_search.mbt | 0 .../bit/src}/cmd/git-bit/hub_stores.mbt | 0 .../src}/cmd/git-bit/hub_stores_wbtest.mbt | 0 {src => modules/bit/src}/cmd/git-bit/main.mbt | 0 .../bit/src}/cmd/git-bit/main_js.mbt | 0 .../bit/src}/cmd/git-bit/main_wasm.mbt | 0 {src => modules/bit/src}/cmd/git-bit/moon.pkg | 0 {src => modules/bit/src}/cmd/git-bit/osfs.mbt | 0 .../bit/src}/cmd/git-bit/pkg.generated.mbti | 0 .../bit/src}/cmd/git-bit/time_native.mbt | 0 .../bit/src}/cmd/git-bit/time_stub.c | 0 .../bit/src}/config_parse/bench_test.mbt | 0 .../bit/src}/config_parse/config_parse.mbt | 0 .../src}/config_parse/config_parse_test.mbt | 0 .../bit/src}/config_parse/moon.pkg | 0 .../bit/src}/config_parse/pkg.generated.mbti | 0 .../bit/src}/date_parse/date_parse.mbt | 0 .../bit/src}/date_parse/date_parse_test.mbt | 0 {src => modules/bit/src}/date_parse/moon.pkg | 0 .../bit/src}/date_parse/pkg.generated.mbti | 0 {src => modules/bit/src}/diff/bench_test.mbt | 0 {src => modules/bit/src}/diff/diff_ops.mbt | 0 {src => modules/bit/src}/diff/moon.pkg | 0 .../bit/src}/diff/pkg.generated.mbti | 0 {src => modules/bit/src}/diff3/diff3.mbt | 0 .../bit/src}/diff3/diff3_wbtest.mbt | 0 {src => modules/bit/src}/diff3/moon.pkg | 0 .../bit/src}/diff3/pkg.generated.mbti | 0 .../bit/src}/diff_core/bench_test.mbt | 0 .../bit/src}/diff_core/diff_core.mbt | 0 .../bit/src}/diff_core/diff_core_test.mbt | 0 {src => modules/bit/src}/diff_core/moon.pkg | 0 .../bit/src}/diff_core/pkg.generated.mbti | 0 .../src}/fast_import/fast_import_parse.mbt | 0 .../fast_import/fast_import_parse_test.mbt | 0 {src => modules/bit/src}/fast_import/moon.pkg | 0 .../bit/src}/fast_import/pkg.generated.mbti | 0 .../bit/src}/fingerprint/fingerprint.mbt | 0 .../src}/fingerprint/fingerprint_wbtest.mbt | 0 {src => modules/bit/src}/fingerprint/moon.pkg | 0 .../bit/src}/fingerprint/pkg.generated.mbti | 0 .../bit/src}/fuzz_tests/core_fuzz_test.mbt | 0 .../bit/src}/fuzz_tests/ignore_fuzz_test.mbt | 0 .../bit/src}/fuzz_tests/lcg_test.mbt | 0 {src => modules/bit/src}/fuzz_tests/moon.pkg | 0 .../src}/fuzz_tests/pack_corpus_fuzz_test.mbt | 0 .../bit/src}/fuzz_tests/parsers_fuzz_test.mbt | 0 .../bit/src}/fuzz_tests/pkg.generated.mbti | 0 .../fuzz_tests/repo_objects_fuzz_test.mbt | Bin .../bit/src}/fuzz_tests/security_test.mbt | 0 {src => modules/bit/src}/grep/moon.pkg | 0 {src => modules/bit/src}/grep/pattern.mbt | 0 .../bit/src}/grep/pattern_wbtest.mbt | 0 .../bit/src}/grep/pkg.generated.mbti | 0 {src => modules/bit/src}/grep/search.mbt | 0 .../bit/src}/grep/search_wbtest.mbt | 0 {src => modules/bit/src}/hash/bench_test.mbt | 0 {src => modules/bit/src}/hash/hex.mbt | 0 {src => modules/bit/src}/hash/hex_test.mbt | 0 {src => modules/bit/src}/hash/moon.pkg | 0 .../bit/src}/hash/pkg.generated.mbti | 0 {src => modules/bit/src}/hash/sha1.mbt | 0 {src => modules/bit/src}/hash/sha1_test.mbt | 0 {src => modules/bit/src}/hash/sha256.mbt | 0 {src => modules/bit/src}/hash/sha256_test.mbt | 0 .../bit/src}/ignore/bench_test.mbt | 0 {src => modules/bit/src}/ignore/ignore.mbt | 0 .../bit/src}/ignore/ignore_test.mbt | 0 {src => modules/bit/src}/ignore/moon.pkg | 0 .../bit/src}/ignore/pkg.generated.mbti | 0 {src => modules/bit/src}/io/env_provider.mbt | 0 {src => modules/bit/src}/io/fs.mbt | 0 {src => modules/bit/src}/io/http_client.mbt | 0 {src => modules/bit/src}/io/moon.pkg | 0 .../bit/src}/io/native/env_native.mbt | 0 .../bit/src}/io/native/http_client_native.mbt | 0 .../bit/src}/io/native/init_native.mbt | 0 .../bit/src}/io/native/lstat_stub.c | 0 {src => modules/bit/src}/io/native/moon.pkg | 0 .../bit/src}/io/native/pkg.generated.mbti | 0 .../bit/src}/io/native/readdir_stub.c | 0 {src => modules/bit/src}/io/native/remote.mbt | 0 .../bit/src}/io/native/upload_pack_http.mbt | 0 .../io/native/upload_pack_http_common.mbt | 0 .../native/upload_pack_http_common_wbtest.mbt | 0 .../src}/io/native/upload_pack_process.mbt | 0 .../io/native/upload_pack_process_wbtest.mbt | 0 .../io/native/upload_pack_remote_native.mbt | 0 .../src}/io/native/worktree_probe_native.mbt | 0 .../bit/src}/io/pkg.generated.mbti | 0 {src => modules/bit/src}/io/test_fs.mbt | 0 .../bit/src}/io/worktree_probe.mbt | 0 .../bit/src}/lib/bench_config_test.mbt | 0 .../bit/src}/lib/bench_index_diff_test.mbt | 0 .../bit/src}/lib/bench_ops_test.mbt | 0 .../bit/src}/lib/bench_status_test.mbt | 0 .../bit/src}/lib/bench_working_files_test.mbt | 0 {src => modules/bit/src}/lib/bisect.mbt | 0 {src => modules/bit/src}/lib/branch.mbt | 0 {src => modules/bit/src}/lib/branch_test.mbt | 0 {src => modules/bit/src}/lib/checkout.mbt | 0 .../bit/src}/lib/checkout_test.mbt | 0 .../bit/src}/lib/checkout_wbtest.mbt | 0 {src => modules/bit/src}/lib/cherry_pick.mbt | 0 .../bit/src}/lib/commit_graph_reader.mbt | 0 .../src}/lib/commit_graph_reader_wbtest.mbt | 0 .../bit/src}/lib/commit_helpers.mbt | 0 .../bit/src}/lib/compat_object.mbt | 0 .../bit/src}/lib/core_interfaces.mbt | 0 {src => modules/bit/src}/lib/diff.mbt | 0 .../bit/src}/lib/diff_tree_helpers.mbt | 0 {src => modules/bit/src}/lib/fs_tree.mbt | 0 {src => modules/bit/src}/lib/fs_tree_test.mbt | 0 {src => modules/bit/src}/lib/fsck.mbt | 0 {src => modules/bit/src}/lib/fsck_test.mbt | 0 {src => modules/bit/src}/lib/gc.mbt | 0 {src => modules/bit/src}/lib/gc_test.mbt | 0 .../bit/src}/lib/gitattributes.mbt | 0 .../bit/src}/lib/ignore_worktree.mbt | 0 .../bit/src}/lib/ignore_worktree_async.mbt | 0 .../bit/src}/lib/ignore_worktree_test.mbt | 0 {src => modules/bit/src}/lib/index.mbt | 0 {src => modules/bit/src}/lib/index_wbtest.mbt | 0 {src => modules/bit/src}/lib/init.mbt | 0 {src => modules/bit/src}/lib/init_test.mbt | 0 .../bit/src}/lib/js_api_exports.mbt | 0 .../bit/src}/lib/js_export_types.mbt | 0 .../bit/src}/lib/js_exports_wbtest.mbt | 0 .../bit/src}/lib/js_host_bridge.mbt | 0 .../bit/src}/lib/js_transport_bridge.mbt | 0 {src => modules/bit/src}/lib/lfs.mbt | 0 {src => modules/bit/src}/lib/lfs_wbtest.mbt | 0 {src => modules/bit/src}/lib/log.mbt | 0 {src => modules/bit/src}/lib/merge.mbt | 0 {src => modules/bit/src}/lib/merge_base.mbt | 0 .../bit/src}/lib/merge_base_test.mbt | 0 {src => modules/bit/src}/lib/merge_test.mbt | 0 {src => modules/bit/src}/lib/moon.pkg | 0 .../native/bench_worktree_entry_wbtest.mbt | 0 .../bit/src}/lib/native/filter.mbt | 0 .../bit/src}/lib/native/ignore_async_test.mbt | 0 .../bit/src}/lib/native/lfs_client.mbt | 0 .../bit/src}/lib/native/lfs_client_wbtest.mbt | 0 .../bit/src}/lib/native/lfs_prefetch.mbt | 0 {src => modules/bit/src}/lib/native/moon.pkg | 0 .../bit/src}/lib/native/pkg.generated.mbti | 0 .../bit/src}/lib/native/promisor.mbt | 0 .../bit/src}/lib/native/remote_ref.mbt | 0 .../bit/src}/lib/native/sync_http.mbt | 0 .../bit/src}/lib/native/worktree_modes.mbt | 0 {src => modules/bit/src}/lib/object_db.mbt | 0 {src => modules/bit/src}/lib/pack_collect.mbt | 0 .../bit/src}/lib/pack_collect_test.mbt | 0 {src => modules/bit/src}/lib/path.mbt | 0 .../bit/src}/lib/pkg.generated.mbti | 0 {src => modules/bit/src}/lib/profile.mbt | 0 {src => modules/bit/src}/lib/promisor.mbt | 0 {src => modules/bit/src}/lib/prune_test.mbt | 0 .../bit/src}/lib/pure_runtime_test.mbt | 0 {src => modules/bit/src}/lib/rebase.mbt | 0 .../bit/src}/lib/rebase_interactive.mbt | 0 .../src}/lib/rebase_interactive_wbtest.mbt | 0 {src => modules/bit/src}/lib/rebase_test.mbt | 0 {src => modules/bit/src}/lib/receive_pack.mbt | 0 .../bit/src}/lib/receive_pack_test.mbt | 0 {src => modules/bit/src}/lib/reflog.mbt | 0 {src => modules/bit/src}/lib/refs_store.mbt | 0 .../bit/src}/lib/remote_config.mbt | 0 .../bit/src}/lib/remote_helpers.mbt | 0 {src => modules/bit/src}/lib/remote_path.mbt | 0 .../bit/src}/lib/remote_path_test.mbt | 0 .../bit/src}/lib/remote_shorthand.mbt | 0 .../bit/src}/lib/rename_detect.mbt | 0 {src => modules/bit/src}/lib/reset.mbt | 0 {src => modules/bit/src}/lib/reset_test.mbt | 0 .../bit/src}/lib/rev_list_helpers.mbt | 0 {src => modules/bit/src}/lib/revparse.mbt | 0 .../bit/src}/lib/revparse_test.mbt | 0 .../bit/src}/lib/shallow_sparse_test.mbt | 0 {src => modules/bit/src}/lib/smart_http.mbt | 0 .../bit/src}/lib/smart_http_test.mbt | 0 {src => modules/bit/src}/lib/sparse.mbt | 0 .../bit/src}/lib/sparse_wbtest.mbt | 0 {src => modules/bit/src}/lib/stash.mbt | 0 {src => modules/bit/src}/lib/stash_test.mbt | 0 {src => modules/bit/src}/lib/status_text.mbt | 0 {src => modules/bit/src}/lib/status_walk.mbt | 0 {src => modules/bit/src}/lib/subdir.mbt | 0 .../bit/src}/lib/subdir_push_test.mbt | 0 {src => modules/bit/src}/lib/subdir_test.mbt | 0 {src => modules/bit/src}/lib/tree_mode.mbt | 0 {src => modules/bit/src}/lib/tree_ops.mbt | 0 {src => modules/bit/src}/lib/tree_path.mbt | 0 {src => modules/bit/src}/lib/upload_pack.mbt | 0 .../bit/src}/lib/upload_pack_test.mbt | 0 {src => modules/bit/src}/lib/worktree.mbt | 0 .../bit/src}/lib/worktree_admin.mbt | 0 .../bit/src}/lib/worktree_admin_test.mbt | 0 .../bit/src}/lib/worktree_test.mbt | 0 {src => modules/bit/src}/moon.pkg | 0 .../bit/src}/object/bench_test.mbt | 0 .../bit/src}/object/hash_algorithm.mbt | 0 {src => modules/bit/src}/object/hasher.mbt | 0 {src => modules/bit/src}/object/moon.pkg | 0 {src => modules/bit/src}/object/object.mbt | 0 .../bit/src}/object/object_test.mbt | 0 .../bit/src}/object/pkg.generated.mbti | 0 {src => modules/bit/src}/object/sha1.mbt | 0 {src => modules/bit/src}/object/sha1_test.mbt | 0 {src => modules/bit/src}/object/sha256.mbt | 0 .../bit/src}/object/sha256_test.mbt | 0 {src => modules/bit/src}/object/types.mbt | 0 {src => modules/bit/src}/osfs/moon.pkg | 0 {src => modules/bit/src}/osfs/osfs.mbt | 0 .../bit/src}/osfs/pkg.generated.mbti | 0 .../bit/src}/pack/bench_profile_test.mbt | 0 {src => modules/bit/src}/pack/bench_test.mbt | 0 .../bit/src}/pack/bit_oracle_pack_test.mbt | 0 .../bit/src}/pack/gen_packfile.mbt | 0 {src => modules/bit/src}/pack/moon.pkg | 0 .../bit/src}/pack/pack_index_write.mbt | 0 .../bit/src}/pack/pack_index_write_test.mbt | 0 {src => modules/bit/src}/pack/packfile.mbt | 0 .../bit/src}/pack/packfile_fixture_test.mbt | 0 .../bit/src}/pack/packfile_parse.mbt | 0 .../bit/src}/pack/packfile_parse_test.mbt | 0 .../bit/src}/pack/packfile_test.mbt | 0 .../bit/src}/pack/packfile_wbtest.mbt | 0 .../bit/src}/pack/pkg.generated.mbti | 0 {src => modules/bit/src}/pack_ops/moon.pkg | 0 {src => modules/bit/src}/pack_ops/pack.mbt | 0 .../bit/src}/pack_ops/pack_test.mbt | 0 .../bit/src}/pack_ops/pkg.generated.mbti | 0 {src => modules/bit/src}/pkg.generated.mbti | 0 .../bit/src}/protocol/bench_test.mbt | 0 {src => modules/bit/src}/protocol/moon.pkg | 0 .../bit/src}/protocol/pkg.generated.mbti | 0 {src => modules/bit/src}/protocol/pktline.mbt | 0 .../bit/src}/protocol/pktline_test.mbt | 0 .../bit/src}/protocol/remote_common.mbt | 0 .../bit/src}/protocol/remote_test.mbt | 0 .../bit/src}/protocol/transport.mbt | 0 .../bit/src}/protocol/upload_pack_common.mbt | 0 .../src}/protocol/upload_pack_http_common.mbt | 0 .../src}/protocol/upload_pack_http_wbtest.mbt | 0 .../src}/protocol/upload_pack_remote_wasm.mbt | 0 .../upload_pack_remote_wasm_wbtest.mbt | 0 {src => modules/bit/src}/refs/bench_test.mbt | 0 {src => modules/bit/src}/refs/moon.pkg | 0 .../bit/src}/refs/pkg.generated.mbti | 0 {src => modules/bit/src}/refs/refs_store.mbt | 0 .../bit/src}/refs/refs_store_test.mbt | 0 {src => modules/bit/src}/reftable/moon.pkg | 0 .../bit/src}/reftable/pkg.generated.mbti | 0 .../bit/src}/reftable/reftable.mbt | 0 .../bit/src}/reftable/reftable_wbtest.mbt | 0 {src => modules/bit/src}/reftable/stack.mbt | 0 {src => modules/bit/src}/reftable/writer.mbt | 0 {src => modules/bit/src}/remote/moon.pkg | 0 .../bit/src}/remote/pkg.generated.mbti | 0 .../bit/src}/remote/remote_path.mbt | 0 .../bit/src}/remote/remote_path_test.mbt | 0 .../bit/src}/remote/remote_shorthand.mbt | 0 .../bit/src}/remote/remote_shorthand_test.mbt | 0 {src => modules/bit/src}/repo/core.mbt | 0 {src => modules/bit/src}/repo/materialize.mbt | 0 .../bit/src}/repo/materialize_wbtest.mbt | 0 {src => modules/bit/src}/repo/moon.pkg | 0 .../bit/src}/repo/pkg.generated.mbti | 0 {src => modules/bit/src}/repo_ops/moon.pkg | 0 .../bit/src}/repo_ops/pkg.generated.mbti | 0 .../bit/src}/repo_ops/repo_ops.mbt | 0 .../bit/src}/repo_ops/revparse_ops.mbt | 0 {src => modules/bit/src}/runtime/moon.pkg | 0 .../bit/src}/runtime/pkg.generated.mbti | 0 .../bit/src}/runtime/storage_runtime.mbt | 0 .../src}/runtime/storage_runtime_wbtest.mbt | 0 .../bit/src}/string_utils/moon.pkg | 0 .../bit/src}/string_utils/pkg.generated.mbti | 0 .../bit/src}/string_utils/string_utils.mbt | 0 .../src}/string_utils/string_utils_test.mbt | 0 {src => modules/bit/src}/tar/moon.pkg | 0 .../bit/src}/tar/pkg.generated.mbti | 0 {src => modules/bit/src}/tar/tar.mbt | 0 {src => modules/bit/src}/tar/tar_test.mbt | 0 .../bit/src}/tests/git_compat_test.mbt | 0 .../bit/src}/tests/integration_test.mbt | 0 {src => modules/bit/src}/tests/moon.pkg | 0 .../bit/src}/tests/pkg.generated.mbti | 0 .../bit/src}/tests/scripts/test_with_git.sh | 0 .../bit/src}/tests/scripts/verify_packfile.sh | 0 .../src}/tests/upload_pack_fixture_test.mbt | 0 {src => modules/bit/src}/top.mbt | 0 {src => modules/bit/src}/trailers/moon.pkg | 0 .../bit/src}/trailers/pkg.generated.mbti | 0 .../bit/src}/trailers/trailers.mbt | 0 .../bit/src}/trailers/trailers_test.mbt | 0 {src => modules/bit/src}/types/contracts.mbt | 0 {src => modules/bit/src}/types/git_types.mbt | 0 {src => modules/bit/src}/types/moon.pkg | 0 .../bit/src}/types/pkg.generated.mbti | 0 .../bit/src}/vfs/bench_real_test.mbt | 0 {src => modules/bit/src}/vfs/bench_test.mbt | 0 {src => modules/bit/src}/vfs/cache.mbt | 0 {src => modules/bit/src}/vfs/fs.mbt | 0 {src => modules/bit/src}/vfs/fs_test.mbt | 0 {src => modules/bit/src}/vfs/fs_wbtest.mbt | 0 .../bit/src}/vfs/integration_test.mbt | 0 {src => modules/bit/src}/vfs/layer.mbt | 0 {src => modules/bit/src}/vfs/lru.mbt | 0 {src => modules/bit/src}/vfs/lru_test.mbt | 0 {src => modules/bit/src}/vfs/moon.pkg | 0 .../bit/src}/vfs/partial_clone_test.mbt | 0 {src => modules/bit/src}/vfs/path.mbt | 0 .../bit/src}/vfs/perf_partial_clone_test.mbt | 0 .../bit/src}/vfs/pkg.generated.mbti | 0 {src => modules/bit/src}/vfs/read_ops.mbt | 0 {src => modules/bit/src}/vfs/snapshot.mbt | 0 {src => modules/bit/src}/vfs/tree_builder.mbt | 0 {src => modules/bit/src}/vfs/types.mbt | 0 .../bit/src}/vfs/verify_lazy_test.mbt | 0 {src => modules/bit/src}/vfs/write_ops.mbt | 0 {src => modules/bit/src}/worktree/moon.pkg | 0 .../bit/src}/worktree/pkg.generated.mbti | 0 .../bit/src}/worktree/worktree.mbt | 0 .../bit/src}/worktree/worktree_test.mbt | 0 moon.work | 2 +- package.nix | 2 +- tools/check-layer-guards.sh | 10 +- tools/check-layers.mjs | 3 +- tools/flaker-affected-rules.mjs | 212 +++++++++--------- tools/flaker-affected-rules.test.mjs | 8 +- tools/flaker-affected-rules.toml | 26 +-- tools/install-bit.sh | 2 +- tools/playground-dev.sh | 2 +- 628 files changed, 213 insertions(+), 205 deletions(-) rename README.mbt.md => modules/bit/README.mbt.md (100%) rename moon.mod.json => modules/bit/moon.mod.json (73%) rename {src => modules/bit/src}/TODO.md (100%) rename {src => modules/bit/src}/apply/apply.mbt (100%) rename {src => modules/bit/src}/apply/apply_test.mbt (100%) rename {src => modules/bit/src}/apply/moon.pkg (100%) rename {src => modules/bit/src}/apply/pkg.generated.mbti (100%) rename {src => modules/bit/src}/bootstrap/bootstrap.mbt (100%) rename {src => modules/bit/src}/bootstrap/moon.pkg (100%) rename {src => modules/bit/src}/bootstrap/pkg.generated.mbti (100%) rename {src => modules/bit/src}/bootstrap/stdio_guard_stub.c (100%) rename {src => modules/bit/src}/cmd/bit/add.mbt (100%) rename {src => modules/bit/src}/cmd/bit/add_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/ai.mbt (100%) rename {src => modules/bit/src}/cmd/bit/am.mbt (100%) rename {src => modules/bit/src}/cmd/bit/apply.mbt (100%) rename {src => modules/bit/src}/cmd/bit/archive.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_apply_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_cat_file_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_e2e_clone_fetch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_fsck_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_grep_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_init_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_log_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_midx_clone_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_repack_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_stash_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_status_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bench_suppress_stub.c (100%) rename {src => modules/bit/src}/cmd/bit/bench_suppress_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bisect.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bisect_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/blame.mbt (100%) rename {src => modules/bit/src}/cmd/bit/blame_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/branch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/branch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/bundle.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cat.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cat_file.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cat_file_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/check_attr.mbt (100%) rename {src => modules/bit/src}/cmd/bit/check_ignore.mbt (100%) rename {src => modules/bit/src}/cmd/bit/check_ignore_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/check_mailmap.mbt (100%) rename {src => modules/bit/src}/cmd/bit/check_ref_format.mbt (100%) rename {src => modules/bit/src}/cmd/bit/checkout.mbt (100%) rename {src => modules/bit/src}/cmd/bit/checkout_index.mbt (100%) rename {src => modules/bit/src}/cmd/bit/checkout_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cherry.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cherry_pick.mbt (100%) rename {src => modules/bit/src}/cmd/bit/cherry_pick_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/clean.mbt (100%) rename {src => modules/bit/src}/cmd/bit/clone.mbt (100%) rename {src => modules/bit/src}/cmd/bit/clone_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/column.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit_graph.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit_graph_write.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit_graph_write_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/commit_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/completion.mbt (100%) rename {src => modules/bit/src}/cmd/bit/config.mbt (100%) rename {src => modules/bit/src}/cmd/bit/count_objects.mbt (100%) rename {src => modules/bit/src}/cmd/bit/credential.mbt (100%) rename {src => modules/bit/src}/cmd/bit/debug.mbt (100%) rename {src => modules/bit/src}/cmd/bit/delegation_cleanup_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/describe.mbt (100%) rename {src => modules/bit/src}/cmd/bit/diff.mbt (100%) rename {src => modules/bit/src}/cmd/bit/diff_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/diff_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/difftool.mbt (100%) rename {src => modules/bit/src}/cmd/bit/doc.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fallback.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fallback_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fast_export.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fast_import.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fetch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fetch_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fetch_serve_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fetch_serve_native.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fetch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/filter_branch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fmt_merge_msg.mbt (100%) rename {src => modules/bit/src}/cmd/bit/for_each_ref.mbt (100%) rename {src => modules/bit/src}/cmd/bit/for_each_repo.mbt (100%) rename {src => modules/bit/src}/cmd/bit/format_patch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/format_patch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/fsck.mbt (100%) rename {src => modules/bit/src}/cmd/bit/gc.mbt (100%) rename {src => modules/bit/src}/cmd/bit/get_tar_commit_id.mbt (100%) rename {src => modules/bit/src}/cmd/bit/gitconfig.mbt (100%) rename {src => modules/bit/src}/cmd/bit/gitconfig_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/grep.mbt (100%) rename {src => modules/bit/src}/cmd/bit/grep_filter.mbt (100%) rename {src => modules/bit/src}/cmd/bit/grep_filter_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/grep_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_core_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_hub_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_interactive_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_misc_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_remote_pull_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_remote_push_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_scalar_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_shell_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/handlers_subdir_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hash_object.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hash_object_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/helpers.mbt (100%) rename {src => modules/bit/src}/cmd/bit/helpers_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/helpers_shared.mbt (100%) rename {src => modules/bit/src}/cmd/bit/helpers_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hook_runner.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hooks.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hooks_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hq.mbt (100%) rename {src => modules/bit/src}/cmd/bit/http_fetch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/http_serve_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/http_serve_native.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_active.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_active_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_compat.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_debug.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_github_sync.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_helpers.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_import.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_issue.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_note.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_pr.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_remote.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_remote_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_search.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_stores.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_sync.mbt (100%) rename {src => modules/bit/src}/cmd/bit/hub_tty_stub.c (100%) rename {src => modules/bit/src}/cmd/bit/index_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/init.mbt (100%) rename {src => modules/bit/src}/cmd/bit/init_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/interactive.mbt (100%) rename {src => modules/bit/src}/cmd/bit/interpret_trailers.mbt (100%) rename {src => modules/bit/src}/cmd/bit/log.mbt (100%) rename {src => modules/bit/src}/cmd/bit/log_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/ls_files.mbt (100%) rename {src => modules/bit/src}/cmd/bit/ls_files_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/ls_remote.mbt (100%) rename {src => modules/bit/src}/cmd/bit/ls_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/mailinfo.mbt (100%) rename {src => modules/bit/src}/cmd/bit/mailsplit.mbt (100%) rename {src => modules/bit/src}/cmd/bit/main.mbt (100%) rename {src => modules/bit/src}/cmd/bit/main_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/main_wasm.mbt (100%) rename {src => modules/bit/src}/cmd/bit/main_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/maintenance.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_base.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_file.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_index.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_one_file.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/merge_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/mktag_cmd.mbt (100%) rename {src => modules/bit/src}/cmd/bit/mktree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/moon.pkg (100%) rename {src => modules/bit/src}/cmd/bit/multi_pack_index.mbt (100%) rename {src => modules/bit/src}/cmd/bit/multi_pack_index_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/mv.mbt (100%) rename {src => modules/bit/src}/cmd/bit/name_rev.mbt (100%) rename {src => modules/bit/src}/cmd/bit/notes.mbt (100%) rename {src => modules/bit/src}/cmd/bit/osfs.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_bitmap_read.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_bitmap_write.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_bitmap_write_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_helpers.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_helpers_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_objects.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_objects_cruft.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_redundant.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pack_refs.mbt (100%) rename {src => modules/bit/src}/cmd/bit/patch_id.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pkg.generated.mbti (100%) rename {src => modules/bit/src}/cmd/bit/prune.mbt (100%) rename {src => modules/bit/src}/cmd/bit/prune_packed.mbt (100%) rename {src => modules/bit/src}/cmd/bit/pull.mbt (100%) rename {src => modules/bit/src}/cmd/bit/push.mbt (100%) rename {src => modules/bit/src}/cmd/bit/quiltimport.mbt (100%) rename {src => modules/bit/src}/cmd/bit/range_diff.mbt (100%) rename {src => modules/bit/src}/cmd/bit/read_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rebase.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rebase_ai.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rebase_ai_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rebase_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/receive_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/reflog.mbt (100%) rename {src => modules/bit/src}/cmd/bit/reflog_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/relay.mbt (100%) rename {src => modules/bit/src}/cmd/bit/relay_ci_review.mbt (100%) rename {src => modules/bit/src}/cmd/bit/relay_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/relay_watch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/relay_watch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/remote.mbt (100%) rename {src => modules/bit/src}/cmd/bit/remote_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/repack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/replace.mbt (100%) rename {src => modules/bit/src}/cmd/bit/request_pull.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rerere.mbt (100%) rename {src => modules/bit/src}/cmd/bit/reset.mbt (100%) rename {src => modules/bit/src}/cmd/bit/reset_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/restore.mbt (100%) rename {src => modules/bit/src}/cmd/bit/restore_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rev_list.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rev_list_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rev_parse.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rev_parse_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/revert.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rm.mbt (100%) rename {src => modules/bit/src}/cmd/bit/rm_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/scalar.mbt (100%) rename {src => modules/bit/src}/cmd/bit/send_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/serve.mbt (100%) rename {src => modules/bit/src}/cmd/bit/shell.mbt (100%) rename {src => modules/bit/src}/cmd/bit/shortlog.mbt (100%) rename {src => modules/bit/src}/cmd/bit/shortlog_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/show.mbt (100%) rename {src => modules/bit/src}/cmd/bit/show_branches.mbt (100%) rename {src => modules/bit/src}/cmd/bit/show_index.mbt (100%) rename {src => modules/bit/src}/cmd/bit/show_ref.mbt (100%) rename {src => modules/bit/src}/cmd/bit/show_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/signing_helpers.mbt (100%) rename {src => modules/bit/src}/cmd/bit/sigpipe_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/sigpipe_native.mbt (100%) rename {src => modules/bit/src}/cmd/bit/sigpipe_stub.c (100%) rename {src => modules/bit/src}/cmd/bit/sparse_checkout.mbt (100%) rename {src => modules/bit/src}/cmd/bit/sparse_checkout_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/stash.mbt (100%) rename {src => modules/bit/src}/cmd/bit/status.mbt (100%) rename {src => modules/bit/src}/cmd/bit/status_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/storage_runtime.mbt (100%) rename {src => modules/bit/src}/cmd/bit/storage_runtime_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/stripspace.mbt (100%) rename {src => modules/bit/src}/cmd/bit/subdir_clone.mbt (100%) rename {src => modules/bit/src}/cmd/bit/subdir_ops.mbt (100%) rename {src => modules/bit/src}/cmd/bit/subdir_shorthand_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/submodule.mbt (100%) rename {src => modules/bit/src}/cmd/bit/submodule_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/switch.mbt (100%) rename {src => modules/bit/src}/cmd/bit/switch_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/symbolic_ref.mbt (100%) rename {src => modules/bit/src}/cmd/bit/tag.mbt (100%) rename {src => modules/bit/src}/cmd/bit/tag_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/time_js.mbt (100%) rename {src => modules/bit/src}/cmd/bit/time_native.mbt (100%) rename {src => modules/bit/src}/cmd/bit/time_stub.c (100%) rename {src => modules/bit/src}/cmd/bit/time_wasm.mbt (100%) rename {src => modules/bit/src}/cmd/bit/time_web_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/unpack_file.mbt (100%) rename {src => modules/bit/src}/cmd/bit/unpack_objects.mbt (100%) rename {src => modules/bit/src}/cmd/bit/update_index.mbt (100%) rename {src => modules/bit/src}/cmd/bit/update_index_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/update_ref.mbt (100%) rename {src => modules/bit/src}/cmd/bit/update_ref_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/update_server_info.mbt (100%) rename {src => modules/bit/src}/cmd/bit/upload_archive.mbt (100%) rename {src => modules/bit/src}/cmd/bit/upload_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/var.mbt (100%) rename {src => modules/bit/src}/cmd/bit/verify_commit.mbt (100%) rename {src => modules/bit/src}/cmd/bit/verify_pack.mbt (100%) rename {src => modules/bit/src}/cmd/bit/verify_tag.mbt (100%) rename {src => modules/bit/src}/cmd/bit/verify_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/wbtest_env_lock_shared.mbt (100%) rename {src => modules/bit/src}/cmd/bit/web_browse.mbt (100%) rename {src => modules/bit/src}/cmd/bit/workspace.mbt (100%) rename {src => modules/bit/src}/cmd/bit/worktree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/worktree_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/bit/write_tree.mbt (100%) rename {src => modules/bit/src}/cmd/bit/write_tree_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/git_helpers.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/helpers_shared.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_active.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_debug.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_github_sync.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_helpers.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_import.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_issue.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_libgit2_native.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_libgit2_stub.c (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_note.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_pr.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_remote.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_search.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_stores.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/hub_stores_wbtest.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/main.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/main_js.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/main_wasm.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/moon.pkg (100%) rename {src => modules/bit/src}/cmd/git-bit/osfs.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/pkg.generated.mbti (100%) rename {src => modules/bit/src}/cmd/git-bit/time_native.mbt (100%) rename {src => modules/bit/src}/cmd/git-bit/time_stub.c (100%) rename {src => modules/bit/src}/config_parse/bench_test.mbt (100%) rename {src => modules/bit/src}/config_parse/config_parse.mbt (100%) rename {src => modules/bit/src}/config_parse/config_parse_test.mbt (100%) rename {src => modules/bit/src}/config_parse/moon.pkg (100%) rename {src => modules/bit/src}/config_parse/pkg.generated.mbti (100%) rename {src => modules/bit/src}/date_parse/date_parse.mbt (100%) rename {src => modules/bit/src}/date_parse/date_parse_test.mbt (100%) rename {src => modules/bit/src}/date_parse/moon.pkg (100%) rename {src => modules/bit/src}/date_parse/pkg.generated.mbti (100%) rename {src => modules/bit/src}/diff/bench_test.mbt (100%) rename {src => modules/bit/src}/diff/diff_ops.mbt (100%) rename {src => modules/bit/src}/diff/moon.pkg (100%) rename {src => modules/bit/src}/diff/pkg.generated.mbti (100%) rename {src => modules/bit/src}/diff3/diff3.mbt (100%) rename {src => modules/bit/src}/diff3/diff3_wbtest.mbt (100%) rename {src => modules/bit/src}/diff3/moon.pkg (100%) rename {src => modules/bit/src}/diff3/pkg.generated.mbti (100%) rename {src => modules/bit/src}/diff_core/bench_test.mbt (100%) rename {src => modules/bit/src}/diff_core/diff_core.mbt (100%) rename {src => modules/bit/src}/diff_core/diff_core_test.mbt (100%) rename {src => modules/bit/src}/diff_core/moon.pkg (100%) rename {src => modules/bit/src}/diff_core/pkg.generated.mbti (100%) rename {src => modules/bit/src}/fast_import/fast_import_parse.mbt (100%) rename {src => modules/bit/src}/fast_import/fast_import_parse_test.mbt (100%) rename {src => modules/bit/src}/fast_import/moon.pkg (100%) rename {src => modules/bit/src}/fast_import/pkg.generated.mbti (100%) rename {src => modules/bit/src}/fingerprint/fingerprint.mbt (100%) rename {src => modules/bit/src}/fingerprint/fingerprint_wbtest.mbt (100%) rename {src => modules/bit/src}/fingerprint/moon.pkg (100%) rename {src => modules/bit/src}/fingerprint/pkg.generated.mbti (100%) rename {src => modules/bit/src}/fuzz_tests/core_fuzz_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/ignore_fuzz_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/lcg_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/moon.pkg (100%) rename {src => modules/bit/src}/fuzz_tests/pack_corpus_fuzz_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/parsers_fuzz_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/pkg.generated.mbti (100%) rename {src => modules/bit/src}/fuzz_tests/repo_objects_fuzz_test.mbt (100%) rename {src => modules/bit/src}/fuzz_tests/security_test.mbt (100%) rename {src => modules/bit/src}/grep/moon.pkg (100%) rename {src => modules/bit/src}/grep/pattern.mbt (100%) rename {src => modules/bit/src}/grep/pattern_wbtest.mbt (100%) rename {src => modules/bit/src}/grep/pkg.generated.mbti (100%) rename {src => modules/bit/src}/grep/search.mbt (100%) rename {src => modules/bit/src}/grep/search_wbtest.mbt (100%) rename {src => modules/bit/src}/hash/bench_test.mbt (100%) rename {src => modules/bit/src}/hash/hex.mbt (100%) rename {src => modules/bit/src}/hash/hex_test.mbt (100%) rename {src => modules/bit/src}/hash/moon.pkg (100%) rename {src => modules/bit/src}/hash/pkg.generated.mbti (100%) rename {src => modules/bit/src}/hash/sha1.mbt (100%) rename {src => modules/bit/src}/hash/sha1_test.mbt (100%) rename {src => modules/bit/src}/hash/sha256.mbt (100%) rename {src => modules/bit/src}/hash/sha256_test.mbt (100%) rename {src => modules/bit/src}/ignore/bench_test.mbt (100%) rename {src => modules/bit/src}/ignore/ignore.mbt (100%) rename {src => modules/bit/src}/ignore/ignore_test.mbt (100%) rename {src => modules/bit/src}/ignore/moon.pkg (100%) rename {src => modules/bit/src}/ignore/pkg.generated.mbti (100%) rename {src => modules/bit/src}/io/env_provider.mbt (100%) rename {src => modules/bit/src}/io/fs.mbt (100%) rename {src => modules/bit/src}/io/http_client.mbt (100%) rename {src => modules/bit/src}/io/moon.pkg (100%) rename {src => modules/bit/src}/io/native/env_native.mbt (100%) rename {src => modules/bit/src}/io/native/http_client_native.mbt (100%) rename {src => modules/bit/src}/io/native/init_native.mbt (100%) rename {src => modules/bit/src}/io/native/lstat_stub.c (100%) rename {src => modules/bit/src}/io/native/moon.pkg (100%) rename {src => modules/bit/src}/io/native/pkg.generated.mbti (100%) rename {src => modules/bit/src}/io/native/readdir_stub.c (100%) rename {src => modules/bit/src}/io/native/remote.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_http.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_http_common.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_http_common_wbtest.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_process.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_process_wbtest.mbt (100%) rename {src => modules/bit/src}/io/native/upload_pack_remote_native.mbt (100%) rename {src => modules/bit/src}/io/native/worktree_probe_native.mbt (100%) rename {src => modules/bit/src}/io/pkg.generated.mbti (100%) rename {src => modules/bit/src}/io/test_fs.mbt (100%) rename {src => modules/bit/src}/io/worktree_probe.mbt (100%) rename {src => modules/bit/src}/lib/bench_config_test.mbt (100%) rename {src => modules/bit/src}/lib/bench_index_diff_test.mbt (100%) rename {src => modules/bit/src}/lib/bench_ops_test.mbt (100%) rename {src => modules/bit/src}/lib/bench_status_test.mbt (100%) rename {src => modules/bit/src}/lib/bench_working_files_test.mbt (100%) rename {src => modules/bit/src}/lib/bisect.mbt (100%) rename {src => modules/bit/src}/lib/branch.mbt (100%) rename {src => modules/bit/src}/lib/branch_test.mbt (100%) rename {src => modules/bit/src}/lib/checkout.mbt (100%) rename {src => modules/bit/src}/lib/checkout_test.mbt (100%) rename {src => modules/bit/src}/lib/checkout_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/cherry_pick.mbt (100%) rename {src => modules/bit/src}/lib/commit_graph_reader.mbt (100%) rename {src => modules/bit/src}/lib/commit_graph_reader_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/commit_helpers.mbt (100%) rename {src => modules/bit/src}/lib/compat_object.mbt (100%) rename {src => modules/bit/src}/lib/core_interfaces.mbt (100%) rename {src => modules/bit/src}/lib/diff.mbt (100%) rename {src => modules/bit/src}/lib/diff_tree_helpers.mbt (100%) rename {src => modules/bit/src}/lib/fs_tree.mbt (100%) rename {src => modules/bit/src}/lib/fs_tree_test.mbt (100%) rename {src => modules/bit/src}/lib/fsck.mbt (100%) rename {src => modules/bit/src}/lib/fsck_test.mbt (100%) rename {src => modules/bit/src}/lib/gc.mbt (100%) rename {src => modules/bit/src}/lib/gc_test.mbt (100%) rename {src => modules/bit/src}/lib/gitattributes.mbt (100%) rename {src => modules/bit/src}/lib/ignore_worktree.mbt (100%) rename {src => modules/bit/src}/lib/ignore_worktree_async.mbt (100%) rename {src => modules/bit/src}/lib/ignore_worktree_test.mbt (100%) rename {src => modules/bit/src}/lib/index.mbt (100%) rename {src => modules/bit/src}/lib/index_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/init.mbt (100%) rename {src => modules/bit/src}/lib/init_test.mbt (100%) rename {src => modules/bit/src}/lib/js_api_exports.mbt (100%) rename {src => modules/bit/src}/lib/js_export_types.mbt (100%) rename {src => modules/bit/src}/lib/js_exports_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/js_host_bridge.mbt (100%) rename {src => modules/bit/src}/lib/js_transport_bridge.mbt (100%) rename {src => modules/bit/src}/lib/lfs.mbt (100%) rename {src => modules/bit/src}/lib/lfs_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/log.mbt (100%) rename {src => modules/bit/src}/lib/merge.mbt (100%) rename {src => modules/bit/src}/lib/merge_base.mbt (100%) rename {src => modules/bit/src}/lib/merge_base_test.mbt (100%) rename {src => modules/bit/src}/lib/merge_test.mbt (100%) rename {src => modules/bit/src}/lib/moon.pkg (100%) rename {src => modules/bit/src}/lib/native/bench_worktree_entry_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/native/filter.mbt (100%) rename {src => modules/bit/src}/lib/native/ignore_async_test.mbt (100%) rename {src => modules/bit/src}/lib/native/lfs_client.mbt (100%) rename {src => modules/bit/src}/lib/native/lfs_client_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/native/lfs_prefetch.mbt (100%) rename {src => modules/bit/src}/lib/native/moon.pkg (100%) rename {src => modules/bit/src}/lib/native/pkg.generated.mbti (100%) rename {src => modules/bit/src}/lib/native/promisor.mbt (100%) rename {src => modules/bit/src}/lib/native/remote_ref.mbt (100%) rename {src => modules/bit/src}/lib/native/sync_http.mbt (100%) rename {src => modules/bit/src}/lib/native/worktree_modes.mbt (100%) rename {src => modules/bit/src}/lib/object_db.mbt (100%) rename {src => modules/bit/src}/lib/pack_collect.mbt (100%) rename {src => modules/bit/src}/lib/pack_collect_test.mbt (100%) rename {src => modules/bit/src}/lib/path.mbt (100%) rename {src => modules/bit/src}/lib/pkg.generated.mbti (100%) rename {src => modules/bit/src}/lib/profile.mbt (100%) rename {src => modules/bit/src}/lib/promisor.mbt (100%) rename {src => modules/bit/src}/lib/prune_test.mbt (100%) rename {src => modules/bit/src}/lib/pure_runtime_test.mbt (100%) rename {src => modules/bit/src}/lib/rebase.mbt (100%) rename {src => modules/bit/src}/lib/rebase_interactive.mbt (100%) rename {src => modules/bit/src}/lib/rebase_interactive_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/rebase_test.mbt (100%) rename {src => modules/bit/src}/lib/receive_pack.mbt (100%) rename {src => modules/bit/src}/lib/receive_pack_test.mbt (100%) rename {src => modules/bit/src}/lib/reflog.mbt (100%) rename {src => modules/bit/src}/lib/refs_store.mbt (100%) rename {src => modules/bit/src}/lib/remote_config.mbt (100%) rename {src => modules/bit/src}/lib/remote_helpers.mbt (100%) rename {src => modules/bit/src}/lib/remote_path.mbt (100%) rename {src => modules/bit/src}/lib/remote_path_test.mbt (100%) rename {src => modules/bit/src}/lib/remote_shorthand.mbt (100%) rename {src => modules/bit/src}/lib/rename_detect.mbt (100%) rename {src => modules/bit/src}/lib/reset.mbt (100%) rename {src => modules/bit/src}/lib/reset_test.mbt (100%) rename {src => modules/bit/src}/lib/rev_list_helpers.mbt (100%) rename {src => modules/bit/src}/lib/revparse.mbt (100%) rename {src => modules/bit/src}/lib/revparse_test.mbt (100%) rename {src => modules/bit/src}/lib/shallow_sparse_test.mbt (100%) rename {src => modules/bit/src}/lib/smart_http.mbt (100%) rename {src => modules/bit/src}/lib/smart_http_test.mbt (100%) rename {src => modules/bit/src}/lib/sparse.mbt (100%) rename {src => modules/bit/src}/lib/sparse_wbtest.mbt (100%) rename {src => modules/bit/src}/lib/stash.mbt (100%) rename {src => modules/bit/src}/lib/stash_test.mbt (100%) rename {src => modules/bit/src}/lib/status_text.mbt (100%) rename {src => modules/bit/src}/lib/status_walk.mbt (100%) rename {src => modules/bit/src}/lib/subdir.mbt (100%) rename {src => modules/bit/src}/lib/subdir_push_test.mbt (100%) rename {src => modules/bit/src}/lib/subdir_test.mbt (100%) rename {src => modules/bit/src}/lib/tree_mode.mbt (100%) rename {src => modules/bit/src}/lib/tree_ops.mbt (100%) rename {src => modules/bit/src}/lib/tree_path.mbt (100%) rename {src => modules/bit/src}/lib/upload_pack.mbt (100%) rename {src => modules/bit/src}/lib/upload_pack_test.mbt (100%) rename {src => modules/bit/src}/lib/worktree.mbt (100%) rename {src => modules/bit/src}/lib/worktree_admin.mbt (100%) rename {src => modules/bit/src}/lib/worktree_admin_test.mbt (100%) rename {src => modules/bit/src}/lib/worktree_test.mbt (100%) rename {src => modules/bit/src}/moon.pkg (100%) rename {src => modules/bit/src}/object/bench_test.mbt (100%) rename {src => modules/bit/src}/object/hash_algorithm.mbt (100%) rename {src => modules/bit/src}/object/hasher.mbt (100%) rename {src => modules/bit/src}/object/moon.pkg (100%) rename {src => modules/bit/src}/object/object.mbt (100%) rename {src => modules/bit/src}/object/object_test.mbt (100%) rename {src => modules/bit/src}/object/pkg.generated.mbti (100%) rename {src => modules/bit/src}/object/sha1.mbt (100%) rename {src => modules/bit/src}/object/sha1_test.mbt (100%) rename {src => modules/bit/src}/object/sha256.mbt (100%) rename {src => modules/bit/src}/object/sha256_test.mbt (100%) rename {src => modules/bit/src}/object/types.mbt (100%) rename {src => modules/bit/src}/osfs/moon.pkg (100%) rename {src => modules/bit/src}/osfs/osfs.mbt (100%) rename {src => modules/bit/src}/osfs/pkg.generated.mbti (100%) rename {src => modules/bit/src}/pack/bench_profile_test.mbt (100%) rename {src => modules/bit/src}/pack/bench_test.mbt (100%) rename {src => modules/bit/src}/pack/bit_oracle_pack_test.mbt (100%) rename {src => modules/bit/src}/pack/gen_packfile.mbt (100%) rename {src => modules/bit/src}/pack/moon.pkg (100%) rename {src => modules/bit/src}/pack/pack_index_write.mbt (100%) rename {src => modules/bit/src}/pack/pack_index_write_test.mbt (100%) rename {src => modules/bit/src}/pack/packfile.mbt (100%) rename {src => modules/bit/src}/pack/packfile_fixture_test.mbt (100%) rename {src => modules/bit/src}/pack/packfile_parse.mbt (100%) rename {src => modules/bit/src}/pack/packfile_parse_test.mbt (100%) rename {src => modules/bit/src}/pack/packfile_test.mbt (100%) rename {src => modules/bit/src}/pack/packfile_wbtest.mbt (100%) rename {src => modules/bit/src}/pack/pkg.generated.mbti (100%) rename {src => modules/bit/src}/pack_ops/moon.pkg (100%) rename {src => modules/bit/src}/pack_ops/pack.mbt (100%) rename {src => modules/bit/src}/pack_ops/pack_test.mbt (100%) rename {src => modules/bit/src}/pack_ops/pkg.generated.mbti (100%) rename {src => modules/bit/src}/pkg.generated.mbti (100%) rename {src => modules/bit/src}/protocol/bench_test.mbt (100%) rename {src => modules/bit/src}/protocol/moon.pkg (100%) rename {src => modules/bit/src}/protocol/pkg.generated.mbti (100%) rename {src => modules/bit/src}/protocol/pktline.mbt (100%) rename {src => modules/bit/src}/protocol/pktline_test.mbt (100%) rename {src => modules/bit/src}/protocol/remote_common.mbt (100%) rename {src => modules/bit/src}/protocol/remote_test.mbt (100%) rename {src => modules/bit/src}/protocol/transport.mbt (100%) rename {src => modules/bit/src}/protocol/upload_pack_common.mbt (100%) rename {src => modules/bit/src}/protocol/upload_pack_http_common.mbt (100%) rename {src => modules/bit/src}/protocol/upload_pack_http_wbtest.mbt (100%) rename {src => modules/bit/src}/protocol/upload_pack_remote_wasm.mbt (100%) rename {src => modules/bit/src}/protocol/upload_pack_remote_wasm_wbtest.mbt (100%) rename {src => modules/bit/src}/refs/bench_test.mbt (100%) rename {src => modules/bit/src}/refs/moon.pkg (100%) rename {src => modules/bit/src}/refs/pkg.generated.mbti (100%) rename {src => modules/bit/src}/refs/refs_store.mbt (100%) rename {src => modules/bit/src}/refs/refs_store_test.mbt (100%) rename {src => modules/bit/src}/reftable/moon.pkg (100%) rename {src => modules/bit/src}/reftable/pkg.generated.mbti (100%) rename {src => modules/bit/src}/reftable/reftable.mbt (100%) rename {src => modules/bit/src}/reftable/reftable_wbtest.mbt (100%) rename {src => modules/bit/src}/reftable/stack.mbt (100%) rename {src => modules/bit/src}/reftable/writer.mbt (100%) rename {src => modules/bit/src}/remote/moon.pkg (100%) rename {src => modules/bit/src}/remote/pkg.generated.mbti (100%) rename {src => modules/bit/src}/remote/remote_path.mbt (100%) rename {src => modules/bit/src}/remote/remote_path_test.mbt (100%) rename {src => modules/bit/src}/remote/remote_shorthand.mbt (100%) rename {src => modules/bit/src}/remote/remote_shorthand_test.mbt (100%) rename {src => modules/bit/src}/repo/core.mbt (100%) rename {src => modules/bit/src}/repo/materialize.mbt (100%) rename {src => modules/bit/src}/repo/materialize_wbtest.mbt (100%) rename {src => modules/bit/src}/repo/moon.pkg (100%) rename {src => modules/bit/src}/repo/pkg.generated.mbti (100%) rename {src => modules/bit/src}/repo_ops/moon.pkg (100%) rename {src => modules/bit/src}/repo_ops/pkg.generated.mbti (100%) rename {src => modules/bit/src}/repo_ops/repo_ops.mbt (100%) rename {src => modules/bit/src}/repo_ops/revparse_ops.mbt (100%) rename {src => modules/bit/src}/runtime/moon.pkg (100%) rename {src => modules/bit/src}/runtime/pkg.generated.mbti (100%) rename {src => modules/bit/src}/runtime/storage_runtime.mbt (100%) rename {src => modules/bit/src}/runtime/storage_runtime_wbtest.mbt (100%) rename {src => modules/bit/src}/string_utils/moon.pkg (100%) rename {src => modules/bit/src}/string_utils/pkg.generated.mbti (100%) rename {src => modules/bit/src}/string_utils/string_utils.mbt (100%) rename {src => modules/bit/src}/string_utils/string_utils_test.mbt (100%) rename {src => modules/bit/src}/tar/moon.pkg (100%) rename {src => modules/bit/src}/tar/pkg.generated.mbti (100%) rename {src => modules/bit/src}/tar/tar.mbt (100%) rename {src => modules/bit/src}/tar/tar_test.mbt (100%) rename {src => modules/bit/src}/tests/git_compat_test.mbt (100%) rename {src => modules/bit/src}/tests/integration_test.mbt (100%) rename {src => modules/bit/src}/tests/moon.pkg (100%) rename {src => modules/bit/src}/tests/pkg.generated.mbti (100%) rename {src => modules/bit/src}/tests/scripts/test_with_git.sh (100%) rename {src => modules/bit/src}/tests/scripts/verify_packfile.sh (100%) rename {src => modules/bit/src}/tests/upload_pack_fixture_test.mbt (100%) rename {src => modules/bit/src}/top.mbt (100%) rename {src => modules/bit/src}/trailers/moon.pkg (100%) rename {src => modules/bit/src}/trailers/pkg.generated.mbti (100%) rename {src => modules/bit/src}/trailers/trailers.mbt (100%) rename {src => modules/bit/src}/trailers/trailers_test.mbt (100%) rename {src => modules/bit/src}/types/contracts.mbt (100%) rename {src => modules/bit/src}/types/git_types.mbt (100%) rename {src => modules/bit/src}/types/moon.pkg (100%) rename {src => modules/bit/src}/types/pkg.generated.mbti (100%) rename {src => modules/bit/src}/vfs/bench_real_test.mbt (100%) rename {src => modules/bit/src}/vfs/bench_test.mbt (100%) rename {src => modules/bit/src}/vfs/cache.mbt (100%) rename {src => modules/bit/src}/vfs/fs.mbt (100%) rename {src => modules/bit/src}/vfs/fs_test.mbt (100%) rename {src => modules/bit/src}/vfs/fs_wbtest.mbt (100%) rename {src => modules/bit/src}/vfs/integration_test.mbt (100%) rename {src => modules/bit/src}/vfs/layer.mbt (100%) rename {src => modules/bit/src}/vfs/lru.mbt (100%) rename {src => modules/bit/src}/vfs/lru_test.mbt (100%) rename {src => modules/bit/src}/vfs/moon.pkg (100%) rename {src => modules/bit/src}/vfs/partial_clone_test.mbt (100%) rename {src => modules/bit/src}/vfs/path.mbt (100%) rename {src => modules/bit/src}/vfs/perf_partial_clone_test.mbt (100%) rename {src => modules/bit/src}/vfs/pkg.generated.mbti (100%) rename {src => modules/bit/src}/vfs/read_ops.mbt (100%) rename {src => modules/bit/src}/vfs/snapshot.mbt (100%) rename {src => modules/bit/src}/vfs/tree_builder.mbt (100%) rename {src => modules/bit/src}/vfs/types.mbt (100%) rename {src => modules/bit/src}/vfs/verify_lazy_test.mbt (100%) rename {src => modules/bit/src}/vfs/write_ops.mbt (100%) rename {src => modules/bit/src}/worktree/moon.pkg (100%) rename {src => modules/bit/src}/worktree/pkg.generated.mbti (100%) rename {src => modules/bit/src}/worktree/worktree.mbt (100%) rename {src => modules/bit/src}/worktree/worktree_test.mbt (100%) diff --git a/.github/workflows/pages-demo.yml b/.github/workflows/pages-demo.yml index 1c6a94f4..657c116e 100644 --- a/.github/workflows/pages-demo.yml +++ b/.github/workflows/pages-demo.yml @@ -15,8 +15,9 @@ on: - "Taskfile.pkl" - "Test.pkl" - "pkspec/**" - - "moon.mod.json" - - "src/lib/**" + - "moon.work" + - "modules/bit/moon.mod.json" + - "modules/bit/src/lib/**" - "tools/bit-git.mjs" workflow_dispatch: diff --git a/Taskfile.pkl b/Taskfile.pkl index ce2596b6..65bf0e15 100644 --- a/Taskfile.pkl +++ b/Taskfile.pkl @@ -6,9 +6,11 @@ amends "package://pkg.pkl-lang.org/github.com/mizchi/pkfire/pkfire@0.10.0#/Taskfile.pkl" local moonbitSources: Listing = new { - "src/**/*.mbt" - "src/**/moon.pkg.json" - "moon.mod.json" + "modules/**/*.mbt" + "modules/**/moon.pkg" + "modules/**/moon.pkg.json" + "modules/**/moon.mod.json" + "moon.work" } // -- formatting ----------------------------------------------------------- @@ -48,7 +50,8 @@ local checkLayers: Task = new { cmd = "node tools/check-layers.mjs" inputs { "tools/check-layers.mjs" - "src/**/moon.pkg.json" + "modules/**/moon.pkg" + "modules/**/moon.pkg.json" } } @@ -57,7 +60,7 @@ local checkGuards: Task = new { description = "Layer-boundary guards (runtime/storage_runtime)" cmd = "tools/check-layer-guards.sh" inputs { - "src/**/*.mbt" + "modules/**/*.mbt" "tools/check-layer-guards.sh" } } @@ -83,16 +86,16 @@ local build: Task = new { local buildJsLib: Task = new { name = "build-js-lib" - description = "JS release build of src/lib" - cmd = "moon build --target js --release src/lib" + description = "JS release build of mizchi/bit/lib" + cmd = "moon build --target js --release modules/bit/src/lib" inputs = moonbitSources outputs { "_build/js/release/build/lib/lib.js" } } local buildJsCli: Task = new { name = "build-js-cli" - description = "JS release build of src/cmd/bit" - cmd = "moon build --target js --release src/cmd/bit" + description = "JS release build of mizchi/bit/cmd/bit" + cmd = "moon build --target js --release modules/bit/src/cmd/bit" inputs = moonbitSources outputs { "_build/js/release/build/cmd/bit/bit.js" } } diff --git a/docs/package-layout.md b/docs/package-layout.md index 42722032..579622ec 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -1,16 +1,41 @@ # Package Layout -`mizchi/bit` is a single MoonBit module (`moon.mod.json`), but its packages are -organized into a layered structure inspired by [gitoxide]'s `gix-*` plumbing / -`gix` porcelain / `gitoxide` CLI split. +The repository is a MoonBit workspace (`moon.work`). Every module lives under +`modules//`. The main module `mizchi/bit` (under `modules/bit/`) contains +Git plumbing / porcelain organized in a layered structure inspired by +[gitoxide]'s `gix-*` plumbing / `gix` porcelain / `gitoxide` CLI split. +Non-Git extensions live in their own `mizchi/bitx_*` modules so consumers can +pick only the features they need. [gitoxide]: https://github.com/Byron/gitoxide +## Repository layout + +``` +moon.work ← workspace manifest +modules/ + bit/ ← main module: core / mid / high / cmd + moon.mod.json + src/ + types/ hash/ object/ ... (core) + repo/ worktree/ diff/ ... (mid) + lib/ vfs/ fingerprint/ (high) + cmd/bit/ cmd/git-bit/ (cmd) + bitx_bitconfig/ ← extension modules + bitx_doc/ + bitx_hq/ + bitx_hub/ + bitx_kv/ + bitx_rebase_ai/ + bitx_subdir/ + bitx_workspace/ +``` + ## Layers ``` -cmd ─→ x-* ─→ lib (high) ─→ mid ─→ core - x-* ─→ mid ─→ core (x-* may bypass `lib`) +cmd ─→ bitx_* ─→ lib (high) ─→ mid ─→ core + bitx_* ─→ mid ─→ core (bitx_* may bypass `lib`) ``` Dependencies must flow only in one direction. A package in a lower layer must @@ -23,29 +48,29 @@ primitive and may only depend on other `core/*` packages it strictly needs. | Package | Path | gitoxide analogue | |-------------------------------|-----------------------|------------------------------------| -| `mizchi/bit/types` | `src/types` | (shared types) | -| `mizchi/bit/hash` | `src/hash` | `gix-hash` | -| `mizchi/bit/date_parse` | `src/date_parse` | `gix-date` | -| `mizchi/bit/string_utils` | `src/string_utils` | `gix-utils`, `gix-quote` | -| `mizchi/bit/config_parse` | `src/config_parse` | `gix-config` | -| `mizchi/bit/object` | `src/object` | `gix-object` | -| `mizchi/bit/trailers` | `src/trailers` | `gix-trailers` | -| `mizchi/bit/ignore` | `src/ignore` | `gix-ignore` + `gix-glob` | -| `mizchi/bit/tar` | `src/tar` | `gix-archive` | -| `mizchi/bit/diff_core` | `src/diff_core` | `gix-diff` (low-level) | -| `mizchi/bit/diff3` | `src/diff3` | `gix-merge` (low-level) | -| `mizchi/bit/apply` | `src/apply` | (patch application) | -| `mizchi/bit/fast_import` | `src/fast_import` | (fast-import stream) | -| `mizchi/bit/grep` | `src/grep` | (grep engine) | -| `mizchi/bit/io` | `src/io` | `gix-fs` (abstract) | -| `mizchi/bit/io/native` | `src/io/native` | `gix-fs` (native bindings) | -| `mizchi/bit/osfs` | `src/osfs` | `gix-fs` (OS-backed impl) | -| `mizchi/bit/pack` | `src/pack` | `gix-pack` | -| `mizchi/bit/refs` | `src/refs` | `gix-ref` | -| `mizchi/bit/reftable` | `src/reftable` | (reftable backend) | -| `mizchi/bit/protocol` | `src/protocol` | `gix-protocol`/`gix-transport` | -| `mizchi/bit/runtime` | `src/runtime` | (runtime helpers) | -| `mizchi/bit/bootstrap` | `src/bootstrap` | (bootstrap helpers) | +| `mizchi/bit/types` | `modules/bit/src/types` | (shared types) | +| `mizchi/bit/hash` | `modules/bit/src/hash` | `gix-hash` | +| `mizchi/bit/date_parse` | `modules/bit/src/date_parse` | `gix-date` | +| `mizchi/bit/string_utils` | `modules/bit/src/string_utils` | `gix-utils`, `gix-quote` | +| `mizchi/bit/config_parse` | `modules/bit/src/config_parse` | `gix-config` | +| `mizchi/bit/object` | `modules/bit/src/object` | `gix-object` | +| `mizchi/bit/trailers` | `modules/bit/src/trailers` | `gix-trailers` | +| `mizchi/bit/ignore` | `modules/bit/src/ignore` | `gix-ignore` + `gix-glob` | +| `mizchi/bit/tar` | `modules/bit/src/tar` | `gix-archive` | +| `mizchi/bit/diff_core` | `modules/bit/src/diff_core` | `gix-diff` (low-level) | +| `mizchi/bit/diff3` | `modules/bit/src/diff3` | `gix-merge` (low-level) | +| `mizchi/bit/apply` | `modules/bit/src/apply` | (patch application) | +| `mizchi/bit/fast_import` | `modules/bit/src/fast_import` | (fast-import stream) | +| `mizchi/bit/grep` | `modules/bit/src/grep` | (grep engine) | +| `mizchi/bit/io` | `modules/bit/src/io` | `gix-fs` (abstract) | +| `mizchi/bit/io/native` | `modules/bit/src/io/native` | `gix-fs` (native bindings) | +| `mizchi/bit/osfs` | `modules/bit/src/osfs` | `gix-fs` (OS-backed impl) | +| `mizchi/bit/pack` | `modules/bit/src/pack` | `gix-pack` | +| `mizchi/bit/refs` | `modules/bit/src/refs` | `gix-ref` | +| `mizchi/bit/reftable` | `modules/bit/src/reftable` | (reftable backend) | +| `mizchi/bit/protocol` | `modules/bit/src/protocol` | `gix-protocol`/`gix-transport` | +| `mizchi/bit/runtime` | `modules/bit/src/runtime` | (runtime helpers) | +| `mizchi/bit/bootstrap` | `modules/bit/src/bootstrap` | (bootstrap helpers) | ### mid (gitoxide `gitoxide-core` 相当) @@ -53,12 +78,12 @@ Operations layered on top of `core/*`. May depend on `core/*` only. | Package | Path | Notes | |--------------------------|------------------|--------------------------------------| -| `mizchi/bit/repo` | `src/repo` | Repository handle / materialization | -| `mizchi/bit/repo_ops` | `src/repo_ops` | Repository-level operations | -| `mizchi/bit/pack_ops` | `src/pack_ops` | `collect_reachable_objects`, etc. | -| `mizchi/bit/remote` | `src/remote` | URL / shorthand / `.git` discovery | -| `mizchi/bit/worktree` | `src/worktree` | status / add / commit / rm / mv | -| `mizchi/bit/diff` | `src/diff` | High-level diff / show | +| `mizchi/bit/repo` | `modules/bit/src/repo` | Repository handle / materialization | +| `mizchi/bit/repo_ops` | `modules/bit/src/repo_ops` | Repository-level operations | +| `mizchi/bit/pack_ops` | `modules/bit/src/pack_ops` | `collect_reachable_objects`, etc. | +| `mizchi/bit/remote` | `modules/bit/src/remote` | URL / shorthand / `.git` discovery | +| `mizchi/bit/worktree` | `modules/bit/src/worktree` | status / add / commit / rm / mv | +| `mizchi/bit/diff` | `modules/bit/src/diff` | High-level diff / show | ### high (gitoxide `gix` porcelain 相当) @@ -67,9 +92,9 @@ Porcelain layer. May depend on `core/*` and `mid/*`. Used by `cmd/*` and | Package | Path | Notes | |-------------------------------|--------------------|----------------------------------------------------| -| `mizchi/bit/lib` | `src/lib` | High-level / backward-compatible facade | -| `mizchi/bit/vfs` | `src/vfs` | Virtual FS over commits (used by `lib`, `x-kv`, `x-subdir`) | -| `mizchi/bit/fingerprint` | `src/fingerprint` | Workspace fingerprint (used by `x-workspace`) | +| `mizchi/bit/lib` | `modules/bit/src/lib` | High-level / backward-compatible facade | +| `mizchi/bit/vfs` | `modules/bit/src/vfs` | Virtual FS over commits (used by `lib`, `x-kv`, `x-subdir`) | +| `mizchi/bit/fingerprint` | `modules/bit/src/fingerprint` | Workspace fingerprint (used by `x-workspace`) | ### bitx_* (extensions, gitoxide にはない bit 独自機能) @@ -99,8 +124,8 @@ CLI entry points. May depend on any layer. | Package | Path | Notes | |--------------------------|------------------|----------------------------------------| -| `mizchi/bit/cmd/bit` | `src/cmd/bit` | Main `bit` CLI | -| `mizchi/bit/cmd/git-bit` | `src/cmd/git-bit`| `git-bit` shim CLI | +| `mizchi/bit/cmd/bit` | `modules/bit/src/cmd/bit` | Main `bit` CLI | +| `mizchi/bit/cmd/git-bit` | `modules/bit/src/cmd/git-bit`| `git-bit` shim CLI | ## Allowed dependency directions diff --git a/flake.nix b/flake.nix index 5e80b9ef..bca7b6ca 100644 --- a/flake.nix +++ b/flake.nix @@ -51,7 +51,7 @@ moonHome = pkgs.moonPlatform.bundleWithRegistry { cachedRegistry = pkgs.moonPlatform.buildCachedRegistry { - moonModJson = ./moon.mod.json; + moonModJson = ./modules/bit/moon.mod.json; registryIndexSrc = inputs.moon-registry; }; }; diff --git a/README.mbt.md b/modules/bit/README.mbt.md similarity index 100% rename from README.mbt.md rename to modules/bit/README.mbt.md diff --git a/moon.mod.json b/modules/bit/moon.mod.json similarity index 73% rename from moon.mod.json rename to modules/bit/moon.mod.json index a1beb57a..939d5261 100644 --- a/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -29,25 +29,5 @@ ], "description": "Pure MoonBit Git implementation", "source": "src", - "exclude": [ - "component", - "tools", - "e2e", - "fixtures", - "docs", - "t", - "octorus", - "modules", - "third_party/git", - "file.txt", - "install.sh", - "Taskfile.pkl", - "Test.pkl", - "pkspec", - "AGENTS.md", - "CLAUDE.md", - "COMPAT_RESULTS.md", - "TODO.md" - ], "preferred-target": "native" } \ No newline at end of file diff --git a/src/TODO.md b/modules/bit/src/TODO.md similarity index 100% rename from src/TODO.md rename to modules/bit/src/TODO.md diff --git a/src/apply/apply.mbt b/modules/bit/src/apply/apply.mbt similarity index 100% rename from src/apply/apply.mbt rename to modules/bit/src/apply/apply.mbt diff --git a/src/apply/apply_test.mbt b/modules/bit/src/apply/apply_test.mbt similarity index 100% rename from src/apply/apply_test.mbt rename to modules/bit/src/apply/apply_test.mbt diff --git a/src/apply/moon.pkg b/modules/bit/src/apply/moon.pkg similarity index 100% rename from src/apply/moon.pkg rename to modules/bit/src/apply/moon.pkg diff --git a/src/apply/pkg.generated.mbti b/modules/bit/src/apply/pkg.generated.mbti similarity index 100% rename from src/apply/pkg.generated.mbti rename to modules/bit/src/apply/pkg.generated.mbti diff --git a/src/bootstrap/bootstrap.mbt b/modules/bit/src/bootstrap/bootstrap.mbt similarity index 100% rename from src/bootstrap/bootstrap.mbt rename to modules/bit/src/bootstrap/bootstrap.mbt diff --git a/src/bootstrap/moon.pkg b/modules/bit/src/bootstrap/moon.pkg similarity index 100% rename from src/bootstrap/moon.pkg rename to modules/bit/src/bootstrap/moon.pkg diff --git a/src/bootstrap/pkg.generated.mbti b/modules/bit/src/bootstrap/pkg.generated.mbti similarity index 100% rename from src/bootstrap/pkg.generated.mbti rename to modules/bit/src/bootstrap/pkg.generated.mbti diff --git a/src/bootstrap/stdio_guard_stub.c b/modules/bit/src/bootstrap/stdio_guard_stub.c similarity index 100% rename from src/bootstrap/stdio_guard_stub.c rename to modules/bit/src/bootstrap/stdio_guard_stub.c diff --git a/src/cmd/bit/add.mbt b/modules/bit/src/cmd/bit/add.mbt similarity index 100% rename from src/cmd/bit/add.mbt rename to modules/bit/src/cmd/bit/add.mbt diff --git a/src/cmd/bit/add_wbtest.mbt b/modules/bit/src/cmd/bit/add_wbtest.mbt similarity index 100% rename from src/cmd/bit/add_wbtest.mbt rename to modules/bit/src/cmd/bit/add_wbtest.mbt diff --git a/src/cmd/bit/ai.mbt b/modules/bit/src/cmd/bit/ai.mbt similarity index 100% rename from src/cmd/bit/ai.mbt rename to modules/bit/src/cmd/bit/ai.mbt diff --git a/src/cmd/bit/am.mbt b/modules/bit/src/cmd/bit/am.mbt similarity index 100% rename from src/cmd/bit/am.mbt rename to modules/bit/src/cmd/bit/am.mbt diff --git a/src/cmd/bit/apply.mbt b/modules/bit/src/cmd/bit/apply.mbt similarity index 100% rename from src/cmd/bit/apply.mbt rename to modules/bit/src/cmd/bit/apply.mbt diff --git a/src/cmd/bit/archive.mbt b/modules/bit/src/cmd/bit/archive.mbt similarity index 100% rename from src/cmd/bit/archive.mbt rename to modules/bit/src/cmd/bit/archive.mbt diff --git a/src/cmd/bit/bench_apply_wbtest.mbt b/modules/bit/src/cmd/bit/bench_apply_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_apply_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_apply_wbtest.mbt diff --git a/src/cmd/bit/bench_cat_file_wbtest.mbt b/modules/bit/src/cmd/bit/bench_cat_file_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_cat_file_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_cat_file_wbtest.mbt diff --git a/src/cmd/bit/bench_e2e_clone_fetch_wbtest.mbt b/modules/bit/src/cmd/bit/bench_e2e_clone_fetch_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_e2e_clone_fetch_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_e2e_clone_fetch_wbtest.mbt diff --git a/src/cmd/bit/bench_fsck_wbtest.mbt b/modules/bit/src/cmd/bit/bench_fsck_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_fsck_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_fsck_wbtest.mbt diff --git a/src/cmd/bit/bench_grep_wbtest.mbt b/modules/bit/src/cmd/bit/bench_grep_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_grep_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_grep_wbtest.mbt diff --git a/src/cmd/bit/bench_init_wbtest.mbt b/modules/bit/src/cmd/bit/bench_init_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_init_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_init_wbtest.mbt diff --git a/src/cmd/bit/bench_log_wbtest.mbt b/modules/bit/src/cmd/bit/bench_log_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_log_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_log_wbtest.mbt diff --git a/src/cmd/bit/bench_midx_clone_wbtest.mbt b/modules/bit/src/cmd/bit/bench_midx_clone_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_midx_clone_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_midx_clone_wbtest.mbt diff --git a/src/cmd/bit/bench_repack_wbtest.mbt b/modules/bit/src/cmd/bit/bench_repack_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_repack_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_repack_wbtest.mbt diff --git a/src/cmd/bit/bench_stash_wbtest.mbt b/modules/bit/src/cmd/bit/bench_stash_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_stash_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_stash_wbtest.mbt diff --git a/src/cmd/bit/bench_status_wbtest.mbt b/modules/bit/src/cmd/bit/bench_status_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_status_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_status_wbtest.mbt diff --git a/src/cmd/bit/bench_suppress_stub.c b/modules/bit/src/cmd/bit/bench_suppress_stub.c similarity index 100% rename from src/cmd/bit/bench_suppress_stub.c rename to modules/bit/src/cmd/bit/bench_suppress_stub.c diff --git a/src/cmd/bit/bench_suppress_wbtest.mbt b/modules/bit/src/cmd/bit/bench_suppress_wbtest.mbt similarity index 100% rename from src/cmd/bit/bench_suppress_wbtest.mbt rename to modules/bit/src/cmd/bit/bench_suppress_wbtest.mbt diff --git a/src/cmd/bit/bisect.mbt b/modules/bit/src/cmd/bit/bisect.mbt similarity index 100% rename from src/cmd/bit/bisect.mbt rename to modules/bit/src/cmd/bit/bisect.mbt diff --git a/src/cmd/bit/bisect_wbtest.mbt b/modules/bit/src/cmd/bit/bisect_wbtest.mbt similarity index 100% rename from src/cmd/bit/bisect_wbtest.mbt rename to modules/bit/src/cmd/bit/bisect_wbtest.mbt diff --git a/src/cmd/bit/blame.mbt b/modules/bit/src/cmd/bit/blame.mbt similarity index 100% rename from src/cmd/bit/blame.mbt rename to modules/bit/src/cmd/bit/blame.mbt diff --git a/src/cmd/bit/blame_wbtest.mbt b/modules/bit/src/cmd/bit/blame_wbtest.mbt similarity index 100% rename from src/cmd/bit/blame_wbtest.mbt rename to modules/bit/src/cmd/bit/blame_wbtest.mbt diff --git a/src/cmd/bit/branch.mbt b/modules/bit/src/cmd/bit/branch.mbt similarity index 100% rename from src/cmd/bit/branch.mbt rename to modules/bit/src/cmd/bit/branch.mbt diff --git a/src/cmd/bit/branch_wbtest.mbt b/modules/bit/src/cmd/bit/branch_wbtest.mbt similarity index 100% rename from src/cmd/bit/branch_wbtest.mbt rename to modules/bit/src/cmd/bit/branch_wbtest.mbt diff --git a/src/cmd/bit/bundle.mbt b/modules/bit/src/cmd/bit/bundle.mbt similarity index 100% rename from src/cmd/bit/bundle.mbt rename to modules/bit/src/cmd/bit/bundle.mbt diff --git a/src/cmd/bit/cat.mbt b/modules/bit/src/cmd/bit/cat.mbt similarity index 100% rename from src/cmd/bit/cat.mbt rename to modules/bit/src/cmd/bit/cat.mbt diff --git a/src/cmd/bit/cat_file.mbt b/modules/bit/src/cmd/bit/cat_file.mbt similarity index 100% rename from src/cmd/bit/cat_file.mbt rename to modules/bit/src/cmd/bit/cat_file.mbt diff --git a/src/cmd/bit/cat_file_wbtest.mbt b/modules/bit/src/cmd/bit/cat_file_wbtest.mbt similarity index 100% rename from src/cmd/bit/cat_file_wbtest.mbt rename to modules/bit/src/cmd/bit/cat_file_wbtest.mbt diff --git a/src/cmd/bit/check_attr.mbt b/modules/bit/src/cmd/bit/check_attr.mbt similarity index 100% rename from src/cmd/bit/check_attr.mbt rename to modules/bit/src/cmd/bit/check_attr.mbt diff --git a/src/cmd/bit/check_ignore.mbt b/modules/bit/src/cmd/bit/check_ignore.mbt similarity index 100% rename from src/cmd/bit/check_ignore.mbt rename to modules/bit/src/cmd/bit/check_ignore.mbt diff --git a/src/cmd/bit/check_ignore_wbtest.mbt b/modules/bit/src/cmd/bit/check_ignore_wbtest.mbt similarity index 100% rename from src/cmd/bit/check_ignore_wbtest.mbt rename to modules/bit/src/cmd/bit/check_ignore_wbtest.mbt diff --git a/src/cmd/bit/check_mailmap.mbt b/modules/bit/src/cmd/bit/check_mailmap.mbt similarity index 100% rename from src/cmd/bit/check_mailmap.mbt rename to modules/bit/src/cmd/bit/check_mailmap.mbt diff --git a/src/cmd/bit/check_ref_format.mbt b/modules/bit/src/cmd/bit/check_ref_format.mbt similarity index 100% rename from src/cmd/bit/check_ref_format.mbt rename to modules/bit/src/cmd/bit/check_ref_format.mbt diff --git a/src/cmd/bit/checkout.mbt b/modules/bit/src/cmd/bit/checkout.mbt similarity index 100% rename from src/cmd/bit/checkout.mbt rename to modules/bit/src/cmd/bit/checkout.mbt diff --git a/src/cmd/bit/checkout_index.mbt b/modules/bit/src/cmd/bit/checkout_index.mbt similarity index 100% rename from src/cmd/bit/checkout_index.mbt rename to modules/bit/src/cmd/bit/checkout_index.mbt diff --git a/src/cmd/bit/checkout_wbtest.mbt b/modules/bit/src/cmd/bit/checkout_wbtest.mbt similarity index 100% rename from src/cmd/bit/checkout_wbtest.mbt rename to modules/bit/src/cmd/bit/checkout_wbtest.mbt diff --git a/src/cmd/bit/cherry.mbt b/modules/bit/src/cmd/bit/cherry.mbt similarity index 100% rename from src/cmd/bit/cherry.mbt rename to modules/bit/src/cmd/bit/cherry.mbt diff --git a/src/cmd/bit/cherry_pick.mbt b/modules/bit/src/cmd/bit/cherry_pick.mbt similarity index 100% rename from src/cmd/bit/cherry_pick.mbt rename to modules/bit/src/cmd/bit/cherry_pick.mbt diff --git a/src/cmd/bit/cherry_pick_wbtest.mbt b/modules/bit/src/cmd/bit/cherry_pick_wbtest.mbt similarity index 100% rename from src/cmd/bit/cherry_pick_wbtest.mbt rename to modules/bit/src/cmd/bit/cherry_pick_wbtest.mbt diff --git a/src/cmd/bit/clean.mbt b/modules/bit/src/cmd/bit/clean.mbt similarity index 100% rename from src/cmd/bit/clean.mbt rename to modules/bit/src/cmd/bit/clean.mbt diff --git a/src/cmd/bit/clone.mbt b/modules/bit/src/cmd/bit/clone.mbt similarity index 100% rename from src/cmd/bit/clone.mbt rename to modules/bit/src/cmd/bit/clone.mbt diff --git a/src/cmd/bit/clone_wbtest.mbt b/modules/bit/src/cmd/bit/clone_wbtest.mbt similarity index 100% rename from src/cmd/bit/clone_wbtest.mbt rename to modules/bit/src/cmd/bit/clone_wbtest.mbt diff --git a/src/cmd/bit/column.mbt b/modules/bit/src/cmd/bit/column.mbt similarity index 100% rename from src/cmd/bit/column.mbt rename to modules/bit/src/cmd/bit/column.mbt diff --git a/src/cmd/bit/commit.mbt b/modules/bit/src/cmd/bit/commit.mbt similarity index 100% rename from src/cmd/bit/commit.mbt rename to modules/bit/src/cmd/bit/commit.mbt diff --git a/src/cmd/bit/commit_graph.mbt b/modules/bit/src/cmd/bit/commit_graph.mbt similarity index 100% rename from src/cmd/bit/commit_graph.mbt rename to modules/bit/src/cmd/bit/commit_graph.mbt diff --git a/src/cmd/bit/commit_graph_write.mbt b/modules/bit/src/cmd/bit/commit_graph_write.mbt similarity index 100% rename from src/cmd/bit/commit_graph_write.mbt rename to modules/bit/src/cmd/bit/commit_graph_write.mbt diff --git a/src/cmd/bit/commit_graph_write_wbtest.mbt b/modules/bit/src/cmd/bit/commit_graph_write_wbtest.mbt similarity index 100% rename from src/cmd/bit/commit_graph_write_wbtest.mbt rename to modules/bit/src/cmd/bit/commit_graph_write_wbtest.mbt diff --git a/src/cmd/bit/commit_tree.mbt b/modules/bit/src/cmd/bit/commit_tree.mbt similarity index 100% rename from src/cmd/bit/commit_tree.mbt rename to modules/bit/src/cmd/bit/commit_tree.mbt diff --git a/src/cmd/bit/commit_wbtest.mbt b/modules/bit/src/cmd/bit/commit_wbtest.mbt similarity index 100% rename from src/cmd/bit/commit_wbtest.mbt rename to modules/bit/src/cmd/bit/commit_wbtest.mbt diff --git a/src/cmd/bit/completion.mbt b/modules/bit/src/cmd/bit/completion.mbt similarity index 100% rename from src/cmd/bit/completion.mbt rename to modules/bit/src/cmd/bit/completion.mbt diff --git a/src/cmd/bit/config.mbt b/modules/bit/src/cmd/bit/config.mbt similarity index 100% rename from src/cmd/bit/config.mbt rename to modules/bit/src/cmd/bit/config.mbt diff --git a/src/cmd/bit/count_objects.mbt b/modules/bit/src/cmd/bit/count_objects.mbt similarity index 100% rename from src/cmd/bit/count_objects.mbt rename to modules/bit/src/cmd/bit/count_objects.mbt diff --git a/src/cmd/bit/credential.mbt b/modules/bit/src/cmd/bit/credential.mbt similarity index 100% rename from src/cmd/bit/credential.mbt rename to modules/bit/src/cmd/bit/credential.mbt diff --git a/src/cmd/bit/debug.mbt b/modules/bit/src/cmd/bit/debug.mbt similarity index 100% rename from src/cmd/bit/debug.mbt rename to modules/bit/src/cmd/bit/debug.mbt diff --git a/src/cmd/bit/delegation_cleanup_wbtest.mbt b/modules/bit/src/cmd/bit/delegation_cleanup_wbtest.mbt similarity index 100% rename from src/cmd/bit/delegation_cleanup_wbtest.mbt rename to modules/bit/src/cmd/bit/delegation_cleanup_wbtest.mbt diff --git a/src/cmd/bit/describe.mbt b/modules/bit/src/cmd/bit/describe.mbt similarity index 100% rename from src/cmd/bit/describe.mbt rename to modules/bit/src/cmd/bit/describe.mbt diff --git a/src/cmd/bit/diff.mbt b/modules/bit/src/cmd/bit/diff.mbt similarity index 100% rename from src/cmd/bit/diff.mbt rename to modules/bit/src/cmd/bit/diff.mbt diff --git a/src/cmd/bit/diff_tree.mbt b/modules/bit/src/cmd/bit/diff_tree.mbt similarity index 100% rename from src/cmd/bit/diff_tree.mbt rename to modules/bit/src/cmd/bit/diff_tree.mbt diff --git a/src/cmd/bit/diff_wbtest.mbt b/modules/bit/src/cmd/bit/diff_wbtest.mbt similarity index 100% rename from src/cmd/bit/diff_wbtest.mbt rename to modules/bit/src/cmd/bit/diff_wbtest.mbt diff --git a/src/cmd/bit/difftool.mbt b/modules/bit/src/cmd/bit/difftool.mbt similarity index 100% rename from src/cmd/bit/difftool.mbt rename to modules/bit/src/cmd/bit/difftool.mbt diff --git a/src/cmd/bit/doc.mbt b/modules/bit/src/cmd/bit/doc.mbt similarity index 100% rename from src/cmd/bit/doc.mbt rename to modules/bit/src/cmd/bit/doc.mbt diff --git a/src/cmd/bit/fallback.mbt b/modules/bit/src/cmd/bit/fallback.mbt similarity index 100% rename from src/cmd/bit/fallback.mbt rename to modules/bit/src/cmd/bit/fallback.mbt diff --git a/src/cmd/bit/fallback_wbtest.mbt b/modules/bit/src/cmd/bit/fallback_wbtest.mbt similarity index 100% rename from src/cmd/bit/fallback_wbtest.mbt rename to modules/bit/src/cmd/bit/fallback_wbtest.mbt diff --git a/src/cmd/bit/fast_export.mbt b/modules/bit/src/cmd/bit/fast_export.mbt similarity index 100% rename from src/cmd/bit/fast_export.mbt rename to modules/bit/src/cmd/bit/fast_export.mbt diff --git a/src/cmd/bit/fast_import.mbt b/modules/bit/src/cmd/bit/fast_import.mbt similarity index 100% rename from src/cmd/bit/fast_import.mbt rename to modules/bit/src/cmd/bit/fast_import.mbt diff --git a/src/cmd/bit/fetch.mbt b/modules/bit/src/cmd/bit/fetch.mbt similarity index 100% rename from src/cmd/bit/fetch.mbt rename to modules/bit/src/cmd/bit/fetch.mbt diff --git a/src/cmd/bit/fetch_pack.mbt b/modules/bit/src/cmd/bit/fetch_pack.mbt similarity index 100% rename from src/cmd/bit/fetch_pack.mbt rename to modules/bit/src/cmd/bit/fetch_pack.mbt diff --git a/src/cmd/bit/fetch_serve_js.mbt b/modules/bit/src/cmd/bit/fetch_serve_js.mbt similarity index 100% rename from src/cmd/bit/fetch_serve_js.mbt rename to modules/bit/src/cmd/bit/fetch_serve_js.mbt diff --git a/src/cmd/bit/fetch_serve_native.mbt b/modules/bit/src/cmd/bit/fetch_serve_native.mbt similarity index 100% rename from src/cmd/bit/fetch_serve_native.mbt rename to modules/bit/src/cmd/bit/fetch_serve_native.mbt diff --git a/src/cmd/bit/fetch_wbtest.mbt b/modules/bit/src/cmd/bit/fetch_wbtest.mbt similarity index 100% rename from src/cmd/bit/fetch_wbtest.mbt rename to modules/bit/src/cmd/bit/fetch_wbtest.mbt diff --git a/src/cmd/bit/filter_branch.mbt b/modules/bit/src/cmd/bit/filter_branch.mbt similarity index 100% rename from src/cmd/bit/filter_branch.mbt rename to modules/bit/src/cmd/bit/filter_branch.mbt diff --git a/src/cmd/bit/fmt_merge_msg.mbt b/modules/bit/src/cmd/bit/fmt_merge_msg.mbt similarity index 100% rename from src/cmd/bit/fmt_merge_msg.mbt rename to modules/bit/src/cmd/bit/fmt_merge_msg.mbt diff --git a/src/cmd/bit/for_each_ref.mbt b/modules/bit/src/cmd/bit/for_each_ref.mbt similarity index 100% rename from src/cmd/bit/for_each_ref.mbt rename to modules/bit/src/cmd/bit/for_each_ref.mbt diff --git a/src/cmd/bit/for_each_repo.mbt b/modules/bit/src/cmd/bit/for_each_repo.mbt similarity index 100% rename from src/cmd/bit/for_each_repo.mbt rename to modules/bit/src/cmd/bit/for_each_repo.mbt diff --git a/src/cmd/bit/format_patch.mbt b/modules/bit/src/cmd/bit/format_patch.mbt similarity index 100% rename from src/cmd/bit/format_patch.mbt rename to modules/bit/src/cmd/bit/format_patch.mbt diff --git a/src/cmd/bit/format_patch_wbtest.mbt b/modules/bit/src/cmd/bit/format_patch_wbtest.mbt similarity index 100% rename from src/cmd/bit/format_patch_wbtest.mbt rename to modules/bit/src/cmd/bit/format_patch_wbtest.mbt diff --git a/src/cmd/bit/fsck.mbt b/modules/bit/src/cmd/bit/fsck.mbt similarity index 100% rename from src/cmd/bit/fsck.mbt rename to modules/bit/src/cmd/bit/fsck.mbt diff --git a/src/cmd/bit/gc.mbt b/modules/bit/src/cmd/bit/gc.mbt similarity index 100% rename from src/cmd/bit/gc.mbt rename to modules/bit/src/cmd/bit/gc.mbt diff --git a/src/cmd/bit/get_tar_commit_id.mbt b/modules/bit/src/cmd/bit/get_tar_commit_id.mbt similarity index 100% rename from src/cmd/bit/get_tar_commit_id.mbt rename to modules/bit/src/cmd/bit/get_tar_commit_id.mbt diff --git a/src/cmd/bit/gitconfig.mbt b/modules/bit/src/cmd/bit/gitconfig.mbt similarity index 100% rename from src/cmd/bit/gitconfig.mbt rename to modules/bit/src/cmd/bit/gitconfig.mbt diff --git a/src/cmd/bit/gitconfig_wbtest.mbt b/modules/bit/src/cmd/bit/gitconfig_wbtest.mbt similarity index 100% rename from src/cmd/bit/gitconfig_wbtest.mbt rename to modules/bit/src/cmd/bit/gitconfig_wbtest.mbt diff --git a/src/cmd/bit/grep.mbt b/modules/bit/src/cmd/bit/grep.mbt similarity index 100% rename from src/cmd/bit/grep.mbt rename to modules/bit/src/cmd/bit/grep.mbt diff --git a/src/cmd/bit/grep_filter.mbt b/modules/bit/src/cmd/bit/grep_filter.mbt similarity index 100% rename from src/cmd/bit/grep_filter.mbt rename to modules/bit/src/cmd/bit/grep_filter.mbt diff --git a/src/cmd/bit/grep_filter_wbtest.mbt b/modules/bit/src/cmd/bit/grep_filter_wbtest.mbt similarity index 100% rename from src/cmd/bit/grep_filter_wbtest.mbt rename to modules/bit/src/cmd/bit/grep_filter_wbtest.mbt diff --git a/src/cmd/bit/grep_wbtest.mbt b/modules/bit/src/cmd/bit/grep_wbtest.mbt similarity index 100% rename from src/cmd/bit/grep_wbtest.mbt rename to modules/bit/src/cmd/bit/grep_wbtest.mbt diff --git a/src/cmd/bit/handlers_core_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_core_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_core_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_core_wbtest.mbt diff --git a/src/cmd/bit/handlers_hub_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_hub_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_hub_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_hub_wbtest.mbt diff --git a/src/cmd/bit/handlers_interactive_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_interactive_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_interactive_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_interactive_wbtest.mbt diff --git a/src/cmd/bit/handlers_misc_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_misc_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_misc_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_misc_wbtest.mbt diff --git a/src/cmd/bit/handlers_remote_pull_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_remote_pull_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt diff --git a/src/cmd/bit/handlers_remote_push_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_remote_push_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_remote_push_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_remote_push_wbtest.mbt diff --git a/src/cmd/bit/handlers_scalar_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_scalar_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_scalar_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_scalar_wbtest.mbt diff --git a/src/cmd/bit/handlers_shell_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_shell_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_shell_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_shell_wbtest.mbt diff --git a/src/cmd/bit/handlers_subdir_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_subdir_wbtest.mbt similarity index 100% rename from src/cmd/bit/handlers_subdir_wbtest.mbt rename to modules/bit/src/cmd/bit/handlers_subdir_wbtest.mbt diff --git a/src/cmd/bit/hash_object.mbt b/modules/bit/src/cmd/bit/hash_object.mbt similarity index 100% rename from src/cmd/bit/hash_object.mbt rename to modules/bit/src/cmd/bit/hash_object.mbt diff --git a/src/cmd/bit/hash_object_wbtest.mbt b/modules/bit/src/cmd/bit/hash_object_wbtest.mbt similarity index 100% rename from src/cmd/bit/hash_object_wbtest.mbt rename to modules/bit/src/cmd/bit/hash_object_wbtest.mbt diff --git a/src/cmd/bit/helpers.mbt b/modules/bit/src/cmd/bit/helpers.mbt similarity index 100% rename from src/cmd/bit/helpers.mbt rename to modules/bit/src/cmd/bit/helpers.mbt diff --git a/src/cmd/bit/helpers_js.mbt b/modules/bit/src/cmd/bit/helpers_js.mbt similarity index 100% rename from src/cmd/bit/helpers_js.mbt rename to modules/bit/src/cmd/bit/helpers_js.mbt diff --git a/src/cmd/bit/helpers_shared.mbt b/modules/bit/src/cmd/bit/helpers_shared.mbt similarity index 100% rename from src/cmd/bit/helpers_shared.mbt rename to modules/bit/src/cmd/bit/helpers_shared.mbt diff --git a/src/cmd/bit/helpers_wbtest.mbt b/modules/bit/src/cmd/bit/helpers_wbtest.mbt similarity index 100% rename from src/cmd/bit/helpers_wbtest.mbt rename to modules/bit/src/cmd/bit/helpers_wbtest.mbt diff --git a/src/cmd/bit/hook_runner.mbt b/modules/bit/src/cmd/bit/hook_runner.mbt similarity index 100% rename from src/cmd/bit/hook_runner.mbt rename to modules/bit/src/cmd/bit/hook_runner.mbt diff --git a/src/cmd/bit/hooks.mbt b/modules/bit/src/cmd/bit/hooks.mbt similarity index 100% rename from src/cmd/bit/hooks.mbt rename to modules/bit/src/cmd/bit/hooks.mbt diff --git a/src/cmd/bit/hooks_wbtest.mbt b/modules/bit/src/cmd/bit/hooks_wbtest.mbt similarity index 100% rename from src/cmd/bit/hooks_wbtest.mbt rename to modules/bit/src/cmd/bit/hooks_wbtest.mbt diff --git a/src/cmd/bit/hq.mbt b/modules/bit/src/cmd/bit/hq.mbt similarity index 100% rename from src/cmd/bit/hq.mbt rename to modules/bit/src/cmd/bit/hq.mbt diff --git a/src/cmd/bit/http_fetch.mbt b/modules/bit/src/cmd/bit/http_fetch.mbt similarity index 100% rename from src/cmd/bit/http_fetch.mbt rename to modules/bit/src/cmd/bit/http_fetch.mbt diff --git a/src/cmd/bit/http_serve_js.mbt b/modules/bit/src/cmd/bit/http_serve_js.mbt similarity index 100% rename from src/cmd/bit/http_serve_js.mbt rename to modules/bit/src/cmd/bit/http_serve_js.mbt diff --git a/src/cmd/bit/http_serve_native.mbt b/modules/bit/src/cmd/bit/http_serve_native.mbt similarity index 100% rename from src/cmd/bit/http_serve_native.mbt rename to modules/bit/src/cmd/bit/http_serve_native.mbt diff --git a/src/cmd/bit/hub_active.mbt b/modules/bit/src/cmd/bit/hub_active.mbt similarity index 100% rename from src/cmd/bit/hub_active.mbt rename to modules/bit/src/cmd/bit/hub_active.mbt diff --git a/src/cmd/bit/hub_active_wbtest.mbt b/modules/bit/src/cmd/bit/hub_active_wbtest.mbt similarity index 100% rename from src/cmd/bit/hub_active_wbtest.mbt rename to modules/bit/src/cmd/bit/hub_active_wbtest.mbt diff --git a/src/cmd/bit/hub_compat.mbt b/modules/bit/src/cmd/bit/hub_compat.mbt similarity index 100% rename from src/cmd/bit/hub_compat.mbt rename to modules/bit/src/cmd/bit/hub_compat.mbt diff --git a/src/cmd/bit/hub_debug.mbt b/modules/bit/src/cmd/bit/hub_debug.mbt similarity index 100% rename from src/cmd/bit/hub_debug.mbt rename to modules/bit/src/cmd/bit/hub_debug.mbt diff --git a/src/cmd/bit/hub_github_sync.mbt b/modules/bit/src/cmd/bit/hub_github_sync.mbt similarity index 100% rename from src/cmd/bit/hub_github_sync.mbt rename to modules/bit/src/cmd/bit/hub_github_sync.mbt diff --git a/src/cmd/bit/hub_helpers.mbt b/modules/bit/src/cmd/bit/hub_helpers.mbt similarity index 100% rename from src/cmd/bit/hub_helpers.mbt rename to modules/bit/src/cmd/bit/hub_helpers.mbt diff --git a/src/cmd/bit/hub_import.mbt b/modules/bit/src/cmd/bit/hub_import.mbt similarity index 100% rename from src/cmd/bit/hub_import.mbt rename to modules/bit/src/cmd/bit/hub_import.mbt diff --git a/src/cmd/bit/hub_issue.mbt b/modules/bit/src/cmd/bit/hub_issue.mbt similarity index 100% rename from src/cmd/bit/hub_issue.mbt rename to modules/bit/src/cmd/bit/hub_issue.mbt diff --git a/src/cmd/bit/hub_note.mbt b/modules/bit/src/cmd/bit/hub_note.mbt similarity index 100% rename from src/cmd/bit/hub_note.mbt rename to modules/bit/src/cmd/bit/hub_note.mbt diff --git a/src/cmd/bit/hub_pr.mbt b/modules/bit/src/cmd/bit/hub_pr.mbt similarity index 100% rename from src/cmd/bit/hub_pr.mbt rename to modules/bit/src/cmd/bit/hub_pr.mbt diff --git a/src/cmd/bit/hub_remote.mbt b/modules/bit/src/cmd/bit/hub_remote.mbt similarity index 100% rename from src/cmd/bit/hub_remote.mbt rename to modules/bit/src/cmd/bit/hub_remote.mbt diff --git a/src/cmd/bit/hub_remote_wbtest.mbt b/modules/bit/src/cmd/bit/hub_remote_wbtest.mbt similarity index 100% rename from src/cmd/bit/hub_remote_wbtest.mbt rename to modules/bit/src/cmd/bit/hub_remote_wbtest.mbt diff --git a/src/cmd/bit/hub_search.mbt b/modules/bit/src/cmd/bit/hub_search.mbt similarity index 100% rename from src/cmd/bit/hub_search.mbt rename to modules/bit/src/cmd/bit/hub_search.mbt diff --git a/src/cmd/bit/hub_stores.mbt b/modules/bit/src/cmd/bit/hub_stores.mbt similarity index 100% rename from src/cmd/bit/hub_stores.mbt rename to modules/bit/src/cmd/bit/hub_stores.mbt diff --git a/src/cmd/bit/hub_sync.mbt b/modules/bit/src/cmd/bit/hub_sync.mbt similarity index 100% rename from src/cmd/bit/hub_sync.mbt rename to modules/bit/src/cmd/bit/hub_sync.mbt diff --git a/src/cmd/bit/hub_tty_stub.c b/modules/bit/src/cmd/bit/hub_tty_stub.c similarity index 100% rename from src/cmd/bit/hub_tty_stub.c rename to modules/bit/src/cmd/bit/hub_tty_stub.c diff --git a/src/cmd/bit/index_pack.mbt b/modules/bit/src/cmd/bit/index_pack.mbt similarity index 100% rename from src/cmd/bit/index_pack.mbt rename to modules/bit/src/cmd/bit/index_pack.mbt diff --git a/src/cmd/bit/init.mbt b/modules/bit/src/cmd/bit/init.mbt similarity index 100% rename from src/cmd/bit/init.mbt rename to modules/bit/src/cmd/bit/init.mbt diff --git a/src/cmd/bit/init_wbtest.mbt b/modules/bit/src/cmd/bit/init_wbtest.mbt similarity index 100% rename from src/cmd/bit/init_wbtest.mbt rename to modules/bit/src/cmd/bit/init_wbtest.mbt diff --git a/src/cmd/bit/interactive.mbt b/modules/bit/src/cmd/bit/interactive.mbt similarity index 100% rename from src/cmd/bit/interactive.mbt rename to modules/bit/src/cmd/bit/interactive.mbt diff --git a/src/cmd/bit/interpret_trailers.mbt b/modules/bit/src/cmd/bit/interpret_trailers.mbt similarity index 100% rename from src/cmd/bit/interpret_trailers.mbt rename to modules/bit/src/cmd/bit/interpret_trailers.mbt diff --git a/src/cmd/bit/log.mbt b/modules/bit/src/cmd/bit/log.mbt similarity index 100% rename from src/cmd/bit/log.mbt rename to modules/bit/src/cmd/bit/log.mbt diff --git a/src/cmd/bit/log_wbtest.mbt b/modules/bit/src/cmd/bit/log_wbtest.mbt similarity index 100% rename from src/cmd/bit/log_wbtest.mbt rename to modules/bit/src/cmd/bit/log_wbtest.mbt diff --git a/src/cmd/bit/ls_files.mbt b/modules/bit/src/cmd/bit/ls_files.mbt similarity index 100% rename from src/cmd/bit/ls_files.mbt rename to modules/bit/src/cmd/bit/ls_files.mbt diff --git a/src/cmd/bit/ls_files_wbtest.mbt b/modules/bit/src/cmd/bit/ls_files_wbtest.mbt similarity index 100% rename from src/cmd/bit/ls_files_wbtest.mbt rename to modules/bit/src/cmd/bit/ls_files_wbtest.mbt diff --git a/src/cmd/bit/ls_remote.mbt b/modules/bit/src/cmd/bit/ls_remote.mbt similarity index 100% rename from src/cmd/bit/ls_remote.mbt rename to modules/bit/src/cmd/bit/ls_remote.mbt diff --git a/src/cmd/bit/ls_tree.mbt b/modules/bit/src/cmd/bit/ls_tree.mbt similarity index 100% rename from src/cmd/bit/ls_tree.mbt rename to modules/bit/src/cmd/bit/ls_tree.mbt diff --git a/src/cmd/bit/mailinfo.mbt b/modules/bit/src/cmd/bit/mailinfo.mbt similarity index 100% rename from src/cmd/bit/mailinfo.mbt rename to modules/bit/src/cmd/bit/mailinfo.mbt diff --git a/src/cmd/bit/mailsplit.mbt b/modules/bit/src/cmd/bit/mailsplit.mbt similarity index 100% rename from src/cmd/bit/mailsplit.mbt rename to modules/bit/src/cmd/bit/mailsplit.mbt diff --git a/src/cmd/bit/main.mbt b/modules/bit/src/cmd/bit/main.mbt similarity index 100% rename from src/cmd/bit/main.mbt rename to modules/bit/src/cmd/bit/main.mbt diff --git a/src/cmd/bit/main_js.mbt b/modules/bit/src/cmd/bit/main_js.mbt similarity index 100% rename from src/cmd/bit/main_js.mbt rename to modules/bit/src/cmd/bit/main_js.mbt diff --git a/src/cmd/bit/main_wasm.mbt b/modules/bit/src/cmd/bit/main_wasm.mbt similarity index 100% rename from src/cmd/bit/main_wasm.mbt rename to modules/bit/src/cmd/bit/main_wasm.mbt diff --git a/src/cmd/bit/main_wbtest.mbt b/modules/bit/src/cmd/bit/main_wbtest.mbt similarity index 100% rename from src/cmd/bit/main_wbtest.mbt rename to modules/bit/src/cmd/bit/main_wbtest.mbt diff --git a/src/cmd/bit/maintenance.mbt b/modules/bit/src/cmd/bit/maintenance.mbt similarity index 100% rename from src/cmd/bit/maintenance.mbt rename to modules/bit/src/cmd/bit/maintenance.mbt diff --git a/src/cmd/bit/merge.mbt b/modules/bit/src/cmd/bit/merge.mbt similarity index 100% rename from src/cmd/bit/merge.mbt rename to modules/bit/src/cmd/bit/merge.mbt diff --git a/src/cmd/bit/merge_base.mbt b/modules/bit/src/cmd/bit/merge_base.mbt similarity index 100% rename from src/cmd/bit/merge_base.mbt rename to modules/bit/src/cmd/bit/merge_base.mbt diff --git a/src/cmd/bit/merge_file.mbt b/modules/bit/src/cmd/bit/merge_file.mbt similarity index 100% rename from src/cmd/bit/merge_file.mbt rename to modules/bit/src/cmd/bit/merge_file.mbt diff --git a/src/cmd/bit/merge_index.mbt b/modules/bit/src/cmd/bit/merge_index.mbt similarity index 100% rename from src/cmd/bit/merge_index.mbt rename to modules/bit/src/cmd/bit/merge_index.mbt diff --git a/src/cmd/bit/merge_one_file.mbt b/modules/bit/src/cmd/bit/merge_one_file.mbt similarity index 100% rename from src/cmd/bit/merge_one_file.mbt rename to modules/bit/src/cmd/bit/merge_one_file.mbt diff --git a/src/cmd/bit/merge_tree.mbt b/modules/bit/src/cmd/bit/merge_tree.mbt similarity index 100% rename from src/cmd/bit/merge_tree.mbt rename to modules/bit/src/cmd/bit/merge_tree.mbt diff --git a/src/cmd/bit/merge_wbtest.mbt b/modules/bit/src/cmd/bit/merge_wbtest.mbt similarity index 100% rename from src/cmd/bit/merge_wbtest.mbt rename to modules/bit/src/cmd/bit/merge_wbtest.mbt diff --git a/src/cmd/bit/mktag_cmd.mbt b/modules/bit/src/cmd/bit/mktag_cmd.mbt similarity index 100% rename from src/cmd/bit/mktag_cmd.mbt rename to modules/bit/src/cmd/bit/mktag_cmd.mbt diff --git a/src/cmd/bit/mktree.mbt b/modules/bit/src/cmd/bit/mktree.mbt similarity index 100% rename from src/cmd/bit/mktree.mbt rename to modules/bit/src/cmd/bit/mktree.mbt diff --git a/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg similarity index 100% rename from src/cmd/bit/moon.pkg rename to modules/bit/src/cmd/bit/moon.pkg diff --git a/src/cmd/bit/multi_pack_index.mbt b/modules/bit/src/cmd/bit/multi_pack_index.mbt similarity index 100% rename from src/cmd/bit/multi_pack_index.mbt rename to modules/bit/src/cmd/bit/multi_pack_index.mbt diff --git a/src/cmd/bit/multi_pack_index_wbtest.mbt b/modules/bit/src/cmd/bit/multi_pack_index_wbtest.mbt similarity index 100% rename from src/cmd/bit/multi_pack_index_wbtest.mbt rename to modules/bit/src/cmd/bit/multi_pack_index_wbtest.mbt diff --git a/src/cmd/bit/mv.mbt b/modules/bit/src/cmd/bit/mv.mbt similarity index 100% rename from src/cmd/bit/mv.mbt rename to modules/bit/src/cmd/bit/mv.mbt diff --git a/src/cmd/bit/name_rev.mbt b/modules/bit/src/cmd/bit/name_rev.mbt similarity index 100% rename from src/cmd/bit/name_rev.mbt rename to modules/bit/src/cmd/bit/name_rev.mbt diff --git a/src/cmd/bit/notes.mbt b/modules/bit/src/cmd/bit/notes.mbt similarity index 100% rename from src/cmd/bit/notes.mbt rename to modules/bit/src/cmd/bit/notes.mbt diff --git a/src/cmd/bit/osfs.mbt b/modules/bit/src/cmd/bit/osfs.mbt similarity index 100% rename from src/cmd/bit/osfs.mbt rename to modules/bit/src/cmd/bit/osfs.mbt diff --git a/src/cmd/bit/pack_bitmap_read.mbt b/modules/bit/src/cmd/bit/pack_bitmap_read.mbt similarity index 100% rename from src/cmd/bit/pack_bitmap_read.mbt rename to modules/bit/src/cmd/bit/pack_bitmap_read.mbt diff --git a/src/cmd/bit/pack_bitmap_write.mbt b/modules/bit/src/cmd/bit/pack_bitmap_write.mbt similarity index 100% rename from src/cmd/bit/pack_bitmap_write.mbt rename to modules/bit/src/cmd/bit/pack_bitmap_write.mbt diff --git a/src/cmd/bit/pack_bitmap_write_wbtest.mbt b/modules/bit/src/cmd/bit/pack_bitmap_write_wbtest.mbt similarity index 100% rename from src/cmd/bit/pack_bitmap_write_wbtest.mbt rename to modules/bit/src/cmd/bit/pack_bitmap_write_wbtest.mbt diff --git a/src/cmd/bit/pack_helpers.mbt b/modules/bit/src/cmd/bit/pack_helpers.mbt similarity index 100% rename from src/cmd/bit/pack_helpers.mbt rename to modules/bit/src/cmd/bit/pack_helpers.mbt diff --git a/src/cmd/bit/pack_helpers_wbtest.mbt b/modules/bit/src/cmd/bit/pack_helpers_wbtest.mbt similarity index 100% rename from src/cmd/bit/pack_helpers_wbtest.mbt rename to modules/bit/src/cmd/bit/pack_helpers_wbtest.mbt diff --git a/src/cmd/bit/pack_objects.mbt b/modules/bit/src/cmd/bit/pack_objects.mbt similarity index 100% rename from src/cmd/bit/pack_objects.mbt rename to modules/bit/src/cmd/bit/pack_objects.mbt diff --git a/src/cmd/bit/pack_objects_cruft.mbt b/modules/bit/src/cmd/bit/pack_objects_cruft.mbt similarity index 100% rename from src/cmd/bit/pack_objects_cruft.mbt rename to modules/bit/src/cmd/bit/pack_objects_cruft.mbt diff --git a/src/cmd/bit/pack_redundant.mbt b/modules/bit/src/cmd/bit/pack_redundant.mbt similarity index 100% rename from src/cmd/bit/pack_redundant.mbt rename to modules/bit/src/cmd/bit/pack_redundant.mbt diff --git a/src/cmd/bit/pack_refs.mbt b/modules/bit/src/cmd/bit/pack_refs.mbt similarity index 100% rename from src/cmd/bit/pack_refs.mbt rename to modules/bit/src/cmd/bit/pack_refs.mbt diff --git a/src/cmd/bit/patch_id.mbt b/modules/bit/src/cmd/bit/patch_id.mbt similarity index 100% rename from src/cmd/bit/patch_id.mbt rename to modules/bit/src/cmd/bit/patch_id.mbt diff --git a/src/cmd/bit/pkg.generated.mbti b/modules/bit/src/cmd/bit/pkg.generated.mbti similarity index 100% rename from src/cmd/bit/pkg.generated.mbti rename to modules/bit/src/cmd/bit/pkg.generated.mbti diff --git a/src/cmd/bit/prune.mbt b/modules/bit/src/cmd/bit/prune.mbt similarity index 100% rename from src/cmd/bit/prune.mbt rename to modules/bit/src/cmd/bit/prune.mbt diff --git a/src/cmd/bit/prune_packed.mbt b/modules/bit/src/cmd/bit/prune_packed.mbt similarity index 100% rename from src/cmd/bit/prune_packed.mbt rename to modules/bit/src/cmd/bit/prune_packed.mbt diff --git a/src/cmd/bit/pull.mbt b/modules/bit/src/cmd/bit/pull.mbt similarity index 100% rename from src/cmd/bit/pull.mbt rename to modules/bit/src/cmd/bit/pull.mbt diff --git a/src/cmd/bit/push.mbt b/modules/bit/src/cmd/bit/push.mbt similarity index 100% rename from src/cmd/bit/push.mbt rename to modules/bit/src/cmd/bit/push.mbt diff --git a/src/cmd/bit/quiltimport.mbt b/modules/bit/src/cmd/bit/quiltimport.mbt similarity index 100% rename from src/cmd/bit/quiltimport.mbt rename to modules/bit/src/cmd/bit/quiltimport.mbt diff --git a/src/cmd/bit/range_diff.mbt b/modules/bit/src/cmd/bit/range_diff.mbt similarity index 100% rename from src/cmd/bit/range_diff.mbt rename to modules/bit/src/cmd/bit/range_diff.mbt diff --git a/src/cmd/bit/read_tree.mbt b/modules/bit/src/cmd/bit/read_tree.mbt similarity index 100% rename from src/cmd/bit/read_tree.mbt rename to modules/bit/src/cmd/bit/read_tree.mbt diff --git a/src/cmd/bit/rebase.mbt b/modules/bit/src/cmd/bit/rebase.mbt similarity index 100% rename from src/cmd/bit/rebase.mbt rename to modules/bit/src/cmd/bit/rebase.mbt diff --git a/src/cmd/bit/rebase_ai.mbt b/modules/bit/src/cmd/bit/rebase_ai.mbt similarity index 100% rename from src/cmd/bit/rebase_ai.mbt rename to modules/bit/src/cmd/bit/rebase_ai.mbt diff --git a/src/cmd/bit/rebase_ai_wbtest.mbt b/modules/bit/src/cmd/bit/rebase_ai_wbtest.mbt similarity index 100% rename from src/cmd/bit/rebase_ai_wbtest.mbt rename to modules/bit/src/cmd/bit/rebase_ai_wbtest.mbt diff --git a/src/cmd/bit/rebase_wbtest.mbt b/modules/bit/src/cmd/bit/rebase_wbtest.mbt similarity index 100% rename from src/cmd/bit/rebase_wbtest.mbt rename to modules/bit/src/cmd/bit/rebase_wbtest.mbt diff --git a/src/cmd/bit/receive_pack.mbt b/modules/bit/src/cmd/bit/receive_pack.mbt similarity index 100% rename from src/cmd/bit/receive_pack.mbt rename to modules/bit/src/cmd/bit/receive_pack.mbt diff --git a/src/cmd/bit/reflog.mbt b/modules/bit/src/cmd/bit/reflog.mbt similarity index 100% rename from src/cmd/bit/reflog.mbt rename to modules/bit/src/cmd/bit/reflog.mbt diff --git a/src/cmd/bit/reflog_wbtest.mbt b/modules/bit/src/cmd/bit/reflog_wbtest.mbt similarity index 100% rename from src/cmd/bit/reflog_wbtest.mbt rename to modules/bit/src/cmd/bit/reflog_wbtest.mbt diff --git a/src/cmd/bit/relay.mbt b/modules/bit/src/cmd/bit/relay.mbt similarity index 100% rename from src/cmd/bit/relay.mbt rename to modules/bit/src/cmd/bit/relay.mbt diff --git a/src/cmd/bit/relay_ci_review.mbt b/modules/bit/src/cmd/bit/relay_ci_review.mbt similarity index 100% rename from src/cmd/bit/relay_ci_review.mbt rename to modules/bit/src/cmd/bit/relay_ci_review.mbt diff --git a/src/cmd/bit/relay_js.mbt b/modules/bit/src/cmd/bit/relay_js.mbt similarity index 100% rename from src/cmd/bit/relay_js.mbt rename to modules/bit/src/cmd/bit/relay_js.mbt diff --git a/src/cmd/bit/relay_watch.mbt b/modules/bit/src/cmd/bit/relay_watch.mbt similarity index 100% rename from src/cmd/bit/relay_watch.mbt rename to modules/bit/src/cmd/bit/relay_watch.mbt diff --git a/src/cmd/bit/relay_watch_wbtest.mbt b/modules/bit/src/cmd/bit/relay_watch_wbtest.mbt similarity index 100% rename from src/cmd/bit/relay_watch_wbtest.mbt rename to modules/bit/src/cmd/bit/relay_watch_wbtest.mbt diff --git a/src/cmd/bit/remote.mbt b/modules/bit/src/cmd/bit/remote.mbt similarity index 100% rename from src/cmd/bit/remote.mbt rename to modules/bit/src/cmd/bit/remote.mbt diff --git a/src/cmd/bit/remote_wbtest.mbt b/modules/bit/src/cmd/bit/remote_wbtest.mbt similarity index 100% rename from src/cmd/bit/remote_wbtest.mbt rename to modules/bit/src/cmd/bit/remote_wbtest.mbt diff --git a/src/cmd/bit/repack.mbt b/modules/bit/src/cmd/bit/repack.mbt similarity index 100% rename from src/cmd/bit/repack.mbt rename to modules/bit/src/cmd/bit/repack.mbt diff --git a/src/cmd/bit/replace.mbt b/modules/bit/src/cmd/bit/replace.mbt similarity index 100% rename from src/cmd/bit/replace.mbt rename to modules/bit/src/cmd/bit/replace.mbt diff --git a/src/cmd/bit/request_pull.mbt b/modules/bit/src/cmd/bit/request_pull.mbt similarity index 100% rename from src/cmd/bit/request_pull.mbt rename to modules/bit/src/cmd/bit/request_pull.mbt diff --git a/src/cmd/bit/rerere.mbt b/modules/bit/src/cmd/bit/rerere.mbt similarity index 100% rename from src/cmd/bit/rerere.mbt rename to modules/bit/src/cmd/bit/rerere.mbt diff --git a/src/cmd/bit/reset.mbt b/modules/bit/src/cmd/bit/reset.mbt similarity index 100% rename from src/cmd/bit/reset.mbt rename to modules/bit/src/cmd/bit/reset.mbt diff --git a/src/cmd/bit/reset_wbtest.mbt b/modules/bit/src/cmd/bit/reset_wbtest.mbt similarity index 100% rename from src/cmd/bit/reset_wbtest.mbt rename to modules/bit/src/cmd/bit/reset_wbtest.mbt diff --git a/src/cmd/bit/restore.mbt b/modules/bit/src/cmd/bit/restore.mbt similarity index 100% rename from src/cmd/bit/restore.mbt rename to modules/bit/src/cmd/bit/restore.mbt diff --git a/src/cmd/bit/restore_wbtest.mbt b/modules/bit/src/cmd/bit/restore_wbtest.mbt similarity index 100% rename from src/cmd/bit/restore_wbtest.mbt rename to modules/bit/src/cmd/bit/restore_wbtest.mbt diff --git a/src/cmd/bit/rev_list.mbt b/modules/bit/src/cmd/bit/rev_list.mbt similarity index 100% rename from src/cmd/bit/rev_list.mbt rename to modules/bit/src/cmd/bit/rev_list.mbt diff --git a/src/cmd/bit/rev_list_wbtest.mbt b/modules/bit/src/cmd/bit/rev_list_wbtest.mbt similarity index 100% rename from src/cmd/bit/rev_list_wbtest.mbt rename to modules/bit/src/cmd/bit/rev_list_wbtest.mbt diff --git a/src/cmd/bit/rev_parse.mbt b/modules/bit/src/cmd/bit/rev_parse.mbt similarity index 100% rename from src/cmd/bit/rev_parse.mbt rename to modules/bit/src/cmd/bit/rev_parse.mbt diff --git a/src/cmd/bit/rev_parse_wbtest.mbt b/modules/bit/src/cmd/bit/rev_parse_wbtest.mbt similarity index 100% rename from src/cmd/bit/rev_parse_wbtest.mbt rename to modules/bit/src/cmd/bit/rev_parse_wbtest.mbt diff --git a/src/cmd/bit/revert.mbt b/modules/bit/src/cmd/bit/revert.mbt similarity index 100% rename from src/cmd/bit/revert.mbt rename to modules/bit/src/cmd/bit/revert.mbt diff --git a/src/cmd/bit/rm.mbt b/modules/bit/src/cmd/bit/rm.mbt similarity index 100% rename from src/cmd/bit/rm.mbt rename to modules/bit/src/cmd/bit/rm.mbt diff --git a/src/cmd/bit/rm_wbtest.mbt b/modules/bit/src/cmd/bit/rm_wbtest.mbt similarity index 100% rename from src/cmd/bit/rm_wbtest.mbt rename to modules/bit/src/cmd/bit/rm_wbtest.mbt diff --git a/src/cmd/bit/scalar.mbt b/modules/bit/src/cmd/bit/scalar.mbt similarity index 100% rename from src/cmd/bit/scalar.mbt rename to modules/bit/src/cmd/bit/scalar.mbt diff --git a/src/cmd/bit/send_pack.mbt b/modules/bit/src/cmd/bit/send_pack.mbt similarity index 100% rename from src/cmd/bit/send_pack.mbt rename to modules/bit/src/cmd/bit/send_pack.mbt diff --git a/src/cmd/bit/serve.mbt b/modules/bit/src/cmd/bit/serve.mbt similarity index 100% rename from src/cmd/bit/serve.mbt rename to modules/bit/src/cmd/bit/serve.mbt diff --git a/src/cmd/bit/shell.mbt b/modules/bit/src/cmd/bit/shell.mbt similarity index 100% rename from src/cmd/bit/shell.mbt rename to modules/bit/src/cmd/bit/shell.mbt diff --git a/src/cmd/bit/shortlog.mbt b/modules/bit/src/cmd/bit/shortlog.mbt similarity index 100% rename from src/cmd/bit/shortlog.mbt rename to modules/bit/src/cmd/bit/shortlog.mbt diff --git a/src/cmd/bit/shortlog_wbtest.mbt b/modules/bit/src/cmd/bit/shortlog_wbtest.mbt similarity index 100% rename from src/cmd/bit/shortlog_wbtest.mbt rename to modules/bit/src/cmd/bit/shortlog_wbtest.mbt diff --git a/src/cmd/bit/show.mbt b/modules/bit/src/cmd/bit/show.mbt similarity index 100% rename from src/cmd/bit/show.mbt rename to modules/bit/src/cmd/bit/show.mbt diff --git a/src/cmd/bit/show_branches.mbt b/modules/bit/src/cmd/bit/show_branches.mbt similarity index 100% rename from src/cmd/bit/show_branches.mbt rename to modules/bit/src/cmd/bit/show_branches.mbt diff --git a/src/cmd/bit/show_index.mbt b/modules/bit/src/cmd/bit/show_index.mbt similarity index 100% rename from src/cmd/bit/show_index.mbt rename to modules/bit/src/cmd/bit/show_index.mbt diff --git a/src/cmd/bit/show_ref.mbt b/modules/bit/src/cmd/bit/show_ref.mbt similarity index 100% rename from src/cmd/bit/show_ref.mbt rename to modules/bit/src/cmd/bit/show_ref.mbt diff --git a/src/cmd/bit/show_wbtest.mbt b/modules/bit/src/cmd/bit/show_wbtest.mbt similarity index 100% rename from src/cmd/bit/show_wbtest.mbt rename to modules/bit/src/cmd/bit/show_wbtest.mbt diff --git a/src/cmd/bit/signing_helpers.mbt b/modules/bit/src/cmd/bit/signing_helpers.mbt similarity index 100% rename from src/cmd/bit/signing_helpers.mbt rename to modules/bit/src/cmd/bit/signing_helpers.mbt diff --git a/src/cmd/bit/sigpipe_js.mbt b/modules/bit/src/cmd/bit/sigpipe_js.mbt similarity index 100% rename from src/cmd/bit/sigpipe_js.mbt rename to modules/bit/src/cmd/bit/sigpipe_js.mbt diff --git a/src/cmd/bit/sigpipe_native.mbt b/modules/bit/src/cmd/bit/sigpipe_native.mbt similarity index 100% rename from src/cmd/bit/sigpipe_native.mbt rename to modules/bit/src/cmd/bit/sigpipe_native.mbt diff --git a/src/cmd/bit/sigpipe_stub.c b/modules/bit/src/cmd/bit/sigpipe_stub.c similarity index 100% rename from src/cmd/bit/sigpipe_stub.c rename to modules/bit/src/cmd/bit/sigpipe_stub.c diff --git a/src/cmd/bit/sparse_checkout.mbt b/modules/bit/src/cmd/bit/sparse_checkout.mbt similarity index 100% rename from src/cmd/bit/sparse_checkout.mbt rename to modules/bit/src/cmd/bit/sparse_checkout.mbt diff --git a/src/cmd/bit/sparse_checkout_wbtest.mbt b/modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt similarity index 100% rename from src/cmd/bit/sparse_checkout_wbtest.mbt rename to modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt diff --git a/src/cmd/bit/stash.mbt b/modules/bit/src/cmd/bit/stash.mbt similarity index 100% rename from src/cmd/bit/stash.mbt rename to modules/bit/src/cmd/bit/stash.mbt diff --git a/src/cmd/bit/status.mbt b/modules/bit/src/cmd/bit/status.mbt similarity index 100% rename from src/cmd/bit/status.mbt rename to modules/bit/src/cmd/bit/status.mbt diff --git a/src/cmd/bit/status_wbtest.mbt b/modules/bit/src/cmd/bit/status_wbtest.mbt similarity index 100% rename from src/cmd/bit/status_wbtest.mbt rename to modules/bit/src/cmd/bit/status_wbtest.mbt diff --git a/src/cmd/bit/storage_runtime.mbt b/modules/bit/src/cmd/bit/storage_runtime.mbt similarity index 100% rename from src/cmd/bit/storage_runtime.mbt rename to modules/bit/src/cmd/bit/storage_runtime.mbt diff --git a/src/cmd/bit/storage_runtime_wbtest.mbt b/modules/bit/src/cmd/bit/storage_runtime_wbtest.mbt similarity index 100% rename from src/cmd/bit/storage_runtime_wbtest.mbt rename to modules/bit/src/cmd/bit/storage_runtime_wbtest.mbt diff --git a/src/cmd/bit/stripspace.mbt b/modules/bit/src/cmd/bit/stripspace.mbt similarity index 100% rename from src/cmd/bit/stripspace.mbt rename to modules/bit/src/cmd/bit/stripspace.mbt diff --git a/src/cmd/bit/subdir_clone.mbt b/modules/bit/src/cmd/bit/subdir_clone.mbt similarity index 100% rename from src/cmd/bit/subdir_clone.mbt rename to modules/bit/src/cmd/bit/subdir_clone.mbt diff --git a/src/cmd/bit/subdir_ops.mbt b/modules/bit/src/cmd/bit/subdir_ops.mbt similarity index 100% rename from src/cmd/bit/subdir_ops.mbt rename to modules/bit/src/cmd/bit/subdir_ops.mbt diff --git a/src/cmd/bit/subdir_shorthand_wbtest.mbt b/modules/bit/src/cmd/bit/subdir_shorthand_wbtest.mbt similarity index 100% rename from src/cmd/bit/subdir_shorthand_wbtest.mbt rename to modules/bit/src/cmd/bit/subdir_shorthand_wbtest.mbt diff --git a/src/cmd/bit/submodule.mbt b/modules/bit/src/cmd/bit/submodule.mbt similarity index 100% rename from src/cmd/bit/submodule.mbt rename to modules/bit/src/cmd/bit/submodule.mbt diff --git a/src/cmd/bit/submodule_wbtest.mbt b/modules/bit/src/cmd/bit/submodule_wbtest.mbt similarity index 100% rename from src/cmd/bit/submodule_wbtest.mbt rename to modules/bit/src/cmd/bit/submodule_wbtest.mbt diff --git a/src/cmd/bit/switch.mbt b/modules/bit/src/cmd/bit/switch.mbt similarity index 100% rename from src/cmd/bit/switch.mbt rename to modules/bit/src/cmd/bit/switch.mbt diff --git a/src/cmd/bit/switch_wbtest.mbt b/modules/bit/src/cmd/bit/switch_wbtest.mbt similarity index 100% rename from src/cmd/bit/switch_wbtest.mbt rename to modules/bit/src/cmd/bit/switch_wbtest.mbt diff --git a/src/cmd/bit/symbolic_ref.mbt b/modules/bit/src/cmd/bit/symbolic_ref.mbt similarity index 100% rename from src/cmd/bit/symbolic_ref.mbt rename to modules/bit/src/cmd/bit/symbolic_ref.mbt diff --git a/src/cmd/bit/tag.mbt b/modules/bit/src/cmd/bit/tag.mbt similarity index 100% rename from src/cmd/bit/tag.mbt rename to modules/bit/src/cmd/bit/tag.mbt diff --git a/src/cmd/bit/tag_wbtest.mbt b/modules/bit/src/cmd/bit/tag_wbtest.mbt similarity index 100% rename from src/cmd/bit/tag_wbtest.mbt rename to modules/bit/src/cmd/bit/tag_wbtest.mbt diff --git a/src/cmd/bit/time_js.mbt b/modules/bit/src/cmd/bit/time_js.mbt similarity index 100% rename from src/cmd/bit/time_js.mbt rename to modules/bit/src/cmd/bit/time_js.mbt diff --git a/src/cmd/bit/time_native.mbt b/modules/bit/src/cmd/bit/time_native.mbt similarity index 100% rename from src/cmd/bit/time_native.mbt rename to modules/bit/src/cmd/bit/time_native.mbt diff --git a/src/cmd/bit/time_stub.c b/modules/bit/src/cmd/bit/time_stub.c similarity index 100% rename from src/cmd/bit/time_stub.c rename to modules/bit/src/cmd/bit/time_stub.c diff --git a/src/cmd/bit/time_wasm.mbt b/modules/bit/src/cmd/bit/time_wasm.mbt similarity index 100% rename from src/cmd/bit/time_wasm.mbt rename to modules/bit/src/cmd/bit/time_wasm.mbt diff --git a/src/cmd/bit/time_web_wbtest.mbt b/modules/bit/src/cmd/bit/time_web_wbtest.mbt similarity index 100% rename from src/cmd/bit/time_web_wbtest.mbt rename to modules/bit/src/cmd/bit/time_web_wbtest.mbt diff --git a/src/cmd/bit/tree.mbt b/modules/bit/src/cmd/bit/tree.mbt similarity index 100% rename from src/cmd/bit/tree.mbt rename to modules/bit/src/cmd/bit/tree.mbt diff --git a/src/cmd/bit/unpack_file.mbt b/modules/bit/src/cmd/bit/unpack_file.mbt similarity index 100% rename from src/cmd/bit/unpack_file.mbt rename to modules/bit/src/cmd/bit/unpack_file.mbt diff --git a/src/cmd/bit/unpack_objects.mbt b/modules/bit/src/cmd/bit/unpack_objects.mbt similarity index 100% rename from src/cmd/bit/unpack_objects.mbt rename to modules/bit/src/cmd/bit/unpack_objects.mbt diff --git a/src/cmd/bit/update_index.mbt b/modules/bit/src/cmd/bit/update_index.mbt similarity index 100% rename from src/cmd/bit/update_index.mbt rename to modules/bit/src/cmd/bit/update_index.mbt diff --git a/src/cmd/bit/update_index_wbtest.mbt b/modules/bit/src/cmd/bit/update_index_wbtest.mbt similarity index 100% rename from src/cmd/bit/update_index_wbtest.mbt rename to modules/bit/src/cmd/bit/update_index_wbtest.mbt diff --git a/src/cmd/bit/update_ref.mbt b/modules/bit/src/cmd/bit/update_ref.mbt similarity index 100% rename from src/cmd/bit/update_ref.mbt rename to modules/bit/src/cmd/bit/update_ref.mbt diff --git a/src/cmd/bit/update_ref_wbtest.mbt b/modules/bit/src/cmd/bit/update_ref_wbtest.mbt similarity index 100% rename from src/cmd/bit/update_ref_wbtest.mbt rename to modules/bit/src/cmd/bit/update_ref_wbtest.mbt diff --git a/src/cmd/bit/update_server_info.mbt b/modules/bit/src/cmd/bit/update_server_info.mbt similarity index 100% rename from src/cmd/bit/update_server_info.mbt rename to modules/bit/src/cmd/bit/update_server_info.mbt diff --git a/src/cmd/bit/upload_archive.mbt b/modules/bit/src/cmd/bit/upload_archive.mbt similarity index 100% rename from src/cmd/bit/upload_archive.mbt rename to modules/bit/src/cmd/bit/upload_archive.mbt diff --git a/src/cmd/bit/upload_pack.mbt b/modules/bit/src/cmd/bit/upload_pack.mbt similarity index 100% rename from src/cmd/bit/upload_pack.mbt rename to modules/bit/src/cmd/bit/upload_pack.mbt diff --git a/src/cmd/bit/var.mbt b/modules/bit/src/cmd/bit/var.mbt similarity index 100% rename from src/cmd/bit/var.mbt rename to modules/bit/src/cmd/bit/var.mbt diff --git a/src/cmd/bit/verify_commit.mbt b/modules/bit/src/cmd/bit/verify_commit.mbt similarity index 100% rename from src/cmd/bit/verify_commit.mbt rename to modules/bit/src/cmd/bit/verify_commit.mbt diff --git a/src/cmd/bit/verify_pack.mbt b/modules/bit/src/cmd/bit/verify_pack.mbt similarity index 100% rename from src/cmd/bit/verify_pack.mbt rename to modules/bit/src/cmd/bit/verify_pack.mbt diff --git a/src/cmd/bit/verify_tag.mbt b/modules/bit/src/cmd/bit/verify_tag.mbt similarity index 100% rename from src/cmd/bit/verify_tag.mbt rename to modules/bit/src/cmd/bit/verify_tag.mbt diff --git a/src/cmd/bit/verify_wbtest.mbt b/modules/bit/src/cmd/bit/verify_wbtest.mbt similarity index 100% rename from src/cmd/bit/verify_wbtest.mbt rename to modules/bit/src/cmd/bit/verify_wbtest.mbt diff --git a/src/cmd/bit/wbtest_env_lock_shared.mbt b/modules/bit/src/cmd/bit/wbtest_env_lock_shared.mbt similarity index 100% rename from src/cmd/bit/wbtest_env_lock_shared.mbt rename to modules/bit/src/cmd/bit/wbtest_env_lock_shared.mbt diff --git a/src/cmd/bit/web_browse.mbt b/modules/bit/src/cmd/bit/web_browse.mbt similarity index 100% rename from src/cmd/bit/web_browse.mbt rename to modules/bit/src/cmd/bit/web_browse.mbt diff --git a/src/cmd/bit/workspace.mbt b/modules/bit/src/cmd/bit/workspace.mbt similarity index 100% rename from src/cmd/bit/workspace.mbt rename to modules/bit/src/cmd/bit/workspace.mbt diff --git a/src/cmd/bit/worktree.mbt b/modules/bit/src/cmd/bit/worktree.mbt similarity index 100% rename from src/cmd/bit/worktree.mbt rename to modules/bit/src/cmd/bit/worktree.mbt diff --git a/src/cmd/bit/worktree_wbtest.mbt b/modules/bit/src/cmd/bit/worktree_wbtest.mbt similarity index 100% rename from src/cmd/bit/worktree_wbtest.mbt rename to modules/bit/src/cmd/bit/worktree_wbtest.mbt diff --git a/src/cmd/bit/write_tree.mbt b/modules/bit/src/cmd/bit/write_tree.mbt similarity index 100% rename from src/cmd/bit/write_tree.mbt rename to modules/bit/src/cmd/bit/write_tree.mbt diff --git a/src/cmd/bit/write_tree_wbtest.mbt b/modules/bit/src/cmd/bit/write_tree_wbtest.mbt similarity index 100% rename from src/cmd/bit/write_tree_wbtest.mbt rename to modules/bit/src/cmd/bit/write_tree_wbtest.mbt diff --git a/src/cmd/git-bit/git_helpers.mbt b/modules/bit/src/cmd/git-bit/git_helpers.mbt similarity index 100% rename from src/cmd/git-bit/git_helpers.mbt rename to modules/bit/src/cmd/git-bit/git_helpers.mbt diff --git a/src/cmd/git-bit/helpers_shared.mbt b/modules/bit/src/cmd/git-bit/helpers_shared.mbt similarity index 100% rename from src/cmd/git-bit/helpers_shared.mbt rename to modules/bit/src/cmd/git-bit/helpers_shared.mbt diff --git a/src/cmd/git-bit/hub_active.mbt b/modules/bit/src/cmd/git-bit/hub_active.mbt similarity index 100% rename from src/cmd/git-bit/hub_active.mbt rename to modules/bit/src/cmd/git-bit/hub_active.mbt diff --git a/src/cmd/git-bit/hub_debug.mbt b/modules/bit/src/cmd/git-bit/hub_debug.mbt similarity index 100% rename from src/cmd/git-bit/hub_debug.mbt rename to modules/bit/src/cmd/git-bit/hub_debug.mbt diff --git a/src/cmd/git-bit/hub_github_sync.mbt b/modules/bit/src/cmd/git-bit/hub_github_sync.mbt similarity index 100% rename from src/cmd/git-bit/hub_github_sync.mbt rename to modules/bit/src/cmd/git-bit/hub_github_sync.mbt diff --git a/src/cmd/git-bit/hub_helpers.mbt b/modules/bit/src/cmd/git-bit/hub_helpers.mbt similarity index 100% rename from src/cmd/git-bit/hub_helpers.mbt rename to modules/bit/src/cmd/git-bit/hub_helpers.mbt diff --git a/src/cmd/git-bit/hub_import.mbt b/modules/bit/src/cmd/git-bit/hub_import.mbt similarity index 100% rename from src/cmd/git-bit/hub_import.mbt rename to modules/bit/src/cmd/git-bit/hub_import.mbt diff --git a/src/cmd/git-bit/hub_issue.mbt b/modules/bit/src/cmd/git-bit/hub_issue.mbt similarity index 100% rename from src/cmd/git-bit/hub_issue.mbt rename to modules/bit/src/cmd/git-bit/hub_issue.mbt diff --git a/src/cmd/git-bit/hub_libgit2_native.mbt b/modules/bit/src/cmd/git-bit/hub_libgit2_native.mbt similarity index 100% rename from src/cmd/git-bit/hub_libgit2_native.mbt rename to modules/bit/src/cmd/git-bit/hub_libgit2_native.mbt diff --git a/src/cmd/git-bit/hub_libgit2_stub.c b/modules/bit/src/cmd/git-bit/hub_libgit2_stub.c similarity index 100% rename from src/cmd/git-bit/hub_libgit2_stub.c rename to modules/bit/src/cmd/git-bit/hub_libgit2_stub.c diff --git a/src/cmd/git-bit/hub_note.mbt b/modules/bit/src/cmd/git-bit/hub_note.mbt similarity index 100% rename from src/cmd/git-bit/hub_note.mbt rename to modules/bit/src/cmd/git-bit/hub_note.mbt diff --git a/src/cmd/git-bit/hub_pr.mbt b/modules/bit/src/cmd/git-bit/hub_pr.mbt similarity index 100% rename from src/cmd/git-bit/hub_pr.mbt rename to modules/bit/src/cmd/git-bit/hub_pr.mbt diff --git a/src/cmd/git-bit/hub_remote.mbt b/modules/bit/src/cmd/git-bit/hub_remote.mbt similarity index 100% rename from src/cmd/git-bit/hub_remote.mbt rename to modules/bit/src/cmd/git-bit/hub_remote.mbt diff --git a/src/cmd/git-bit/hub_search.mbt b/modules/bit/src/cmd/git-bit/hub_search.mbt similarity index 100% rename from src/cmd/git-bit/hub_search.mbt rename to modules/bit/src/cmd/git-bit/hub_search.mbt diff --git a/src/cmd/git-bit/hub_stores.mbt b/modules/bit/src/cmd/git-bit/hub_stores.mbt similarity index 100% rename from src/cmd/git-bit/hub_stores.mbt rename to modules/bit/src/cmd/git-bit/hub_stores.mbt diff --git a/src/cmd/git-bit/hub_stores_wbtest.mbt b/modules/bit/src/cmd/git-bit/hub_stores_wbtest.mbt similarity index 100% rename from src/cmd/git-bit/hub_stores_wbtest.mbt rename to modules/bit/src/cmd/git-bit/hub_stores_wbtest.mbt diff --git a/src/cmd/git-bit/main.mbt b/modules/bit/src/cmd/git-bit/main.mbt similarity index 100% rename from src/cmd/git-bit/main.mbt rename to modules/bit/src/cmd/git-bit/main.mbt diff --git a/src/cmd/git-bit/main_js.mbt b/modules/bit/src/cmd/git-bit/main_js.mbt similarity index 100% rename from src/cmd/git-bit/main_js.mbt rename to modules/bit/src/cmd/git-bit/main_js.mbt diff --git a/src/cmd/git-bit/main_wasm.mbt b/modules/bit/src/cmd/git-bit/main_wasm.mbt similarity index 100% rename from src/cmd/git-bit/main_wasm.mbt rename to modules/bit/src/cmd/git-bit/main_wasm.mbt diff --git a/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg similarity index 100% rename from src/cmd/git-bit/moon.pkg rename to modules/bit/src/cmd/git-bit/moon.pkg diff --git a/src/cmd/git-bit/osfs.mbt b/modules/bit/src/cmd/git-bit/osfs.mbt similarity index 100% rename from src/cmd/git-bit/osfs.mbt rename to modules/bit/src/cmd/git-bit/osfs.mbt diff --git a/src/cmd/git-bit/pkg.generated.mbti b/modules/bit/src/cmd/git-bit/pkg.generated.mbti similarity index 100% rename from src/cmd/git-bit/pkg.generated.mbti rename to modules/bit/src/cmd/git-bit/pkg.generated.mbti diff --git a/src/cmd/git-bit/time_native.mbt b/modules/bit/src/cmd/git-bit/time_native.mbt similarity index 100% rename from src/cmd/git-bit/time_native.mbt rename to modules/bit/src/cmd/git-bit/time_native.mbt diff --git a/src/cmd/git-bit/time_stub.c b/modules/bit/src/cmd/git-bit/time_stub.c similarity index 100% rename from src/cmd/git-bit/time_stub.c rename to modules/bit/src/cmd/git-bit/time_stub.c diff --git a/src/config_parse/bench_test.mbt b/modules/bit/src/config_parse/bench_test.mbt similarity index 100% rename from src/config_parse/bench_test.mbt rename to modules/bit/src/config_parse/bench_test.mbt diff --git a/src/config_parse/config_parse.mbt b/modules/bit/src/config_parse/config_parse.mbt similarity index 100% rename from src/config_parse/config_parse.mbt rename to modules/bit/src/config_parse/config_parse.mbt diff --git a/src/config_parse/config_parse_test.mbt b/modules/bit/src/config_parse/config_parse_test.mbt similarity index 100% rename from src/config_parse/config_parse_test.mbt rename to modules/bit/src/config_parse/config_parse_test.mbt diff --git a/src/config_parse/moon.pkg b/modules/bit/src/config_parse/moon.pkg similarity index 100% rename from src/config_parse/moon.pkg rename to modules/bit/src/config_parse/moon.pkg diff --git a/src/config_parse/pkg.generated.mbti b/modules/bit/src/config_parse/pkg.generated.mbti similarity index 100% rename from src/config_parse/pkg.generated.mbti rename to modules/bit/src/config_parse/pkg.generated.mbti diff --git a/src/date_parse/date_parse.mbt b/modules/bit/src/date_parse/date_parse.mbt similarity index 100% rename from src/date_parse/date_parse.mbt rename to modules/bit/src/date_parse/date_parse.mbt diff --git a/src/date_parse/date_parse_test.mbt b/modules/bit/src/date_parse/date_parse_test.mbt similarity index 100% rename from src/date_parse/date_parse_test.mbt rename to modules/bit/src/date_parse/date_parse_test.mbt diff --git a/src/date_parse/moon.pkg b/modules/bit/src/date_parse/moon.pkg similarity index 100% rename from src/date_parse/moon.pkg rename to modules/bit/src/date_parse/moon.pkg diff --git a/src/date_parse/pkg.generated.mbti b/modules/bit/src/date_parse/pkg.generated.mbti similarity index 100% rename from src/date_parse/pkg.generated.mbti rename to modules/bit/src/date_parse/pkg.generated.mbti diff --git a/src/diff/bench_test.mbt b/modules/bit/src/diff/bench_test.mbt similarity index 100% rename from src/diff/bench_test.mbt rename to modules/bit/src/diff/bench_test.mbt diff --git a/src/diff/diff_ops.mbt b/modules/bit/src/diff/diff_ops.mbt similarity index 100% rename from src/diff/diff_ops.mbt rename to modules/bit/src/diff/diff_ops.mbt diff --git a/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg similarity index 100% rename from src/diff/moon.pkg rename to modules/bit/src/diff/moon.pkg diff --git a/src/diff/pkg.generated.mbti b/modules/bit/src/diff/pkg.generated.mbti similarity index 100% rename from src/diff/pkg.generated.mbti rename to modules/bit/src/diff/pkg.generated.mbti diff --git a/src/diff3/diff3.mbt b/modules/bit/src/diff3/diff3.mbt similarity index 100% rename from src/diff3/diff3.mbt rename to modules/bit/src/diff3/diff3.mbt diff --git a/src/diff3/diff3_wbtest.mbt b/modules/bit/src/diff3/diff3_wbtest.mbt similarity index 100% rename from src/diff3/diff3_wbtest.mbt rename to modules/bit/src/diff3/diff3_wbtest.mbt diff --git a/src/diff3/moon.pkg b/modules/bit/src/diff3/moon.pkg similarity index 100% rename from src/diff3/moon.pkg rename to modules/bit/src/diff3/moon.pkg diff --git a/src/diff3/pkg.generated.mbti b/modules/bit/src/diff3/pkg.generated.mbti similarity index 100% rename from src/diff3/pkg.generated.mbti rename to modules/bit/src/diff3/pkg.generated.mbti diff --git a/src/diff_core/bench_test.mbt b/modules/bit/src/diff_core/bench_test.mbt similarity index 100% rename from src/diff_core/bench_test.mbt rename to modules/bit/src/diff_core/bench_test.mbt diff --git a/src/diff_core/diff_core.mbt b/modules/bit/src/diff_core/diff_core.mbt similarity index 100% rename from src/diff_core/diff_core.mbt rename to modules/bit/src/diff_core/diff_core.mbt diff --git a/src/diff_core/diff_core_test.mbt b/modules/bit/src/diff_core/diff_core_test.mbt similarity index 100% rename from src/diff_core/diff_core_test.mbt rename to modules/bit/src/diff_core/diff_core_test.mbt diff --git a/src/diff_core/moon.pkg b/modules/bit/src/diff_core/moon.pkg similarity index 100% rename from src/diff_core/moon.pkg rename to modules/bit/src/diff_core/moon.pkg diff --git a/src/diff_core/pkg.generated.mbti b/modules/bit/src/diff_core/pkg.generated.mbti similarity index 100% rename from src/diff_core/pkg.generated.mbti rename to modules/bit/src/diff_core/pkg.generated.mbti diff --git a/src/fast_import/fast_import_parse.mbt b/modules/bit/src/fast_import/fast_import_parse.mbt similarity index 100% rename from src/fast_import/fast_import_parse.mbt rename to modules/bit/src/fast_import/fast_import_parse.mbt diff --git a/src/fast_import/fast_import_parse_test.mbt b/modules/bit/src/fast_import/fast_import_parse_test.mbt similarity index 100% rename from src/fast_import/fast_import_parse_test.mbt rename to modules/bit/src/fast_import/fast_import_parse_test.mbt diff --git a/src/fast_import/moon.pkg b/modules/bit/src/fast_import/moon.pkg similarity index 100% rename from src/fast_import/moon.pkg rename to modules/bit/src/fast_import/moon.pkg diff --git a/src/fast_import/pkg.generated.mbti b/modules/bit/src/fast_import/pkg.generated.mbti similarity index 100% rename from src/fast_import/pkg.generated.mbti rename to modules/bit/src/fast_import/pkg.generated.mbti diff --git a/src/fingerprint/fingerprint.mbt b/modules/bit/src/fingerprint/fingerprint.mbt similarity index 100% rename from src/fingerprint/fingerprint.mbt rename to modules/bit/src/fingerprint/fingerprint.mbt diff --git a/src/fingerprint/fingerprint_wbtest.mbt b/modules/bit/src/fingerprint/fingerprint_wbtest.mbt similarity index 100% rename from src/fingerprint/fingerprint_wbtest.mbt rename to modules/bit/src/fingerprint/fingerprint_wbtest.mbt diff --git a/src/fingerprint/moon.pkg b/modules/bit/src/fingerprint/moon.pkg similarity index 100% rename from src/fingerprint/moon.pkg rename to modules/bit/src/fingerprint/moon.pkg diff --git a/src/fingerprint/pkg.generated.mbti b/modules/bit/src/fingerprint/pkg.generated.mbti similarity index 100% rename from src/fingerprint/pkg.generated.mbti rename to modules/bit/src/fingerprint/pkg.generated.mbti diff --git a/src/fuzz_tests/core_fuzz_test.mbt b/modules/bit/src/fuzz_tests/core_fuzz_test.mbt similarity index 100% rename from src/fuzz_tests/core_fuzz_test.mbt rename to modules/bit/src/fuzz_tests/core_fuzz_test.mbt diff --git a/src/fuzz_tests/ignore_fuzz_test.mbt b/modules/bit/src/fuzz_tests/ignore_fuzz_test.mbt similarity index 100% rename from src/fuzz_tests/ignore_fuzz_test.mbt rename to modules/bit/src/fuzz_tests/ignore_fuzz_test.mbt diff --git a/src/fuzz_tests/lcg_test.mbt b/modules/bit/src/fuzz_tests/lcg_test.mbt similarity index 100% rename from src/fuzz_tests/lcg_test.mbt rename to modules/bit/src/fuzz_tests/lcg_test.mbt diff --git a/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg similarity index 100% rename from src/fuzz_tests/moon.pkg rename to modules/bit/src/fuzz_tests/moon.pkg diff --git a/src/fuzz_tests/pack_corpus_fuzz_test.mbt b/modules/bit/src/fuzz_tests/pack_corpus_fuzz_test.mbt similarity index 100% rename from src/fuzz_tests/pack_corpus_fuzz_test.mbt rename to modules/bit/src/fuzz_tests/pack_corpus_fuzz_test.mbt diff --git a/src/fuzz_tests/parsers_fuzz_test.mbt b/modules/bit/src/fuzz_tests/parsers_fuzz_test.mbt similarity index 100% rename from src/fuzz_tests/parsers_fuzz_test.mbt rename to modules/bit/src/fuzz_tests/parsers_fuzz_test.mbt diff --git a/src/fuzz_tests/pkg.generated.mbti b/modules/bit/src/fuzz_tests/pkg.generated.mbti similarity index 100% rename from src/fuzz_tests/pkg.generated.mbti rename to modules/bit/src/fuzz_tests/pkg.generated.mbti diff --git a/src/fuzz_tests/repo_objects_fuzz_test.mbt b/modules/bit/src/fuzz_tests/repo_objects_fuzz_test.mbt similarity index 100% rename from src/fuzz_tests/repo_objects_fuzz_test.mbt rename to modules/bit/src/fuzz_tests/repo_objects_fuzz_test.mbt diff --git a/src/fuzz_tests/security_test.mbt b/modules/bit/src/fuzz_tests/security_test.mbt similarity index 100% rename from src/fuzz_tests/security_test.mbt rename to modules/bit/src/fuzz_tests/security_test.mbt diff --git a/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg similarity index 100% rename from src/grep/moon.pkg rename to modules/bit/src/grep/moon.pkg diff --git a/src/grep/pattern.mbt b/modules/bit/src/grep/pattern.mbt similarity index 100% rename from src/grep/pattern.mbt rename to modules/bit/src/grep/pattern.mbt diff --git a/src/grep/pattern_wbtest.mbt b/modules/bit/src/grep/pattern_wbtest.mbt similarity index 100% rename from src/grep/pattern_wbtest.mbt rename to modules/bit/src/grep/pattern_wbtest.mbt diff --git a/src/grep/pkg.generated.mbti b/modules/bit/src/grep/pkg.generated.mbti similarity index 100% rename from src/grep/pkg.generated.mbti rename to modules/bit/src/grep/pkg.generated.mbti diff --git a/src/grep/search.mbt b/modules/bit/src/grep/search.mbt similarity index 100% rename from src/grep/search.mbt rename to modules/bit/src/grep/search.mbt diff --git a/src/grep/search_wbtest.mbt b/modules/bit/src/grep/search_wbtest.mbt similarity index 100% rename from src/grep/search_wbtest.mbt rename to modules/bit/src/grep/search_wbtest.mbt diff --git a/src/hash/bench_test.mbt b/modules/bit/src/hash/bench_test.mbt similarity index 100% rename from src/hash/bench_test.mbt rename to modules/bit/src/hash/bench_test.mbt diff --git a/src/hash/hex.mbt b/modules/bit/src/hash/hex.mbt similarity index 100% rename from src/hash/hex.mbt rename to modules/bit/src/hash/hex.mbt diff --git a/src/hash/hex_test.mbt b/modules/bit/src/hash/hex_test.mbt similarity index 100% rename from src/hash/hex_test.mbt rename to modules/bit/src/hash/hex_test.mbt diff --git a/src/hash/moon.pkg b/modules/bit/src/hash/moon.pkg similarity index 100% rename from src/hash/moon.pkg rename to modules/bit/src/hash/moon.pkg diff --git a/src/hash/pkg.generated.mbti b/modules/bit/src/hash/pkg.generated.mbti similarity index 100% rename from src/hash/pkg.generated.mbti rename to modules/bit/src/hash/pkg.generated.mbti diff --git a/src/hash/sha1.mbt b/modules/bit/src/hash/sha1.mbt similarity index 100% rename from src/hash/sha1.mbt rename to modules/bit/src/hash/sha1.mbt diff --git a/src/hash/sha1_test.mbt b/modules/bit/src/hash/sha1_test.mbt similarity index 100% rename from src/hash/sha1_test.mbt rename to modules/bit/src/hash/sha1_test.mbt diff --git a/src/hash/sha256.mbt b/modules/bit/src/hash/sha256.mbt similarity index 100% rename from src/hash/sha256.mbt rename to modules/bit/src/hash/sha256.mbt diff --git a/src/hash/sha256_test.mbt b/modules/bit/src/hash/sha256_test.mbt similarity index 100% rename from src/hash/sha256_test.mbt rename to modules/bit/src/hash/sha256_test.mbt diff --git a/src/ignore/bench_test.mbt b/modules/bit/src/ignore/bench_test.mbt similarity index 100% rename from src/ignore/bench_test.mbt rename to modules/bit/src/ignore/bench_test.mbt diff --git a/src/ignore/ignore.mbt b/modules/bit/src/ignore/ignore.mbt similarity index 100% rename from src/ignore/ignore.mbt rename to modules/bit/src/ignore/ignore.mbt diff --git a/src/ignore/ignore_test.mbt b/modules/bit/src/ignore/ignore_test.mbt similarity index 100% rename from src/ignore/ignore_test.mbt rename to modules/bit/src/ignore/ignore_test.mbt diff --git a/src/ignore/moon.pkg b/modules/bit/src/ignore/moon.pkg similarity index 100% rename from src/ignore/moon.pkg rename to modules/bit/src/ignore/moon.pkg diff --git a/src/ignore/pkg.generated.mbti b/modules/bit/src/ignore/pkg.generated.mbti similarity index 100% rename from src/ignore/pkg.generated.mbti rename to modules/bit/src/ignore/pkg.generated.mbti diff --git a/src/io/env_provider.mbt b/modules/bit/src/io/env_provider.mbt similarity index 100% rename from src/io/env_provider.mbt rename to modules/bit/src/io/env_provider.mbt diff --git a/src/io/fs.mbt b/modules/bit/src/io/fs.mbt similarity index 100% rename from src/io/fs.mbt rename to modules/bit/src/io/fs.mbt diff --git a/src/io/http_client.mbt b/modules/bit/src/io/http_client.mbt similarity index 100% rename from src/io/http_client.mbt rename to modules/bit/src/io/http_client.mbt diff --git a/src/io/moon.pkg b/modules/bit/src/io/moon.pkg similarity index 100% rename from src/io/moon.pkg rename to modules/bit/src/io/moon.pkg diff --git a/src/io/native/env_native.mbt b/modules/bit/src/io/native/env_native.mbt similarity index 100% rename from src/io/native/env_native.mbt rename to modules/bit/src/io/native/env_native.mbt diff --git a/src/io/native/http_client_native.mbt b/modules/bit/src/io/native/http_client_native.mbt similarity index 100% rename from src/io/native/http_client_native.mbt rename to modules/bit/src/io/native/http_client_native.mbt diff --git a/src/io/native/init_native.mbt b/modules/bit/src/io/native/init_native.mbt similarity index 100% rename from src/io/native/init_native.mbt rename to modules/bit/src/io/native/init_native.mbt diff --git a/src/io/native/lstat_stub.c b/modules/bit/src/io/native/lstat_stub.c similarity index 100% rename from src/io/native/lstat_stub.c rename to modules/bit/src/io/native/lstat_stub.c diff --git a/src/io/native/moon.pkg b/modules/bit/src/io/native/moon.pkg similarity index 100% rename from src/io/native/moon.pkg rename to modules/bit/src/io/native/moon.pkg diff --git a/src/io/native/pkg.generated.mbti b/modules/bit/src/io/native/pkg.generated.mbti similarity index 100% rename from src/io/native/pkg.generated.mbti rename to modules/bit/src/io/native/pkg.generated.mbti diff --git a/src/io/native/readdir_stub.c b/modules/bit/src/io/native/readdir_stub.c similarity index 100% rename from src/io/native/readdir_stub.c rename to modules/bit/src/io/native/readdir_stub.c diff --git a/src/io/native/remote.mbt b/modules/bit/src/io/native/remote.mbt similarity index 100% rename from src/io/native/remote.mbt rename to modules/bit/src/io/native/remote.mbt diff --git a/src/io/native/upload_pack_http.mbt b/modules/bit/src/io/native/upload_pack_http.mbt similarity index 100% rename from src/io/native/upload_pack_http.mbt rename to modules/bit/src/io/native/upload_pack_http.mbt diff --git a/src/io/native/upload_pack_http_common.mbt b/modules/bit/src/io/native/upload_pack_http_common.mbt similarity index 100% rename from src/io/native/upload_pack_http_common.mbt rename to modules/bit/src/io/native/upload_pack_http_common.mbt diff --git a/src/io/native/upload_pack_http_common_wbtest.mbt b/modules/bit/src/io/native/upload_pack_http_common_wbtest.mbt similarity index 100% rename from src/io/native/upload_pack_http_common_wbtest.mbt rename to modules/bit/src/io/native/upload_pack_http_common_wbtest.mbt diff --git a/src/io/native/upload_pack_process.mbt b/modules/bit/src/io/native/upload_pack_process.mbt similarity index 100% rename from src/io/native/upload_pack_process.mbt rename to modules/bit/src/io/native/upload_pack_process.mbt diff --git a/src/io/native/upload_pack_process_wbtest.mbt b/modules/bit/src/io/native/upload_pack_process_wbtest.mbt similarity index 100% rename from src/io/native/upload_pack_process_wbtest.mbt rename to modules/bit/src/io/native/upload_pack_process_wbtest.mbt diff --git a/src/io/native/upload_pack_remote_native.mbt b/modules/bit/src/io/native/upload_pack_remote_native.mbt similarity index 100% rename from src/io/native/upload_pack_remote_native.mbt rename to modules/bit/src/io/native/upload_pack_remote_native.mbt diff --git a/src/io/native/worktree_probe_native.mbt b/modules/bit/src/io/native/worktree_probe_native.mbt similarity index 100% rename from src/io/native/worktree_probe_native.mbt rename to modules/bit/src/io/native/worktree_probe_native.mbt diff --git a/src/io/pkg.generated.mbti b/modules/bit/src/io/pkg.generated.mbti similarity index 100% rename from src/io/pkg.generated.mbti rename to modules/bit/src/io/pkg.generated.mbti diff --git a/src/io/test_fs.mbt b/modules/bit/src/io/test_fs.mbt similarity index 100% rename from src/io/test_fs.mbt rename to modules/bit/src/io/test_fs.mbt diff --git a/src/io/worktree_probe.mbt b/modules/bit/src/io/worktree_probe.mbt similarity index 100% rename from src/io/worktree_probe.mbt rename to modules/bit/src/io/worktree_probe.mbt diff --git a/src/lib/bench_config_test.mbt b/modules/bit/src/lib/bench_config_test.mbt similarity index 100% rename from src/lib/bench_config_test.mbt rename to modules/bit/src/lib/bench_config_test.mbt diff --git a/src/lib/bench_index_diff_test.mbt b/modules/bit/src/lib/bench_index_diff_test.mbt similarity index 100% rename from src/lib/bench_index_diff_test.mbt rename to modules/bit/src/lib/bench_index_diff_test.mbt diff --git a/src/lib/bench_ops_test.mbt b/modules/bit/src/lib/bench_ops_test.mbt similarity index 100% rename from src/lib/bench_ops_test.mbt rename to modules/bit/src/lib/bench_ops_test.mbt diff --git a/src/lib/bench_status_test.mbt b/modules/bit/src/lib/bench_status_test.mbt similarity index 100% rename from src/lib/bench_status_test.mbt rename to modules/bit/src/lib/bench_status_test.mbt diff --git a/src/lib/bench_working_files_test.mbt b/modules/bit/src/lib/bench_working_files_test.mbt similarity index 100% rename from src/lib/bench_working_files_test.mbt rename to modules/bit/src/lib/bench_working_files_test.mbt diff --git a/src/lib/bisect.mbt b/modules/bit/src/lib/bisect.mbt similarity index 100% rename from src/lib/bisect.mbt rename to modules/bit/src/lib/bisect.mbt diff --git a/src/lib/branch.mbt b/modules/bit/src/lib/branch.mbt similarity index 100% rename from src/lib/branch.mbt rename to modules/bit/src/lib/branch.mbt diff --git a/src/lib/branch_test.mbt b/modules/bit/src/lib/branch_test.mbt similarity index 100% rename from src/lib/branch_test.mbt rename to modules/bit/src/lib/branch_test.mbt diff --git a/src/lib/checkout.mbt b/modules/bit/src/lib/checkout.mbt similarity index 100% rename from src/lib/checkout.mbt rename to modules/bit/src/lib/checkout.mbt diff --git a/src/lib/checkout_test.mbt b/modules/bit/src/lib/checkout_test.mbt similarity index 100% rename from src/lib/checkout_test.mbt rename to modules/bit/src/lib/checkout_test.mbt diff --git a/src/lib/checkout_wbtest.mbt b/modules/bit/src/lib/checkout_wbtest.mbt similarity index 100% rename from src/lib/checkout_wbtest.mbt rename to modules/bit/src/lib/checkout_wbtest.mbt diff --git a/src/lib/cherry_pick.mbt b/modules/bit/src/lib/cherry_pick.mbt similarity index 100% rename from src/lib/cherry_pick.mbt rename to modules/bit/src/lib/cherry_pick.mbt diff --git a/src/lib/commit_graph_reader.mbt b/modules/bit/src/lib/commit_graph_reader.mbt similarity index 100% rename from src/lib/commit_graph_reader.mbt rename to modules/bit/src/lib/commit_graph_reader.mbt diff --git a/src/lib/commit_graph_reader_wbtest.mbt b/modules/bit/src/lib/commit_graph_reader_wbtest.mbt similarity index 100% rename from src/lib/commit_graph_reader_wbtest.mbt rename to modules/bit/src/lib/commit_graph_reader_wbtest.mbt diff --git a/src/lib/commit_helpers.mbt b/modules/bit/src/lib/commit_helpers.mbt similarity index 100% rename from src/lib/commit_helpers.mbt rename to modules/bit/src/lib/commit_helpers.mbt diff --git a/src/lib/compat_object.mbt b/modules/bit/src/lib/compat_object.mbt similarity index 100% rename from src/lib/compat_object.mbt rename to modules/bit/src/lib/compat_object.mbt diff --git a/src/lib/core_interfaces.mbt b/modules/bit/src/lib/core_interfaces.mbt similarity index 100% rename from src/lib/core_interfaces.mbt rename to modules/bit/src/lib/core_interfaces.mbt diff --git a/src/lib/diff.mbt b/modules/bit/src/lib/diff.mbt similarity index 100% rename from src/lib/diff.mbt rename to modules/bit/src/lib/diff.mbt diff --git a/src/lib/diff_tree_helpers.mbt b/modules/bit/src/lib/diff_tree_helpers.mbt similarity index 100% rename from src/lib/diff_tree_helpers.mbt rename to modules/bit/src/lib/diff_tree_helpers.mbt diff --git a/src/lib/fs_tree.mbt b/modules/bit/src/lib/fs_tree.mbt similarity index 100% rename from src/lib/fs_tree.mbt rename to modules/bit/src/lib/fs_tree.mbt diff --git a/src/lib/fs_tree_test.mbt b/modules/bit/src/lib/fs_tree_test.mbt similarity index 100% rename from src/lib/fs_tree_test.mbt rename to modules/bit/src/lib/fs_tree_test.mbt diff --git a/src/lib/fsck.mbt b/modules/bit/src/lib/fsck.mbt similarity index 100% rename from src/lib/fsck.mbt rename to modules/bit/src/lib/fsck.mbt diff --git a/src/lib/fsck_test.mbt b/modules/bit/src/lib/fsck_test.mbt similarity index 100% rename from src/lib/fsck_test.mbt rename to modules/bit/src/lib/fsck_test.mbt diff --git a/src/lib/gc.mbt b/modules/bit/src/lib/gc.mbt similarity index 100% rename from src/lib/gc.mbt rename to modules/bit/src/lib/gc.mbt diff --git a/src/lib/gc_test.mbt b/modules/bit/src/lib/gc_test.mbt similarity index 100% rename from src/lib/gc_test.mbt rename to modules/bit/src/lib/gc_test.mbt diff --git a/src/lib/gitattributes.mbt b/modules/bit/src/lib/gitattributes.mbt similarity index 100% rename from src/lib/gitattributes.mbt rename to modules/bit/src/lib/gitattributes.mbt diff --git a/src/lib/ignore_worktree.mbt b/modules/bit/src/lib/ignore_worktree.mbt similarity index 100% rename from src/lib/ignore_worktree.mbt rename to modules/bit/src/lib/ignore_worktree.mbt diff --git a/src/lib/ignore_worktree_async.mbt b/modules/bit/src/lib/ignore_worktree_async.mbt similarity index 100% rename from src/lib/ignore_worktree_async.mbt rename to modules/bit/src/lib/ignore_worktree_async.mbt diff --git a/src/lib/ignore_worktree_test.mbt b/modules/bit/src/lib/ignore_worktree_test.mbt similarity index 100% rename from src/lib/ignore_worktree_test.mbt rename to modules/bit/src/lib/ignore_worktree_test.mbt diff --git a/src/lib/index.mbt b/modules/bit/src/lib/index.mbt similarity index 100% rename from src/lib/index.mbt rename to modules/bit/src/lib/index.mbt diff --git a/src/lib/index_wbtest.mbt b/modules/bit/src/lib/index_wbtest.mbt similarity index 100% rename from src/lib/index_wbtest.mbt rename to modules/bit/src/lib/index_wbtest.mbt diff --git a/src/lib/init.mbt b/modules/bit/src/lib/init.mbt similarity index 100% rename from src/lib/init.mbt rename to modules/bit/src/lib/init.mbt diff --git a/src/lib/init_test.mbt b/modules/bit/src/lib/init_test.mbt similarity index 100% rename from src/lib/init_test.mbt rename to modules/bit/src/lib/init_test.mbt diff --git a/src/lib/js_api_exports.mbt b/modules/bit/src/lib/js_api_exports.mbt similarity index 100% rename from src/lib/js_api_exports.mbt rename to modules/bit/src/lib/js_api_exports.mbt diff --git a/src/lib/js_export_types.mbt b/modules/bit/src/lib/js_export_types.mbt similarity index 100% rename from src/lib/js_export_types.mbt rename to modules/bit/src/lib/js_export_types.mbt diff --git a/src/lib/js_exports_wbtest.mbt b/modules/bit/src/lib/js_exports_wbtest.mbt similarity index 100% rename from src/lib/js_exports_wbtest.mbt rename to modules/bit/src/lib/js_exports_wbtest.mbt diff --git a/src/lib/js_host_bridge.mbt b/modules/bit/src/lib/js_host_bridge.mbt similarity index 100% rename from src/lib/js_host_bridge.mbt rename to modules/bit/src/lib/js_host_bridge.mbt diff --git a/src/lib/js_transport_bridge.mbt b/modules/bit/src/lib/js_transport_bridge.mbt similarity index 100% rename from src/lib/js_transport_bridge.mbt rename to modules/bit/src/lib/js_transport_bridge.mbt diff --git a/src/lib/lfs.mbt b/modules/bit/src/lib/lfs.mbt similarity index 100% rename from src/lib/lfs.mbt rename to modules/bit/src/lib/lfs.mbt diff --git a/src/lib/lfs_wbtest.mbt b/modules/bit/src/lib/lfs_wbtest.mbt similarity index 100% rename from src/lib/lfs_wbtest.mbt rename to modules/bit/src/lib/lfs_wbtest.mbt diff --git a/src/lib/log.mbt b/modules/bit/src/lib/log.mbt similarity index 100% rename from src/lib/log.mbt rename to modules/bit/src/lib/log.mbt diff --git a/src/lib/merge.mbt b/modules/bit/src/lib/merge.mbt similarity index 100% rename from src/lib/merge.mbt rename to modules/bit/src/lib/merge.mbt diff --git a/src/lib/merge_base.mbt b/modules/bit/src/lib/merge_base.mbt similarity index 100% rename from src/lib/merge_base.mbt rename to modules/bit/src/lib/merge_base.mbt diff --git a/src/lib/merge_base_test.mbt b/modules/bit/src/lib/merge_base_test.mbt similarity index 100% rename from src/lib/merge_base_test.mbt rename to modules/bit/src/lib/merge_base_test.mbt diff --git a/src/lib/merge_test.mbt b/modules/bit/src/lib/merge_test.mbt similarity index 100% rename from src/lib/merge_test.mbt rename to modules/bit/src/lib/merge_test.mbt diff --git a/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg similarity index 100% rename from src/lib/moon.pkg rename to modules/bit/src/lib/moon.pkg diff --git a/src/lib/native/bench_worktree_entry_wbtest.mbt b/modules/bit/src/lib/native/bench_worktree_entry_wbtest.mbt similarity index 100% rename from src/lib/native/bench_worktree_entry_wbtest.mbt rename to modules/bit/src/lib/native/bench_worktree_entry_wbtest.mbt diff --git a/src/lib/native/filter.mbt b/modules/bit/src/lib/native/filter.mbt similarity index 100% rename from src/lib/native/filter.mbt rename to modules/bit/src/lib/native/filter.mbt diff --git a/src/lib/native/ignore_async_test.mbt b/modules/bit/src/lib/native/ignore_async_test.mbt similarity index 100% rename from src/lib/native/ignore_async_test.mbt rename to modules/bit/src/lib/native/ignore_async_test.mbt diff --git a/src/lib/native/lfs_client.mbt b/modules/bit/src/lib/native/lfs_client.mbt similarity index 100% rename from src/lib/native/lfs_client.mbt rename to modules/bit/src/lib/native/lfs_client.mbt diff --git a/src/lib/native/lfs_client_wbtest.mbt b/modules/bit/src/lib/native/lfs_client_wbtest.mbt similarity index 100% rename from src/lib/native/lfs_client_wbtest.mbt rename to modules/bit/src/lib/native/lfs_client_wbtest.mbt diff --git a/src/lib/native/lfs_prefetch.mbt b/modules/bit/src/lib/native/lfs_prefetch.mbt similarity index 100% rename from src/lib/native/lfs_prefetch.mbt rename to modules/bit/src/lib/native/lfs_prefetch.mbt diff --git a/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg similarity index 100% rename from src/lib/native/moon.pkg rename to modules/bit/src/lib/native/moon.pkg diff --git a/src/lib/native/pkg.generated.mbti b/modules/bit/src/lib/native/pkg.generated.mbti similarity index 100% rename from src/lib/native/pkg.generated.mbti rename to modules/bit/src/lib/native/pkg.generated.mbti diff --git a/src/lib/native/promisor.mbt b/modules/bit/src/lib/native/promisor.mbt similarity index 100% rename from src/lib/native/promisor.mbt rename to modules/bit/src/lib/native/promisor.mbt diff --git a/src/lib/native/remote_ref.mbt b/modules/bit/src/lib/native/remote_ref.mbt similarity index 100% rename from src/lib/native/remote_ref.mbt rename to modules/bit/src/lib/native/remote_ref.mbt diff --git a/src/lib/native/sync_http.mbt b/modules/bit/src/lib/native/sync_http.mbt similarity index 100% rename from src/lib/native/sync_http.mbt rename to modules/bit/src/lib/native/sync_http.mbt diff --git a/src/lib/native/worktree_modes.mbt b/modules/bit/src/lib/native/worktree_modes.mbt similarity index 100% rename from src/lib/native/worktree_modes.mbt rename to modules/bit/src/lib/native/worktree_modes.mbt diff --git a/src/lib/object_db.mbt b/modules/bit/src/lib/object_db.mbt similarity index 100% rename from src/lib/object_db.mbt rename to modules/bit/src/lib/object_db.mbt diff --git a/src/lib/pack_collect.mbt b/modules/bit/src/lib/pack_collect.mbt similarity index 100% rename from src/lib/pack_collect.mbt rename to modules/bit/src/lib/pack_collect.mbt diff --git a/src/lib/pack_collect_test.mbt b/modules/bit/src/lib/pack_collect_test.mbt similarity index 100% rename from src/lib/pack_collect_test.mbt rename to modules/bit/src/lib/pack_collect_test.mbt diff --git a/src/lib/path.mbt b/modules/bit/src/lib/path.mbt similarity index 100% rename from src/lib/path.mbt rename to modules/bit/src/lib/path.mbt diff --git a/src/lib/pkg.generated.mbti b/modules/bit/src/lib/pkg.generated.mbti similarity index 100% rename from src/lib/pkg.generated.mbti rename to modules/bit/src/lib/pkg.generated.mbti diff --git a/src/lib/profile.mbt b/modules/bit/src/lib/profile.mbt similarity index 100% rename from src/lib/profile.mbt rename to modules/bit/src/lib/profile.mbt diff --git a/src/lib/promisor.mbt b/modules/bit/src/lib/promisor.mbt similarity index 100% rename from src/lib/promisor.mbt rename to modules/bit/src/lib/promisor.mbt diff --git a/src/lib/prune_test.mbt b/modules/bit/src/lib/prune_test.mbt similarity index 100% rename from src/lib/prune_test.mbt rename to modules/bit/src/lib/prune_test.mbt diff --git a/src/lib/pure_runtime_test.mbt b/modules/bit/src/lib/pure_runtime_test.mbt similarity index 100% rename from src/lib/pure_runtime_test.mbt rename to modules/bit/src/lib/pure_runtime_test.mbt diff --git a/src/lib/rebase.mbt b/modules/bit/src/lib/rebase.mbt similarity index 100% rename from src/lib/rebase.mbt rename to modules/bit/src/lib/rebase.mbt diff --git a/src/lib/rebase_interactive.mbt b/modules/bit/src/lib/rebase_interactive.mbt similarity index 100% rename from src/lib/rebase_interactive.mbt rename to modules/bit/src/lib/rebase_interactive.mbt diff --git a/src/lib/rebase_interactive_wbtest.mbt b/modules/bit/src/lib/rebase_interactive_wbtest.mbt similarity index 100% rename from src/lib/rebase_interactive_wbtest.mbt rename to modules/bit/src/lib/rebase_interactive_wbtest.mbt diff --git a/src/lib/rebase_test.mbt b/modules/bit/src/lib/rebase_test.mbt similarity index 100% rename from src/lib/rebase_test.mbt rename to modules/bit/src/lib/rebase_test.mbt diff --git a/src/lib/receive_pack.mbt b/modules/bit/src/lib/receive_pack.mbt similarity index 100% rename from src/lib/receive_pack.mbt rename to modules/bit/src/lib/receive_pack.mbt diff --git a/src/lib/receive_pack_test.mbt b/modules/bit/src/lib/receive_pack_test.mbt similarity index 100% rename from src/lib/receive_pack_test.mbt rename to modules/bit/src/lib/receive_pack_test.mbt diff --git a/src/lib/reflog.mbt b/modules/bit/src/lib/reflog.mbt similarity index 100% rename from src/lib/reflog.mbt rename to modules/bit/src/lib/reflog.mbt diff --git a/src/lib/refs_store.mbt b/modules/bit/src/lib/refs_store.mbt similarity index 100% rename from src/lib/refs_store.mbt rename to modules/bit/src/lib/refs_store.mbt diff --git a/src/lib/remote_config.mbt b/modules/bit/src/lib/remote_config.mbt similarity index 100% rename from src/lib/remote_config.mbt rename to modules/bit/src/lib/remote_config.mbt diff --git a/src/lib/remote_helpers.mbt b/modules/bit/src/lib/remote_helpers.mbt similarity index 100% rename from src/lib/remote_helpers.mbt rename to modules/bit/src/lib/remote_helpers.mbt diff --git a/src/lib/remote_path.mbt b/modules/bit/src/lib/remote_path.mbt similarity index 100% rename from src/lib/remote_path.mbt rename to modules/bit/src/lib/remote_path.mbt diff --git a/src/lib/remote_path_test.mbt b/modules/bit/src/lib/remote_path_test.mbt similarity index 100% rename from src/lib/remote_path_test.mbt rename to modules/bit/src/lib/remote_path_test.mbt diff --git a/src/lib/remote_shorthand.mbt b/modules/bit/src/lib/remote_shorthand.mbt similarity index 100% rename from src/lib/remote_shorthand.mbt rename to modules/bit/src/lib/remote_shorthand.mbt diff --git a/src/lib/rename_detect.mbt b/modules/bit/src/lib/rename_detect.mbt similarity index 100% rename from src/lib/rename_detect.mbt rename to modules/bit/src/lib/rename_detect.mbt diff --git a/src/lib/reset.mbt b/modules/bit/src/lib/reset.mbt similarity index 100% rename from src/lib/reset.mbt rename to modules/bit/src/lib/reset.mbt diff --git a/src/lib/reset_test.mbt b/modules/bit/src/lib/reset_test.mbt similarity index 100% rename from src/lib/reset_test.mbt rename to modules/bit/src/lib/reset_test.mbt diff --git a/src/lib/rev_list_helpers.mbt b/modules/bit/src/lib/rev_list_helpers.mbt similarity index 100% rename from src/lib/rev_list_helpers.mbt rename to modules/bit/src/lib/rev_list_helpers.mbt diff --git a/src/lib/revparse.mbt b/modules/bit/src/lib/revparse.mbt similarity index 100% rename from src/lib/revparse.mbt rename to modules/bit/src/lib/revparse.mbt diff --git a/src/lib/revparse_test.mbt b/modules/bit/src/lib/revparse_test.mbt similarity index 100% rename from src/lib/revparse_test.mbt rename to modules/bit/src/lib/revparse_test.mbt diff --git a/src/lib/shallow_sparse_test.mbt b/modules/bit/src/lib/shallow_sparse_test.mbt similarity index 100% rename from src/lib/shallow_sparse_test.mbt rename to modules/bit/src/lib/shallow_sparse_test.mbt diff --git a/src/lib/smart_http.mbt b/modules/bit/src/lib/smart_http.mbt similarity index 100% rename from src/lib/smart_http.mbt rename to modules/bit/src/lib/smart_http.mbt diff --git a/src/lib/smart_http_test.mbt b/modules/bit/src/lib/smart_http_test.mbt similarity index 100% rename from src/lib/smart_http_test.mbt rename to modules/bit/src/lib/smart_http_test.mbt diff --git a/src/lib/sparse.mbt b/modules/bit/src/lib/sparse.mbt similarity index 100% rename from src/lib/sparse.mbt rename to modules/bit/src/lib/sparse.mbt diff --git a/src/lib/sparse_wbtest.mbt b/modules/bit/src/lib/sparse_wbtest.mbt similarity index 100% rename from src/lib/sparse_wbtest.mbt rename to modules/bit/src/lib/sparse_wbtest.mbt diff --git a/src/lib/stash.mbt b/modules/bit/src/lib/stash.mbt similarity index 100% rename from src/lib/stash.mbt rename to modules/bit/src/lib/stash.mbt diff --git a/src/lib/stash_test.mbt b/modules/bit/src/lib/stash_test.mbt similarity index 100% rename from src/lib/stash_test.mbt rename to modules/bit/src/lib/stash_test.mbt diff --git a/src/lib/status_text.mbt b/modules/bit/src/lib/status_text.mbt similarity index 100% rename from src/lib/status_text.mbt rename to modules/bit/src/lib/status_text.mbt diff --git a/src/lib/status_walk.mbt b/modules/bit/src/lib/status_walk.mbt similarity index 100% rename from src/lib/status_walk.mbt rename to modules/bit/src/lib/status_walk.mbt diff --git a/src/lib/subdir.mbt b/modules/bit/src/lib/subdir.mbt similarity index 100% rename from src/lib/subdir.mbt rename to modules/bit/src/lib/subdir.mbt diff --git a/src/lib/subdir_push_test.mbt b/modules/bit/src/lib/subdir_push_test.mbt similarity index 100% rename from src/lib/subdir_push_test.mbt rename to modules/bit/src/lib/subdir_push_test.mbt diff --git a/src/lib/subdir_test.mbt b/modules/bit/src/lib/subdir_test.mbt similarity index 100% rename from src/lib/subdir_test.mbt rename to modules/bit/src/lib/subdir_test.mbt diff --git a/src/lib/tree_mode.mbt b/modules/bit/src/lib/tree_mode.mbt similarity index 100% rename from src/lib/tree_mode.mbt rename to modules/bit/src/lib/tree_mode.mbt diff --git a/src/lib/tree_ops.mbt b/modules/bit/src/lib/tree_ops.mbt similarity index 100% rename from src/lib/tree_ops.mbt rename to modules/bit/src/lib/tree_ops.mbt diff --git a/src/lib/tree_path.mbt b/modules/bit/src/lib/tree_path.mbt similarity index 100% rename from src/lib/tree_path.mbt rename to modules/bit/src/lib/tree_path.mbt diff --git a/src/lib/upload_pack.mbt b/modules/bit/src/lib/upload_pack.mbt similarity index 100% rename from src/lib/upload_pack.mbt rename to modules/bit/src/lib/upload_pack.mbt diff --git a/src/lib/upload_pack_test.mbt b/modules/bit/src/lib/upload_pack_test.mbt similarity index 100% rename from src/lib/upload_pack_test.mbt rename to modules/bit/src/lib/upload_pack_test.mbt diff --git a/src/lib/worktree.mbt b/modules/bit/src/lib/worktree.mbt similarity index 100% rename from src/lib/worktree.mbt rename to modules/bit/src/lib/worktree.mbt diff --git a/src/lib/worktree_admin.mbt b/modules/bit/src/lib/worktree_admin.mbt similarity index 100% rename from src/lib/worktree_admin.mbt rename to modules/bit/src/lib/worktree_admin.mbt diff --git a/src/lib/worktree_admin_test.mbt b/modules/bit/src/lib/worktree_admin_test.mbt similarity index 100% rename from src/lib/worktree_admin_test.mbt rename to modules/bit/src/lib/worktree_admin_test.mbt diff --git a/src/lib/worktree_test.mbt b/modules/bit/src/lib/worktree_test.mbt similarity index 100% rename from src/lib/worktree_test.mbt rename to modules/bit/src/lib/worktree_test.mbt diff --git a/src/moon.pkg b/modules/bit/src/moon.pkg similarity index 100% rename from src/moon.pkg rename to modules/bit/src/moon.pkg diff --git a/src/object/bench_test.mbt b/modules/bit/src/object/bench_test.mbt similarity index 100% rename from src/object/bench_test.mbt rename to modules/bit/src/object/bench_test.mbt diff --git a/src/object/hash_algorithm.mbt b/modules/bit/src/object/hash_algorithm.mbt similarity index 100% rename from src/object/hash_algorithm.mbt rename to modules/bit/src/object/hash_algorithm.mbt diff --git a/src/object/hasher.mbt b/modules/bit/src/object/hasher.mbt similarity index 100% rename from src/object/hasher.mbt rename to modules/bit/src/object/hasher.mbt diff --git a/src/object/moon.pkg b/modules/bit/src/object/moon.pkg similarity index 100% rename from src/object/moon.pkg rename to modules/bit/src/object/moon.pkg diff --git a/src/object/object.mbt b/modules/bit/src/object/object.mbt similarity index 100% rename from src/object/object.mbt rename to modules/bit/src/object/object.mbt diff --git a/src/object/object_test.mbt b/modules/bit/src/object/object_test.mbt similarity index 100% rename from src/object/object_test.mbt rename to modules/bit/src/object/object_test.mbt diff --git a/src/object/pkg.generated.mbti b/modules/bit/src/object/pkg.generated.mbti similarity index 100% rename from src/object/pkg.generated.mbti rename to modules/bit/src/object/pkg.generated.mbti diff --git a/src/object/sha1.mbt b/modules/bit/src/object/sha1.mbt similarity index 100% rename from src/object/sha1.mbt rename to modules/bit/src/object/sha1.mbt diff --git a/src/object/sha1_test.mbt b/modules/bit/src/object/sha1_test.mbt similarity index 100% rename from src/object/sha1_test.mbt rename to modules/bit/src/object/sha1_test.mbt diff --git a/src/object/sha256.mbt b/modules/bit/src/object/sha256.mbt similarity index 100% rename from src/object/sha256.mbt rename to modules/bit/src/object/sha256.mbt diff --git a/src/object/sha256_test.mbt b/modules/bit/src/object/sha256_test.mbt similarity index 100% rename from src/object/sha256_test.mbt rename to modules/bit/src/object/sha256_test.mbt diff --git a/src/object/types.mbt b/modules/bit/src/object/types.mbt similarity index 100% rename from src/object/types.mbt rename to modules/bit/src/object/types.mbt diff --git a/src/osfs/moon.pkg b/modules/bit/src/osfs/moon.pkg similarity index 100% rename from src/osfs/moon.pkg rename to modules/bit/src/osfs/moon.pkg diff --git a/src/osfs/osfs.mbt b/modules/bit/src/osfs/osfs.mbt similarity index 100% rename from src/osfs/osfs.mbt rename to modules/bit/src/osfs/osfs.mbt diff --git a/src/osfs/pkg.generated.mbti b/modules/bit/src/osfs/pkg.generated.mbti similarity index 100% rename from src/osfs/pkg.generated.mbti rename to modules/bit/src/osfs/pkg.generated.mbti diff --git a/src/pack/bench_profile_test.mbt b/modules/bit/src/pack/bench_profile_test.mbt similarity index 100% rename from src/pack/bench_profile_test.mbt rename to modules/bit/src/pack/bench_profile_test.mbt diff --git a/src/pack/bench_test.mbt b/modules/bit/src/pack/bench_test.mbt similarity index 100% rename from src/pack/bench_test.mbt rename to modules/bit/src/pack/bench_test.mbt diff --git a/src/pack/bit_oracle_pack_test.mbt b/modules/bit/src/pack/bit_oracle_pack_test.mbt similarity index 100% rename from src/pack/bit_oracle_pack_test.mbt rename to modules/bit/src/pack/bit_oracle_pack_test.mbt diff --git a/src/pack/gen_packfile.mbt b/modules/bit/src/pack/gen_packfile.mbt similarity index 100% rename from src/pack/gen_packfile.mbt rename to modules/bit/src/pack/gen_packfile.mbt diff --git a/src/pack/moon.pkg b/modules/bit/src/pack/moon.pkg similarity index 100% rename from src/pack/moon.pkg rename to modules/bit/src/pack/moon.pkg diff --git a/src/pack/pack_index_write.mbt b/modules/bit/src/pack/pack_index_write.mbt similarity index 100% rename from src/pack/pack_index_write.mbt rename to modules/bit/src/pack/pack_index_write.mbt diff --git a/src/pack/pack_index_write_test.mbt b/modules/bit/src/pack/pack_index_write_test.mbt similarity index 100% rename from src/pack/pack_index_write_test.mbt rename to modules/bit/src/pack/pack_index_write_test.mbt diff --git a/src/pack/packfile.mbt b/modules/bit/src/pack/packfile.mbt similarity index 100% rename from src/pack/packfile.mbt rename to modules/bit/src/pack/packfile.mbt diff --git a/src/pack/packfile_fixture_test.mbt b/modules/bit/src/pack/packfile_fixture_test.mbt similarity index 100% rename from src/pack/packfile_fixture_test.mbt rename to modules/bit/src/pack/packfile_fixture_test.mbt diff --git a/src/pack/packfile_parse.mbt b/modules/bit/src/pack/packfile_parse.mbt similarity index 100% rename from src/pack/packfile_parse.mbt rename to modules/bit/src/pack/packfile_parse.mbt diff --git a/src/pack/packfile_parse_test.mbt b/modules/bit/src/pack/packfile_parse_test.mbt similarity index 100% rename from src/pack/packfile_parse_test.mbt rename to modules/bit/src/pack/packfile_parse_test.mbt diff --git a/src/pack/packfile_test.mbt b/modules/bit/src/pack/packfile_test.mbt similarity index 100% rename from src/pack/packfile_test.mbt rename to modules/bit/src/pack/packfile_test.mbt diff --git a/src/pack/packfile_wbtest.mbt b/modules/bit/src/pack/packfile_wbtest.mbt similarity index 100% rename from src/pack/packfile_wbtest.mbt rename to modules/bit/src/pack/packfile_wbtest.mbt diff --git a/src/pack/pkg.generated.mbti b/modules/bit/src/pack/pkg.generated.mbti similarity index 100% rename from src/pack/pkg.generated.mbti rename to modules/bit/src/pack/pkg.generated.mbti diff --git a/src/pack_ops/moon.pkg b/modules/bit/src/pack_ops/moon.pkg similarity index 100% rename from src/pack_ops/moon.pkg rename to modules/bit/src/pack_ops/moon.pkg diff --git a/src/pack_ops/pack.mbt b/modules/bit/src/pack_ops/pack.mbt similarity index 100% rename from src/pack_ops/pack.mbt rename to modules/bit/src/pack_ops/pack.mbt diff --git a/src/pack_ops/pack_test.mbt b/modules/bit/src/pack_ops/pack_test.mbt similarity index 100% rename from src/pack_ops/pack_test.mbt rename to modules/bit/src/pack_ops/pack_test.mbt diff --git a/src/pack_ops/pkg.generated.mbti b/modules/bit/src/pack_ops/pkg.generated.mbti similarity index 100% rename from src/pack_ops/pkg.generated.mbti rename to modules/bit/src/pack_ops/pkg.generated.mbti diff --git a/src/pkg.generated.mbti b/modules/bit/src/pkg.generated.mbti similarity index 100% rename from src/pkg.generated.mbti rename to modules/bit/src/pkg.generated.mbti diff --git a/src/protocol/bench_test.mbt b/modules/bit/src/protocol/bench_test.mbt similarity index 100% rename from src/protocol/bench_test.mbt rename to modules/bit/src/protocol/bench_test.mbt diff --git a/src/protocol/moon.pkg b/modules/bit/src/protocol/moon.pkg similarity index 100% rename from src/protocol/moon.pkg rename to modules/bit/src/protocol/moon.pkg diff --git a/src/protocol/pkg.generated.mbti b/modules/bit/src/protocol/pkg.generated.mbti similarity index 100% rename from src/protocol/pkg.generated.mbti rename to modules/bit/src/protocol/pkg.generated.mbti diff --git a/src/protocol/pktline.mbt b/modules/bit/src/protocol/pktline.mbt similarity index 100% rename from src/protocol/pktline.mbt rename to modules/bit/src/protocol/pktline.mbt diff --git a/src/protocol/pktline_test.mbt b/modules/bit/src/protocol/pktline_test.mbt similarity index 100% rename from src/protocol/pktline_test.mbt rename to modules/bit/src/protocol/pktline_test.mbt diff --git a/src/protocol/remote_common.mbt b/modules/bit/src/protocol/remote_common.mbt similarity index 100% rename from src/protocol/remote_common.mbt rename to modules/bit/src/protocol/remote_common.mbt diff --git a/src/protocol/remote_test.mbt b/modules/bit/src/protocol/remote_test.mbt similarity index 100% rename from src/protocol/remote_test.mbt rename to modules/bit/src/protocol/remote_test.mbt diff --git a/src/protocol/transport.mbt b/modules/bit/src/protocol/transport.mbt similarity index 100% rename from src/protocol/transport.mbt rename to modules/bit/src/protocol/transport.mbt diff --git a/src/protocol/upload_pack_common.mbt b/modules/bit/src/protocol/upload_pack_common.mbt similarity index 100% rename from src/protocol/upload_pack_common.mbt rename to modules/bit/src/protocol/upload_pack_common.mbt diff --git a/src/protocol/upload_pack_http_common.mbt b/modules/bit/src/protocol/upload_pack_http_common.mbt similarity index 100% rename from src/protocol/upload_pack_http_common.mbt rename to modules/bit/src/protocol/upload_pack_http_common.mbt diff --git a/src/protocol/upload_pack_http_wbtest.mbt b/modules/bit/src/protocol/upload_pack_http_wbtest.mbt similarity index 100% rename from src/protocol/upload_pack_http_wbtest.mbt rename to modules/bit/src/protocol/upload_pack_http_wbtest.mbt diff --git a/src/protocol/upload_pack_remote_wasm.mbt b/modules/bit/src/protocol/upload_pack_remote_wasm.mbt similarity index 100% rename from src/protocol/upload_pack_remote_wasm.mbt rename to modules/bit/src/protocol/upload_pack_remote_wasm.mbt diff --git a/src/protocol/upload_pack_remote_wasm_wbtest.mbt b/modules/bit/src/protocol/upload_pack_remote_wasm_wbtest.mbt similarity index 100% rename from src/protocol/upload_pack_remote_wasm_wbtest.mbt rename to modules/bit/src/protocol/upload_pack_remote_wasm_wbtest.mbt diff --git a/src/refs/bench_test.mbt b/modules/bit/src/refs/bench_test.mbt similarity index 100% rename from src/refs/bench_test.mbt rename to modules/bit/src/refs/bench_test.mbt diff --git a/src/refs/moon.pkg b/modules/bit/src/refs/moon.pkg similarity index 100% rename from src/refs/moon.pkg rename to modules/bit/src/refs/moon.pkg diff --git a/src/refs/pkg.generated.mbti b/modules/bit/src/refs/pkg.generated.mbti similarity index 100% rename from src/refs/pkg.generated.mbti rename to modules/bit/src/refs/pkg.generated.mbti diff --git a/src/refs/refs_store.mbt b/modules/bit/src/refs/refs_store.mbt similarity index 100% rename from src/refs/refs_store.mbt rename to modules/bit/src/refs/refs_store.mbt diff --git a/src/refs/refs_store_test.mbt b/modules/bit/src/refs/refs_store_test.mbt similarity index 100% rename from src/refs/refs_store_test.mbt rename to modules/bit/src/refs/refs_store_test.mbt diff --git a/src/reftable/moon.pkg b/modules/bit/src/reftable/moon.pkg similarity index 100% rename from src/reftable/moon.pkg rename to modules/bit/src/reftable/moon.pkg diff --git a/src/reftable/pkg.generated.mbti b/modules/bit/src/reftable/pkg.generated.mbti similarity index 100% rename from src/reftable/pkg.generated.mbti rename to modules/bit/src/reftable/pkg.generated.mbti diff --git a/src/reftable/reftable.mbt b/modules/bit/src/reftable/reftable.mbt similarity index 100% rename from src/reftable/reftable.mbt rename to modules/bit/src/reftable/reftable.mbt diff --git a/src/reftable/reftable_wbtest.mbt b/modules/bit/src/reftable/reftable_wbtest.mbt similarity index 100% rename from src/reftable/reftable_wbtest.mbt rename to modules/bit/src/reftable/reftable_wbtest.mbt diff --git a/src/reftable/stack.mbt b/modules/bit/src/reftable/stack.mbt similarity index 100% rename from src/reftable/stack.mbt rename to modules/bit/src/reftable/stack.mbt diff --git a/src/reftable/writer.mbt b/modules/bit/src/reftable/writer.mbt similarity index 100% rename from src/reftable/writer.mbt rename to modules/bit/src/reftable/writer.mbt diff --git a/src/remote/moon.pkg b/modules/bit/src/remote/moon.pkg similarity index 100% rename from src/remote/moon.pkg rename to modules/bit/src/remote/moon.pkg diff --git a/src/remote/pkg.generated.mbti b/modules/bit/src/remote/pkg.generated.mbti similarity index 100% rename from src/remote/pkg.generated.mbti rename to modules/bit/src/remote/pkg.generated.mbti diff --git a/src/remote/remote_path.mbt b/modules/bit/src/remote/remote_path.mbt similarity index 100% rename from src/remote/remote_path.mbt rename to modules/bit/src/remote/remote_path.mbt diff --git a/src/remote/remote_path_test.mbt b/modules/bit/src/remote/remote_path_test.mbt similarity index 100% rename from src/remote/remote_path_test.mbt rename to modules/bit/src/remote/remote_path_test.mbt diff --git a/src/remote/remote_shorthand.mbt b/modules/bit/src/remote/remote_shorthand.mbt similarity index 100% rename from src/remote/remote_shorthand.mbt rename to modules/bit/src/remote/remote_shorthand.mbt diff --git a/src/remote/remote_shorthand_test.mbt b/modules/bit/src/remote/remote_shorthand_test.mbt similarity index 100% rename from src/remote/remote_shorthand_test.mbt rename to modules/bit/src/remote/remote_shorthand_test.mbt diff --git a/src/repo/core.mbt b/modules/bit/src/repo/core.mbt similarity index 100% rename from src/repo/core.mbt rename to modules/bit/src/repo/core.mbt diff --git a/src/repo/materialize.mbt b/modules/bit/src/repo/materialize.mbt similarity index 100% rename from src/repo/materialize.mbt rename to modules/bit/src/repo/materialize.mbt diff --git a/src/repo/materialize_wbtest.mbt b/modules/bit/src/repo/materialize_wbtest.mbt similarity index 100% rename from src/repo/materialize_wbtest.mbt rename to modules/bit/src/repo/materialize_wbtest.mbt diff --git a/src/repo/moon.pkg b/modules/bit/src/repo/moon.pkg similarity index 100% rename from src/repo/moon.pkg rename to modules/bit/src/repo/moon.pkg diff --git a/src/repo/pkg.generated.mbti b/modules/bit/src/repo/pkg.generated.mbti similarity index 100% rename from src/repo/pkg.generated.mbti rename to modules/bit/src/repo/pkg.generated.mbti diff --git a/src/repo_ops/moon.pkg b/modules/bit/src/repo_ops/moon.pkg similarity index 100% rename from src/repo_ops/moon.pkg rename to modules/bit/src/repo_ops/moon.pkg diff --git a/src/repo_ops/pkg.generated.mbti b/modules/bit/src/repo_ops/pkg.generated.mbti similarity index 100% rename from src/repo_ops/pkg.generated.mbti rename to modules/bit/src/repo_ops/pkg.generated.mbti diff --git a/src/repo_ops/repo_ops.mbt b/modules/bit/src/repo_ops/repo_ops.mbt similarity index 100% rename from src/repo_ops/repo_ops.mbt rename to modules/bit/src/repo_ops/repo_ops.mbt diff --git a/src/repo_ops/revparse_ops.mbt b/modules/bit/src/repo_ops/revparse_ops.mbt similarity index 100% rename from src/repo_ops/revparse_ops.mbt rename to modules/bit/src/repo_ops/revparse_ops.mbt diff --git a/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg similarity index 100% rename from src/runtime/moon.pkg rename to modules/bit/src/runtime/moon.pkg diff --git a/src/runtime/pkg.generated.mbti b/modules/bit/src/runtime/pkg.generated.mbti similarity index 100% rename from src/runtime/pkg.generated.mbti rename to modules/bit/src/runtime/pkg.generated.mbti diff --git a/src/runtime/storage_runtime.mbt b/modules/bit/src/runtime/storage_runtime.mbt similarity index 100% rename from src/runtime/storage_runtime.mbt rename to modules/bit/src/runtime/storage_runtime.mbt diff --git a/src/runtime/storage_runtime_wbtest.mbt b/modules/bit/src/runtime/storage_runtime_wbtest.mbt similarity index 100% rename from src/runtime/storage_runtime_wbtest.mbt rename to modules/bit/src/runtime/storage_runtime_wbtest.mbt diff --git a/src/string_utils/moon.pkg b/modules/bit/src/string_utils/moon.pkg similarity index 100% rename from src/string_utils/moon.pkg rename to modules/bit/src/string_utils/moon.pkg diff --git a/src/string_utils/pkg.generated.mbti b/modules/bit/src/string_utils/pkg.generated.mbti similarity index 100% rename from src/string_utils/pkg.generated.mbti rename to modules/bit/src/string_utils/pkg.generated.mbti diff --git a/src/string_utils/string_utils.mbt b/modules/bit/src/string_utils/string_utils.mbt similarity index 100% rename from src/string_utils/string_utils.mbt rename to modules/bit/src/string_utils/string_utils.mbt diff --git a/src/string_utils/string_utils_test.mbt b/modules/bit/src/string_utils/string_utils_test.mbt similarity index 100% rename from src/string_utils/string_utils_test.mbt rename to modules/bit/src/string_utils/string_utils_test.mbt diff --git a/src/tar/moon.pkg b/modules/bit/src/tar/moon.pkg similarity index 100% rename from src/tar/moon.pkg rename to modules/bit/src/tar/moon.pkg diff --git a/src/tar/pkg.generated.mbti b/modules/bit/src/tar/pkg.generated.mbti similarity index 100% rename from src/tar/pkg.generated.mbti rename to modules/bit/src/tar/pkg.generated.mbti diff --git a/src/tar/tar.mbt b/modules/bit/src/tar/tar.mbt similarity index 100% rename from src/tar/tar.mbt rename to modules/bit/src/tar/tar.mbt diff --git a/src/tar/tar_test.mbt b/modules/bit/src/tar/tar_test.mbt similarity index 100% rename from src/tar/tar_test.mbt rename to modules/bit/src/tar/tar_test.mbt diff --git a/src/tests/git_compat_test.mbt b/modules/bit/src/tests/git_compat_test.mbt similarity index 100% rename from src/tests/git_compat_test.mbt rename to modules/bit/src/tests/git_compat_test.mbt diff --git a/src/tests/integration_test.mbt b/modules/bit/src/tests/integration_test.mbt similarity index 100% rename from src/tests/integration_test.mbt rename to modules/bit/src/tests/integration_test.mbt diff --git a/src/tests/moon.pkg b/modules/bit/src/tests/moon.pkg similarity index 100% rename from src/tests/moon.pkg rename to modules/bit/src/tests/moon.pkg diff --git a/src/tests/pkg.generated.mbti b/modules/bit/src/tests/pkg.generated.mbti similarity index 100% rename from src/tests/pkg.generated.mbti rename to modules/bit/src/tests/pkg.generated.mbti diff --git a/src/tests/scripts/test_with_git.sh b/modules/bit/src/tests/scripts/test_with_git.sh similarity index 100% rename from src/tests/scripts/test_with_git.sh rename to modules/bit/src/tests/scripts/test_with_git.sh diff --git a/src/tests/scripts/verify_packfile.sh b/modules/bit/src/tests/scripts/verify_packfile.sh similarity index 100% rename from src/tests/scripts/verify_packfile.sh rename to modules/bit/src/tests/scripts/verify_packfile.sh diff --git a/src/tests/upload_pack_fixture_test.mbt b/modules/bit/src/tests/upload_pack_fixture_test.mbt similarity index 100% rename from src/tests/upload_pack_fixture_test.mbt rename to modules/bit/src/tests/upload_pack_fixture_test.mbt diff --git a/src/top.mbt b/modules/bit/src/top.mbt similarity index 100% rename from src/top.mbt rename to modules/bit/src/top.mbt diff --git a/src/trailers/moon.pkg b/modules/bit/src/trailers/moon.pkg similarity index 100% rename from src/trailers/moon.pkg rename to modules/bit/src/trailers/moon.pkg diff --git a/src/trailers/pkg.generated.mbti b/modules/bit/src/trailers/pkg.generated.mbti similarity index 100% rename from src/trailers/pkg.generated.mbti rename to modules/bit/src/trailers/pkg.generated.mbti diff --git a/src/trailers/trailers.mbt b/modules/bit/src/trailers/trailers.mbt similarity index 100% rename from src/trailers/trailers.mbt rename to modules/bit/src/trailers/trailers.mbt diff --git a/src/trailers/trailers_test.mbt b/modules/bit/src/trailers/trailers_test.mbt similarity index 100% rename from src/trailers/trailers_test.mbt rename to modules/bit/src/trailers/trailers_test.mbt diff --git a/src/types/contracts.mbt b/modules/bit/src/types/contracts.mbt similarity index 100% rename from src/types/contracts.mbt rename to modules/bit/src/types/contracts.mbt diff --git a/src/types/git_types.mbt b/modules/bit/src/types/git_types.mbt similarity index 100% rename from src/types/git_types.mbt rename to modules/bit/src/types/git_types.mbt diff --git a/src/types/moon.pkg b/modules/bit/src/types/moon.pkg similarity index 100% rename from src/types/moon.pkg rename to modules/bit/src/types/moon.pkg diff --git a/src/types/pkg.generated.mbti b/modules/bit/src/types/pkg.generated.mbti similarity index 100% rename from src/types/pkg.generated.mbti rename to modules/bit/src/types/pkg.generated.mbti diff --git a/src/vfs/bench_real_test.mbt b/modules/bit/src/vfs/bench_real_test.mbt similarity index 100% rename from src/vfs/bench_real_test.mbt rename to modules/bit/src/vfs/bench_real_test.mbt diff --git a/src/vfs/bench_test.mbt b/modules/bit/src/vfs/bench_test.mbt similarity index 100% rename from src/vfs/bench_test.mbt rename to modules/bit/src/vfs/bench_test.mbt diff --git a/src/vfs/cache.mbt b/modules/bit/src/vfs/cache.mbt similarity index 100% rename from src/vfs/cache.mbt rename to modules/bit/src/vfs/cache.mbt diff --git a/src/vfs/fs.mbt b/modules/bit/src/vfs/fs.mbt similarity index 100% rename from src/vfs/fs.mbt rename to modules/bit/src/vfs/fs.mbt diff --git a/src/vfs/fs_test.mbt b/modules/bit/src/vfs/fs_test.mbt similarity index 100% rename from src/vfs/fs_test.mbt rename to modules/bit/src/vfs/fs_test.mbt diff --git a/src/vfs/fs_wbtest.mbt b/modules/bit/src/vfs/fs_wbtest.mbt similarity index 100% rename from src/vfs/fs_wbtest.mbt rename to modules/bit/src/vfs/fs_wbtest.mbt diff --git a/src/vfs/integration_test.mbt b/modules/bit/src/vfs/integration_test.mbt similarity index 100% rename from src/vfs/integration_test.mbt rename to modules/bit/src/vfs/integration_test.mbt diff --git a/src/vfs/layer.mbt b/modules/bit/src/vfs/layer.mbt similarity index 100% rename from src/vfs/layer.mbt rename to modules/bit/src/vfs/layer.mbt diff --git a/src/vfs/lru.mbt b/modules/bit/src/vfs/lru.mbt similarity index 100% rename from src/vfs/lru.mbt rename to modules/bit/src/vfs/lru.mbt diff --git a/src/vfs/lru_test.mbt b/modules/bit/src/vfs/lru_test.mbt similarity index 100% rename from src/vfs/lru_test.mbt rename to modules/bit/src/vfs/lru_test.mbt diff --git a/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg similarity index 100% rename from src/vfs/moon.pkg rename to modules/bit/src/vfs/moon.pkg diff --git a/src/vfs/partial_clone_test.mbt b/modules/bit/src/vfs/partial_clone_test.mbt similarity index 100% rename from src/vfs/partial_clone_test.mbt rename to modules/bit/src/vfs/partial_clone_test.mbt diff --git a/src/vfs/path.mbt b/modules/bit/src/vfs/path.mbt similarity index 100% rename from src/vfs/path.mbt rename to modules/bit/src/vfs/path.mbt diff --git a/src/vfs/perf_partial_clone_test.mbt b/modules/bit/src/vfs/perf_partial_clone_test.mbt similarity index 100% rename from src/vfs/perf_partial_clone_test.mbt rename to modules/bit/src/vfs/perf_partial_clone_test.mbt diff --git a/src/vfs/pkg.generated.mbti b/modules/bit/src/vfs/pkg.generated.mbti similarity index 100% rename from src/vfs/pkg.generated.mbti rename to modules/bit/src/vfs/pkg.generated.mbti diff --git a/src/vfs/read_ops.mbt b/modules/bit/src/vfs/read_ops.mbt similarity index 100% rename from src/vfs/read_ops.mbt rename to modules/bit/src/vfs/read_ops.mbt diff --git a/src/vfs/snapshot.mbt b/modules/bit/src/vfs/snapshot.mbt similarity index 100% rename from src/vfs/snapshot.mbt rename to modules/bit/src/vfs/snapshot.mbt diff --git a/src/vfs/tree_builder.mbt b/modules/bit/src/vfs/tree_builder.mbt similarity index 100% rename from src/vfs/tree_builder.mbt rename to modules/bit/src/vfs/tree_builder.mbt diff --git a/src/vfs/types.mbt b/modules/bit/src/vfs/types.mbt similarity index 100% rename from src/vfs/types.mbt rename to modules/bit/src/vfs/types.mbt diff --git a/src/vfs/verify_lazy_test.mbt b/modules/bit/src/vfs/verify_lazy_test.mbt similarity index 100% rename from src/vfs/verify_lazy_test.mbt rename to modules/bit/src/vfs/verify_lazy_test.mbt diff --git a/src/vfs/write_ops.mbt b/modules/bit/src/vfs/write_ops.mbt similarity index 100% rename from src/vfs/write_ops.mbt rename to modules/bit/src/vfs/write_ops.mbt diff --git a/src/worktree/moon.pkg b/modules/bit/src/worktree/moon.pkg similarity index 100% rename from src/worktree/moon.pkg rename to modules/bit/src/worktree/moon.pkg diff --git a/src/worktree/pkg.generated.mbti b/modules/bit/src/worktree/pkg.generated.mbti similarity index 100% rename from src/worktree/pkg.generated.mbti rename to modules/bit/src/worktree/pkg.generated.mbti diff --git a/src/worktree/worktree.mbt b/modules/bit/src/worktree/worktree.mbt similarity index 100% rename from src/worktree/worktree.mbt rename to modules/bit/src/worktree/worktree.mbt diff --git a/src/worktree/worktree_test.mbt b/modules/bit/src/worktree/worktree_test.mbt similarity index 100% rename from src/worktree/worktree_test.mbt rename to modules/bit/src/worktree/worktree_test.mbt diff --git a/moon.work b/moon.work index c27e3da6..99d09f22 100644 --- a/moon.work +++ b/moon.work @@ -1,7 +1,7 @@ // Workspace file. Members are resolved locally instead of from mooncakes.io. // See docs/package-layout.md for the module split rationale. members = [ - ".", + "modules/bit", "modules/bitx_bitconfig", "modules/bitx_doc", "modules/bitx_hq", diff --git a/package.nix b/package.nix index d3b6d10e..1e290ae2 100644 --- a/package.nix +++ b/package.nix @@ -8,7 +8,7 @@ }: moonPlatform.buildMoonPackage { src = ./.; - moonModJson = ./moon.mod.json; + moonModJson = ./modules/bit/moon.mod.json; inherit moonRegistryIndex; doCheck = false; diff --git a/tools/check-layer-guards.sh b/tools/check-layer-guards.sh index 4b32723f..9d482b86 100755 --- a/tools/check-layer-guards.sh +++ b/tools/check-layer-guards.sh @@ -2,15 +2,15 @@ # Static guards enforced by `pkf run check` after type-checks succeed. set -euo pipefail -if rg -n "OsFs::new|@process\\.run" src/runtime >/dev/null; then +if rg -n "OsFs::new|@process\\.run" modules/bit/src/runtime >/dev/null; then echo "runtime layer must not use OsFs::new or @process.run" exit 1 fi -if rg -n "run_storage_command_by_name\\(" src \ - -g '!src/cmd/bit/storage_runtime.mbt' \ - -g '!src/cmd/bit/storage_runtime_wbtest.mbt' \ - -g '!src/cmd/bit/pkg.generated.mbti' >/dev/null; then +if rg -n "run_storage_command_by_name\\(" modules \ + -g '!modules/bit/src/cmd/bit/storage_runtime.mbt' \ + -g '!modules/bit/src/cmd/bit/storage_runtime_wbtest.mbt' \ + -g '!modules/bit/src/cmd/bit/pkg.generated.mbti' >/dev/null; then echo "run_storage_command_by_name is only allowed in cmd storage_runtime boundary/wbtests" exit 1 fi diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 68379376..a2ada19c 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -11,7 +11,6 @@ import { join, relative } from "node:path"; import { fileURLToPath } from "node:url"; const REPO_ROOT = join(fileURLToPath(import.meta.url), "..", ".."); -const SRC = join(REPO_ROOT, "src"); const MODULES_DIR = join(REPO_ROOT, "modules"); const MODULE_PREFIX = "mizchi/bit"; const EXT_PREFIX = "mizchi/bitx_"; @@ -120,7 +119,7 @@ function* walkPkgFiles(dir) { // Roots to walk. Each root maps a moon.pkg file to a package path: // { dir, prefix } → package path = prefix + ("" or "/") function discoverRoots() { - const roots = [{ dir: SRC, prefix: MODULE_PREFIX }]; + const roots = []; if (existsSync(MODULES_DIR)) { for (const name of readdirSync(MODULES_DIR)) { const modSrc = join(MODULES_DIR, name, "src"); diff --git a/tools/flaker-affected-rules.mjs b/tools/flaker-affected-rules.mjs index 53571ad0..c4ad481d 100644 --- a/tools/flaker-affected-rules.mjs +++ b/tools/flaker-affected-rules.mjs @@ -4,11 +4,11 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "infrastructure", changed: [ - "moon.mod.json", - "src/top.mbt", - "src/cmd/bit/main*.mbt", - "src/cmd/bit/helpers*.mbt", - "src/cmd/bit/fallback*.mbt", + "modules/bit/moon.mod.json", + "modules/bit/src/top.mbt", + "modules/bit/src/cmd/bit/main*.mbt", + "modules/bit/src/cmd/bit/helpers*.mbt", + "modules/bit/src/cmd/bit/fallback*.mbt", "tools/git-shim/**", "tools/run-git-test.sh", "tools/apply-git-test-patches.sh", @@ -20,18 +20,18 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:setup", changed: [ - "src/cmd/bit/init*.mbt", - "src/cmd/bit/config*.mbt", - "src/cmd/bit/gitconfig*.mbt", - "src/cmd/bit/show_ref.mbt", - "src/cmd/bit/symbolic_ref.mbt", - "src/cmd/bit/rev_parse*.mbt", - "src/cmd/bit/hash_object*.mbt", - "src/cmd/bit/cat_file*.mbt", - "src/object/**", - "src/hash/**", - "src/refs/**", - "src/repo_ops/revparse_ops.mbt", + "modules/bit/src/cmd/bit/init*.mbt", + "modules/bit/src/cmd/bit/config*.mbt", + "modules/bit/src/cmd/bit/gitconfig*.mbt", + "modules/bit/src/cmd/bit/show_ref.mbt", + "modules/bit/src/cmd/bit/symbolic_ref.mbt", + "modules/bit/src/cmd/bit/rev_parse*.mbt", + "modules/bit/src/cmd/bit/hash_object*.mbt", + "modules/bit/src/cmd/bit/cat_file*.mbt", + "modules/bit/src/object/**", + "modules/bit/src/hash/**", + "modules/bit/src/refs/**", + "modules/bit/src/repo_ops/revparse_ops.mbt", ], select: [ "third_party/git/t/t0000-basic.sh", @@ -49,13 +49,13 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:checkout", changed: [ - "src/cmd/bit/checkout*.mbt", - "src/cmd/bit/switch*.mbt", - "src/cmd/bit/restore*.mbt", - "src/cmd/bit/checkout_index.mbt", - "src/lib/checkout*.mbt", - "src/lib/path.mbt", - "src/worktree/**", + "modules/bit/src/cmd/bit/checkout*.mbt", + "modules/bit/src/cmd/bit/switch*.mbt", + "modules/bit/src/cmd/bit/restore*.mbt", + "modules/bit/src/cmd/bit/checkout_index.mbt", + "modules/bit/src/lib/checkout*.mbt", + "modules/bit/src/lib/path.mbt", + "modules/bit/src/worktree/**", ], select: [ "third_party/git/t/t2006-checkout-index-basic.sh", @@ -67,16 +67,16 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:index", changed: [ - "src/cmd/bit/ls_files*.mbt", - "src/cmd/bit/ls_tree.mbt", - "src/cmd/bit/read_tree.mbt", - "src/cmd/bit/update_index*.mbt", - "src/cmd/bit/sparse_checkout*.mbt", - "src/cmd/bit/check_attr.mbt", - "src/cmd/bit/check_ignore.mbt", - "src/lib/gitattributes.mbt", - "src/lib/tree_ops.mbt", - "src/worktree/**", + "modules/bit/src/cmd/bit/ls_files*.mbt", + "modules/bit/src/cmd/bit/ls_tree.mbt", + "modules/bit/src/cmd/bit/read_tree.mbt", + "modules/bit/src/cmd/bit/update_index*.mbt", + "modules/bit/src/cmd/bit/sparse_checkout*.mbt", + "modules/bit/src/cmd/bit/check_attr.mbt", + "modules/bit/src/cmd/bit/check_ignore.mbt", + "modules/bit/src/lib/gitattributes.mbt", + "modules/bit/src/lib/tree_ops.mbt", + "modules/bit/src/worktree/**", ], select: [ "third_party/git/t/t300*.sh", @@ -89,12 +89,12 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:branch", changed: [ - "src/cmd/bit/branch*.mbt", - "src/cmd/bit/check_ref_format.mbt", - "src/cmd/bit/show_branches.mbt", - "src/cmd/bit/for_each_ref.mbt", - "src/cmd/bit/show_ref.mbt", - "src/refs/**", + "modules/bit/src/cmd/bit/branch*.mbt", + "modules/bit/src/cmd/bit/check_ref_format.mbt", + "modules/bit/src/cmd/bit/show_branches.mbt", + "modules/bit/src/cmd/bit/for_each_ref.mbt", + "modules/bit/src/cmd/bit/show_ref.mbt", + "modules/bit/src/refs/**", ], select: [ "third_party/git/t/t320*.sh", @@ -105,10 +105,10 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:diff", changed: [ - "src/cmd/bit/diff*.mbt", - "src/cmd/bit/difftool.mbt", - "src/diff/**", - "src/diff_core/**", + "modules/bit/src/cmd/bit/diff*.mbt", + "modules/bit/src/cmd/bit/difftool.mbt", + "modules/bit/src/diff/**", + "modules/bit/src/diff_core/**", ], select: [ "third_party/git/t/t400*.sh", @@ -118,17 +118,17 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:history", changed: [ - "src/cmd/bit/log*.mbt", - "src/cmd/bit/rev_list*.mbt", - "src/cmd/bit/merge_base.mbt", - "src/cmd/bit/name_rev.mbt", - "src/cmd/bit/describe.mbt", - "src/cmd/bit/bisect*.mbt", - "src/cmd/bit/bundle.mbt", - "src/cmd/bit/fmt_merge_msg.mbt", - "src/lib/merge_base.mbt", - "src/repo/**", - "src/repo_ops/**", + "modules/bit/src/cmd/bit/log*.mbt", + "modules/bit/src/cmd/bit/rev_list*.mbt", + "modules/bit/src/cmd/bit/merge_base.mbt", + "modules/bit/src/cmd/bit/name_rev.mbt", + "modules/bit/src/cmd/bit/describe.mbt", + "modules/bit/src/cmd/bit/bisect*.mbt", + "modules/bit/src/cmd/bit/bundle.mbt", + "modules/bit/src/cmd/bit/fmt_merge_msg.mbt", + "modules/bit/src/lib/merge_base.mbt", + "modules/bit/src/repo/**", + "modules/bit/src/repo_ops/**", ], select: [ "third_party/git/t/t60*.sh", @@ -141,13 +141,13 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:merge", changed: [ - "src/cmd/bit/merge*.mbt", - "src/cmd/bit/cherry_pick*.mbt", - "src/cmd/bit/rebase*.mbt", - "src/cmd/bit/revert.mbt", - "src/lib/cherry_pick.mbt", - "src/lib/rebase.mbt", - "src/lib/merge*.mbt", + "modules/bit/src/cmd/bit/merge*.mbt", + "modules/bit/src/cmd/bit/cherry_pick*.mbt", + "modules/bit/src/cmd/bit/rebase*.mbt", + "modules/bit/src/cmd/bit/revert.mbt", + "modules/bit/src/lib/cherry_pick.mbt", + "modules/bit/src/lib/rebase.mbt", + "modules/bit/src/lib/merge*.mbt", ], select: [ "third_party/git/t/t640*.sh", @@ -162,14 +162,14 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:pack", changed: [ - "src/cmd/bit/pack*.mbt", - "src/cmd/bit/index_pack.mbt", - "src/cmd/bit/unpack_objects.mbt", - "src/cmd/bit/verify_pack.mbt", - "src/cmd/bit/multi_pack_index*.mbt", - "src/cmd/bit/commit_graph*.mbt", - "src/pack/**", - "src/pack_ops/**", + "modules/bit/src/cmd/bit/pack*.mbt", + "modules/bit/src/cmd/bit/index_pack.mbt", + "modules/bit/src/cmd/bit/unpack_objects.mbt", + "modules/bit/src/cmd/bit/verify_pack.mbt", + "modules/bit/src/cmd/bit/multi_pack_index*.mbt", + "modules/bit/src/cmd/bit/commit_graph*.mbt", + "modules/bit/src/pack/**", + "modules/bit/src/pack_ops/**", ], select: [ "third_party/git/t/t530*.sh", @@ -184,25 +184,25 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:transport", changed: [ - "src/cmd/bit/fetch*.mbt", - "src/cmd/bit/pull.mbt", - "src/cmd/bit/push.mbt", - "src/cmd/bit/clone*.mbt", - "src/cmd/bit/remote*.mbt", - "src/cmd/bit/receive_pack.mbt", - "src/cmd/bit/upload_pack.mbt", - "src/cmd/bit/fetch_pack.mbt", - "src/cmd/bit/send_pack.mbt", - "src/cmd/bit/http_fetch.mbt", - "src/cmd/bit/http_serve_*.mbt", - "src/cmd/bit/fetch_serve_*.mbt", - "src/lib/remote*.mbt", - "src/protocol/**", - "src/io/http_client.mbt", - "src/io/native/http_client_native.mbt", - "src/io/native/upload_pack*.mbt", - "src/io/native/remote.mbt", - "src/remote/**", + "modules/bit/src/cmd/bit/fetch*.mbt", + "modules/bit/src/cmd/bit/pull.mbt", + "modules/bit/src/cmd/bit/push.mbt", + "modules/bit/src/cmd/bit/clone*.mbt", + "modules/bit/src/cmd/bit/remote*.mbt", + "modules/bit/src/cmd/bit/receive_pack.mbt", + "modules/bit/src/cmd/bit/upload_pack.mbt", + "modules/bit/src/cmd/bit/fetch_pack.mbt", + "modules/bit/src/cmd/bit/send_pack.mbt", + "modules/bit/src/cmd/bit/http_fetch.mbt", + "modules/bit/src/cmd/bit/http_serve_*.mbt", + "modules/bit/src/cmd/bit/fetch_serve_*.mbt", + "modules/bit/src/lib/remote*.mbt", + "modules/bit/src/protocol/**", + "modules/bit/src/io/http_client.mbt", + "modules/bit/src/io/native/http_client_native.mbt", + "modules/bit/src/io/native/upload_pack*.mbt", + "modules/bit/src/io/native/remote.mbt", + "modules/bit/src/remote/**", ], select: [ "third_party/git/t/t550*.sh", @@ -218,16 +218,16 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:porcelain", changed: [ - "src/cmd/bit/add*.mbt", - "src/cmd/bit/commit*.mbt", - "src/cmd/bit/reset*.mbt", - "src/cmd/bit/status*.mbt", - "src/cmd/bit/show*.mbt", - "src/cmd/bit/rm*.mbt", - "src/cmd/bit/mv.mbt", - "src/cmd/bit/stash.mbt", - "src/cmd/bit/clean.mbt", - "src/lib/reset.mbt", + "modules/bit/src/cmd/bit/add*.mbt", + "modules/bit/src/cmd/bit/commit*.mbt", + "modules/bit/src/cmd/bit/reset*.mbt", + "modules/bit/src/cmd/bit/status*.mbt", + "modules/bit/src/cmd/bit/show*.mbt", + "modules/bit/src/cmd/bit/rm*.mbt", + "modules/bit/src/cmd/bit/mv.mbt", + "modules/bit/src/cmd/bit/stash.mbt", + "modules/bit/src/cmd/bit/clean.mbt", + "modules/bit/src/lib/reset.mbt", ], select: [ "third_party/git/t/t7001-mv.sh", @@ -245,9 +245,9 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:tag", changed: [ - "src/cmd/bit/mktag_cmd.mbt", - "src/cmd/bit/tag*.mbt", - "src/cmd/bit/verify_tag.mbt", + "modules/bit/src/cmd/bit/mktag_cmd.mbt", + "modules/bit/src/cmd/bit/tag*.mbt", + "modules/bit/src/cmd/bit/verify_tag.mbt", ], select: [ "third_party/git/t/t7004-tag.sh", @@ -258,10 +258,10 @@ export const GIT_COMPAT_AFFECTED_RULES = [ { reason: "command:submodule", changed: [ - "src/cmd/bit/submodule*.mbt", - "src/cmd/bit/worktree*.mbt", - "src/cmd/bit/sparse_checkout*.mbt", - "src/x-subdir/**", + "modules/bit/src/cmd/bit/submodule*.mbt", + "modules/bit/src/cmd/bit/worktree*.mbt", + "modules/bit/src/cmd/bit/sparse_checkout*.mbt", + "modules/bitx_subdir/src/**", ], select: [ "third_party/git/t/t6437-submodule-merge.sh", diff --git a/tools/flaker-affected-rules.test.mjs b/tools/flaker-affected-rules.test.mjs index a79e0b2c..099ee59a 100644 --- a/tools/flaker-affected-rules.test.mjs +++ b/tools/flaker-affected-rules.test.mjs @@ -15,7 +15,7 @@ test("renderAffectedRulesToml stays in sync with committed config", () => { test("merge-related changes select merge-focused git compat suites", () => { const selected = selectSuitesForChanges( - ["src/cmd/bit/merge.mbt"], + ["modules/bit/src/cmd/bit/merge.mbt"], [ "third_party/git/t/t6400-merge-df.sh", "third_party/git/t/t7600-merge.sh", @@ -32,7 +32,7 @@ test("merge-related changes select merge-focused git compat suites", () => { test("fetch and protocol changes include transport suites", () => { const selected = selectSuitesForChanges( - ["src/cmd/bit/fetch.mbt", "src/protocol/transport.mbt"], + ["modules/bit/src/cmd/bit/fetch.mbt", "modules/bit/src/protocol/transport.mbt"], [ "third_party/git/t/t5500-fetch-pack.sh", "third_party/git/t/t5700-protocol-v1.sh", @@ -49,7 +49,7 @@ test("fetch and protocol changes include transport suites", () => { test("refname validation changes include branch-oriented suites", () => { const selected = selectSuitesForChanges( - ["src/cmd/bit/check_ref_format.mbt"], + ["modules/bit/src/cmd/bit/check_ref_format.mbt"], [ "third_party/git/t/t3204-branch-name-interpretation.sh", "third_party/git/t/t7419-submodule-set-branch.sh", @@ -66,7 +66,7 @@ test("refname validation changes include branch-oriented suites", () => { test("tag verification changes include tag suites", () => { const selected = selectSuitesForChanges( - ["src/cmd/bit/verify_tag.mbt", "src/cmd/bit/mktag_cmd.mbt"], + ["modules/bit/src/cmd/bit/verify_tag.mbt", "modules/bit/src/cmd/bit/mktag_cmd.mbt"], [ "third_party/git/t/t7004-tag.sh", "third_party/git/t/t7030-verify-tag.sh", diff --git a/tools/flaker-affected-rules.toml b/tools/flaker-affected-rules.toml index bdf1df06..83fccf83 100644 --- a/tools/flaker-affected-rules.toml +++ b/tools/flaker-affected-rules.toml @@ -1,64 +1,64 @@ [[rules]] -changed = ["moon.mod.json", "src/top.mbt", "src/cmd/bit/main*.mbt", "src/cmd/bit/helpers*.mbt", "src/cmd/bit/fallback*.mbt", "tools/git-shim/**", "tools/run-git-test.sh", "tools/apply-git-test-patches.sh", "tools/select-git-tests.sh", "tools/flaker-run-git-compat-tests.mjs"] +changed = ["modules/bit/moon.mod.json", "modules/bit/src/top.mbt", "modules/bit/src/cmd/bit/main*.mbt", "modules/bit/src/cmd/bit/helpers*.mbt", "modules/bit/src/cmd/bit/fallback*.mbt", "tools/git-shim/**", "tools/run-git-test.sh", "tools/apply-git-test-patches.sh", "tools/select-git-tests.sh", "tools/flaker-run-git-compat-tests.mjs"] select = ["third_party/git/t/*.sh"] reason = "infrastructure" [[rules]] -changed = ["src/cmd/bit/init*.mbt", "src/cmd/bit/config*.mbt", "src/cmd/bit/gitconfig*.mbt", "src/cmd/bit/show_ref.mbt", "src/cmd/bit/symbolic_ref.mbt", "src/cmd/bit/rev_parse*.mbt", "src/cmd/bit/hash_object*.mbt", "src/cmd/bit/cat_file*.mbt", "src/object/**", "src/hash/**", "src/refs/**", "src/repo_ops/revparse_ops.mbt"] +changed = ["modules/bit/src/cmd/bit/init*.mbt", "modules/bit/src/cmd/bit/config*.mbt", "modules/bit/src/cmd/bit/gitconfig*.mbt", "modules/bit/src/cmd/bit/show_ref.mbt", "modules/bit/src/cmd/bit/symbolic_ref.mbt", "modules/bit/src/cmd/bit/rev_parse*.mbt", "modules/bit/src/cmd/bit/hash_object*.mbt", "modules/bit/src/cmd/bit/cat_file*.mbt", "modules/bit/src/object/**", "modules/bit/src/hash/**", "modules/bit/src/refs/**", "modules/bit/src/repo_ops/revparse_ops.mbt"] select = ["third_party/git/t/t0000-basic.sh", "third_party/git/t/t0001-init.sh", "third_party/git/t/t0012-help.sh", "third_party/git/t/t0450-txt-doc-vs-help.sh", "third_party/git/t/t1006-cat-file.sh", "third_party/git/t/t1007-hash-object.sh", "third_party/git/t/t1300-config.sh", "third_party/git/t/t1401-symbolic-ref.sh", "third_party/git/t/t1403-show-ref.sh", "third_party/git/t/t1500-rev-parse.sh"] reason = "command:setup" [[rules]] -changed = ["src/cmd/bit/checkout*.mbt", "src/cmd/bit/switch*.mbt", "src/cmd/bit/restore*.mbt", "src/cmd/bit/checkout_index.mbt", "src/lib/checkout*.mbt", "src/lib/path.mbt", "src/worktree/**"] +changed = ["modules/bit/src/cmd/bit/checkout*.mbt", "modules/bit/src/cmd/bit/switch*.mbt", "modules/bit/src/cmd/bit/restore*.mbt", "modules/bit/src/cmd/bit/checkout_index.mbt", "modules/bit/src/lib/checkout*.mbt", "modules/bit/src/lib/path.mbt", "modules/bit/src/worktree/**"] select = ["third_party/git/t/t2006-checkout-index-basic.sh", "third_party/git/t/t2014-checkout-switch.sh", "third_party/git/t/t2060-switch.sh", "third_party/git/t/t7201-co.sh"] reason = "command:checkout" [[rules]] -changed = ["src/cmd/bit/ls_files*.mbt", "src/cmd/bit/ls_tree.mbt", "src/cmd/bit/read_tree.mbt", "src/cmd/bit/update_index*.mbt", "src/cmd/bit/sparse_checkout*.mbt", "src/cmd/bit/check_attr.mbt", "src/cmd/bit/check_ignore.mbt", "src/lib/gitattributes.mbt", "src/lib/tree_ops.mbt", "src/worktree/**"] +changed = ["modules/bit/src/cmd/bit/ls_files*.mbt", "modules/bit/src/cmd/bit/ls_tree.mbt", "modules/bit/src/cmd/bit/read_tree.mbt", "modules/bit/src/cmd/bit/update_index*.mbt", "modules/bit/src/cmd/bit/sparse_checkout*.mbt", "modules/bit/src/cmd/bit/check_attr.mbt", "modules/bit/src/cmd/bit/check_ignore.mbt", "modules/bit/src/lib/gitattributes.mbt", "modules/bit/src/lib/tree_ops.mbt", "modules/bit/src/worktree/**"] select = ["third_party/git/t/t300*.sh", "third_party/git/t/t310*.sh", "third_party/git/t/t613*.sh", "third_party/git/t/t7011-skip-worktree-reading.sh", "third_party/git/t/t7012-skip-worktree-writing.sh"] reason = "command:index" [[rules]] -changed = ["src/cmd/bit/branch*.mbt", "src/cmd/bit/check_ref_format.mbt", "src/cmd/bit/show_branches.mbt", "src/cmd/bit/for_each_ref.mbt", "src/cmd/bit/show_ref.mbt", "src/refs/**"] +changed = ["modules/bit/src/cmd/bit/branch*.mbt", "modules/bit/src/cmd/bit/check_ref_format.mbt", "modules/bit/src/cmd/bit/show_branches.mbt", "modules/bit/src/cmd/bit/for_each_ref.mbt", "modules/bit/src/cmd/bit/show_ref.mbt", "modules/bit/src/refs/**"] select = ["third_party/git/t/t320*.sh", "third_party/git/t/t630*.sh", "third_party/git/t/t7419-submodule-set-branch.sh"] reason = "command:branch" [[rules]] -changed = ["src/cmd/bit/diff*.mbt", "src/cmd/bit/difftool.mbt", "src/diff/**", "src/diff_core/**"] +changed = ["modules/bit/src/cmd/bit/diff*.mbt", "modules/bit/src/cmd/bit/difftool.mbt", "modules/bit/src/diff/**", "modules/bit/src/diff_core/**"] select = ["third_party/git/t/t400*.sh", "third_party/git/t/t6427-diff3-conflict-markers.sh"] reason = "command:diff" [[rules]] -changed = ["src/cmd/bit/log*.mbt", "src/cmd/bit/rev_list*.mbt", "src/cmd/bit/merge_base.mbt", "src/cmd/bit/name_rev.mbt", "src/cmd/bit/describe.mbt", "src/cmd/bit/bisect*.mbt", "src/cmd/bit/bundle.mbt", "src/cmd/bit/fmt_merge_msg.mbt", "src/lib/merge_base.mbt", "src/repo/**", "src/repo_ops/**"] +changed = ["modules/bit/src/cmd/bit/log*.mbt", "modules/bit/src/cmd/bit/rev_list*.mbt", "modules/bit/src/cmd/bit/merge_base.mbt", "modules/bit/src/cmd/bit/name_rev.mbt", "modules/bit/src/cmd/bit/describe.mbt", "modules/bit/src/cmd/bit/bisect*.mbt", "modules/bit/src/cmd/bit/bundle.mbt", "modules/bit/src/cmd/bit/fmt_merge_msg.mbt", "modules/bit/src/lib/merge_base.mbt", "modules/bit/src/repo/**", "modules/bit/src/repo_ops/**"] select = ["third_party/git/t/t60*.sh", "third_party/git/t/t610*.sh", "third_party/git/t/t611*.sh", "third_party/git/t/t6120-describe.sh", "third_party/git/t/t6200-fmt-merge-msg.sh"] reason = "command:history" [[rules]] -changed = ["src/cmd/bit/merge*.mbt", "src/cmd/bit/cherry_pick*.mbt", "src/cmd/bit/rebase*.mbt", "src/cmd/bit/revert.mbt", "src/lib/cherry_pick.mbt", "src/lib/rebase.mbt", "src/lib/merge*.mbt"] +changed = ["modules/bit/src/cmd/bit/merge*.mbt", "modules/bit/src/cmd/bit/cherry_pick*.mbt", "modules/bit/src/cmd/bit/rebase*.mbt", "modules/bit/src/cmd/bit/revert.mbt", "modules/bit/src/lib/cherry_pick.mbt", "modules/bit/src/lib/rebase.mbt", "modules/bit/src/lib/merge*.mbt"] select = ["third_party/git/t/t640*.sh", "third_party/git/t/t641*.sh", "third_party/git/t/t642*.sh", "third_party/git/t/t643*.sh", "third_party/git/t/t7402-submodule-rebase.sh", "third_party/git/t/t760*.sh", "third_party/git/t/t761*.sh"] reason = "command:merge" [[rules]] -changed = ["src/cmd/bit/pack*.mbt", "src/cmd/bit/index_pack.mbt", "src/cmd/bit/unpack_objects.mbt", "src/cmd/bit/verify_pack.mbt", "src/cmd/bit/multi_pack_index*.mbt", "src/cmd/bit/commit_graph*.mbt", "src/pack/**", "src/pack_ops/**"] +changed = ["modules/bit/src/cmd/bit/pack*.mbt", "modules/bit/src/cmd/bit/index_pack.mbt", "modules/bit/src/cmd/bit/unpack_objects.mbt", "modules/bit/src/cmd/bit/verify_pack.mbt", "modules/bit/src/cmd/bit/multi_pack_index*.mbt", "modules/bit/src/cmd/bit/commit_graph*.mbt", "modules/bit/src/pack/**", "modules/bit/src/pack_ops/**"] select = ["third_party/git/t/t530*.sh", "third_party/git/t/t531*.sh", "third_party/git/t/t532*.sh", "third_party/git/t/t533*.sh", "third_party/git/t/t5351-unpack-large-objects.sh", "third_party/git/t/t6113-rev-list-bitmap-filters.sh", "third_party/git/t/t6114-keep-packs.sh"] reason = "command:pack" [[rules]] -changed = ["src/cmd/bit/fetch*.mbt", "src/cmd/bit/pull.mbt", "src/cmd/bit/push.mbt", "src/cmd/bit/clone*.mbt", "src/cmd/bit/remote*.mbt", "src/cmd/bit/receive_pack.mbt", "src/cmd/bit/upload_pack.mbt", "src/cmd/bit/fetch_pack.mbt", "src/cmd/bit/send_pack.mbt", "src/cmd/bit/http_fetch.mbt", "src/cmd/bit/http_serve_*.mbt", "src/cmd/bit/fetch_serve_*.mbt", "src/lib/remote*.mbt", "src/protocol/**", "src/io/http_client.mbt", "src/io/native/http_client_native.mbt", "src/io/native/upload_pack*.mbt", "src/io/native/remote.mbt", "src/remote/**"] +changed = ["modules/bit/src/cmd/bit/fetch*.mbt", "modules/bit/src/cmd/bit/pull.mbt", "modules/bit/src/cmd/bit/push.mbt", "modules/bit/src/cmd/bit/clone*.mbt", "modules/bit/src/cmd/bit/remote*.mbt", "modules/bit/src/cmd/bit/receive_pack.mbt", "modules/bit/src/cmd/bit/upload_pack.mbt", "modules/bit/src/cmd/bit/fetch_pack.mbt", "modules/bit/src/cmd/bit/send_pack.mbt", "modules/bit/src/cmd/bit/http_fetch.mbt", "modules/bit/src/cmd/bit/http_serve_*.mbt", "modules/bit/src/cmd/bit/fetch_serve_*.mbt", "modules/bit/src/lib/remote*.mbt", "modules/bit/src/protocol/**", "modules/bit/src/io/http_client.mbt", "modules/bit/src/io/native/http_client_native.mbt", "modules/bit/src/io/native/upload_pack*.mbt", "modules/bit/src/io/native/remote.mbt", "modules/bit/src/remote/**"] select = ["third_party/git/t/t550*.sh", "third_party/git/t/t551*.sh", "third_party/git/t/t552*.sh", "third_party/git/t/t553*.sh", "third_party/git/t/t570*.sh", "third_party/git/t/t5710-promisor-remote-capability.sh", "third_party/git/t/t573*.sh", "third_party/git/t/t5750-bundle-uri-parse.sh"] reason = "command:transport" [[rules]] -changed = ["src/cmd/bit/add*.mbt", "src/cmd/bit/commit*.mbt", "src/cmd/bit/reset*.mbt", "src/cmd/bit/status*.mbt", "src/cmd/bit/show*.mbt", "src/cmd/bit/rm*.mbt", "src/cmd/bit/mv.mbt", "src/cmd/bit/stash.mbt", "src/cmd/bit/clean.mbt", "src/lib/reset.mbt"] +changed = ["modules/bit/src/cmd/bit/add*.mbt", "modules/bit/src/cmd/bit/commit*.mbt", "modules/bit/src/cmd/bit/reset*.mbt", "modules/bit/src/cmd/bit/status*.mbt", "modules/bit/src/cmd/bit/show*.mbt", "modules/bit/src/cmd/bit/rm*.mbt", "modules/bit/src/cmd/bit/mv.mbt", "modules/bit/src/cmd/bit/stash.mbt", "modules/bit/src/cmd/bit/clean.mbt", "modules/bit/src/lib/reset.mbt"] select = ["third_party/git/t/t7001-mv.sh", "third_party/git/t/t7002-mv-sparse-checkout.sh", "third_party/git/t/t7007-show.sh", "third_party/git/t/t706*.sh", "third_party/git/t/t710*.sh", "third_party/git/t/t711*.sh", "third_party/git/t/t730*.sh", "third_party/git/t/t750*.sh", "third_party/git/t/t751*.sh", "third_party/git/t/t752*.sh"] reason = "command:porcelain" [[rules]] -changed = ["src/cmd/bit/mktag_cmd.mbt", "src/cmd/bit/tag*.mbt", "src/cmd/bit/verify_tag.mbt"] +changed = ["modules/bit/src/cmd/bit/mktag_cmd.mbt", "modules/bit/src/cmd/bit/tag*.mbt", "modules/bit/src/cmd/bit/verify_tag.mbt"] select = ["third_party/git/t/t7004-tag.sh", "third_party/git/t/t7030-verify-tag.sh", "third_party/git/t/t7031-verify-tag-signed-ssh.sh"] reason = "command:tag" [[rules]] -changed = ["src/cmd/bit/submodule*.mbt", "src/cmd/bit/worktree*.mbt", "src/cmd/bit/sparse_checkout*.mbt", "src/x-subdir/**"] +changed = ["modules/bit/src/cmd/bit/submodule*.mbt", "modules/bit/src/cmd/bit/worktree*.mbt", "modules/bit/src/cmd/bit/sparse_checkout*.mbt", "modules/bitx_subdir/src/**"] select = ["third_party/git/t/t6437-submodule-merge.sh", "third_party/git/t/t6438-submodule-directory-file-conflicts.sh", "third_party/git/t/t740*.sh", "third_party/git/t/t741*.sh", "third_party/git/t/t742*.sh", "third_party/git/t/t7450-bad-git-dotfiles.sh"] reason = "command:submodule" diff --git a/tools/install-bit.sh b/tools/install-bit.sh index 64828b89..6c902371 100755 --- a/tools/install-bit.sh +++ b/tools/install-bit.sh @@ -2,7 +2,7 @@ # Install bit to ~/.moon/bin and codesign on macOS. set -euo pipefail -moon install ./src/cmd/bit +moon install ./modules/bit/src/cmd/bit if command -v codesign >/dev/null 2>&1; then codesign -fs - ~/.moon/bin/bit diff --git a/tools/playground-dev.sh b/tools/playground-dev.sh index 83579d9e..9d630b73 100755 --- a/tools/playground-dev.sh +++ b/tools/playground-dev.sh @@ -2,7 +2,7 @@ # Boot the Vite-powered playground after building the JS lib. set -euo pipefail -moon build --target js --release src/lib +moon build --target js --release modules/bit/src/lib if [ ! -d node_modules ]; then pnpm install fi From 69e9e1aefbc4190e11f2644f4b59216748aa8a80 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 14:05:42 +0000 Subject: [PATCH 04/26] refactor: fix build paths after module move Workspace mode produces _build artifacts under the module-prefixed path (e.g. _build/native/release/build/mizchi/bit/cmd/bit/bit.exe instead of _build/native/release/build/cmd/bit/bit.exe). Update the build script and Taskfile outputs to match. Also fix a stale mizchi/bit/x-hub/native reference in a doc comment. --- Taskfile.pkl | 22 +++++++++---------- .../src/native/sync_native_bench_wbtest.mbt | 2 +- tools/build-bit-native.sh | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Taskfile.pkl b/Taskfile.pkl index 65bf0e15..2cc84355 100644 --- a/Taskfile.pkl +++ b/Taskfile.pkl @@ -79,7 +79,7 @@ local build: Task = new { cmd = "tools/build-bit-native.sh" inputs = moonbitSources outputs { - "_build/native/release/build/cmd/bit/bit.exe" + "_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" "tools/git-shim/moon" } } @@ -89,7 +89,7 @@ local buildJsLib: Task = new { description = "JS release build of mizchi/bit/lib" cmd = "moon build --target js --release modules/bit/src/lib" inputs = moonbitSources - outputs { "_build/js/release/build/lib/lib.js" } + outputs { "_build/js/release/build/mizchi/bit/lib/lib.js" } } local buildJsCli: Task = new { @@ -97,24 +97,24 @@ local buildJsCli: Task = new { description = "JS release build of mizchi/bit/cmd/bit" cmd = "moon build --target js --release modules/bit/src/cmd/bit" inputs = moonbitSources - outputs { "_build/js/release/build/cmd/bit/bit.js" } + outputs { "_build/js/release/build/mizchi/bit/cmd/bit/bit.js" } } local syncNpmLibRaw: Task = new { name = "sync-npm-lib-raw" description = "Copy the JS lib payload into the checked-in npm wrapper" - cmd = "cp _build/js/release/build/lib/lib.js npm/lib.raw.js" + cmd = "cp _build/js/release/build/mizchi/bit/lib/lib.js npm/lib.raw.js" deps { buildJsLib } - inputs { "_build/js/release/build/lib/lib.js" } + inputs { "_build/js/release/build/mizchi/bit/lib/lib.js" } outputs { "npm/lib.raw.js" } } local syncNpmBitCjs: Task = new { name = "sync-npm-bit-cjs" description = "Copy the JS CLI payload into the checked-in npm wrapper" - cmd = "cp _build/js/release/build/cmd/bit/bit.js npm/bit.cjs" + cmd = "cp _build/js/release/build/mizchi/bit/cmd/bit/bit.js npm/bit.cjs" deps { buildJsCli } - inputs { "_build/js/release/build/cmd/bit/bit.js" } + inputs { "_build/js/release/build/mizchi/bit/cmd/bit/bit.js" } outputs { "npm/bit.cjs" } } @@ -129,7 +129,7 @@ local bundleJsLibMinimal: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/lib/lib.js" + "_build/js/release/build/mizchi/bit/lib/lib.js" "tools/lib-js-minimal.mjs" } outputs { "target/lib-js-minimal.bundle.mjs" } @@ -146,7 +146,7 @@ local bundleJsLibGitOps: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/lib/lib.js" + "_build/js/release/build/mizchi/bit/lib/lib.js" "tools/lib-js-git-ops.mjs" } outputs { "target/lib-js-git-ops.bundle.mjs" } @@ -206,7 +206,7 @@ local verifyJsLibTreeshake: Task = new { local sizeJsLib: Task = new { name = "size-js-lib" description = "Report raw + gzip size of the JS lib" - cmd = "tools/size-bytes.sh _build/js/release/build/lib/lib.js" + cmd = "tools/size-bytes.sh _build/js/release/build/mizchi/bit/lib/lib.js" deps { buildJsLib } } @@ -236,7 +236,7 @@ local buildDocsDemo: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/lib/lib.js" + "_build/js/release/build/mizchi/bit/lib/lib.js" "docs/demo/main.js" "docs/demo/**/*.js" } diff --git a/modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt b/modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt index 804563c6..5899a202 100644 --- a/modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt +++ b/modules/bitx_hub/src/native/sync_native_bench_wbtest.mbt @@ -2,7 +2,7 @@ ///| /// Run with: -/// - moon bench -p mizchi/bit/x-hub/native --target native -f sync_native_bench_wbtest.mbt +/// - moon bench -p mizchi/bitx_hub/native --target native -f sync_native_bench_wbtest.mbt ///| priv struct BenchClock { diff --git a/tools/build-bit-native.sh b/tools/build-bit-native.sh index 45573647..eb61553c 100755 --- a/tools/build-bit-native.sh +++ b/tools/build-bit-native.sh @@ -4,7 +4,7 @@ set -euo pipefail moon build --target native --release -bin_path="_build/native/release/build/cmd/bit/bit.exe" +bin_path="_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if [ ! -x "$bin_path" ]; then echo "bit binary not found at $bin_path" >&2 exit 1 From e6d499f51726834337dc6b4a27ac5f8787cb600b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 15:40:06 +0000 Subject: [PATCH 05/26] refactor: extract 12 leaf core packages into bit_* modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Continue the gitoxide-style split by promoting every leaf (no internal mizchi/bit dependency) core/* package out of mizchi/bit into its own MoonBit module. The CLI surface is unchanged — only import paths in moon.pkg files move. Extracted modules: - bit_hash (gix-hash) - bit_date (gix-date, was core/date_parse) - bit_utils (gix-utils + gix-quote, was core/string_utils) - bit_trailers (gix-trailers) - bit_ignore (gix-ignore + gix-glob) - bit_archive (gix-archive, was core/tar) - bit_diff_core (gix-diff, low-level) - bit_diff3 (gix-merge, low-level) - bit_apply (patch application) - bit_fast_import - bit_osfs (gix-fs OS impl) - bit_bootstrap Naming convention: `bit_` (no x) for git plumbing extracted from mizchi/bit, distinct from `bitx_` used for non-git extensions. - moon.work now lists all 12 new core modules - modules/bit/moon.mod.json declares them as deps - bitx_doc / bitx_kv / bitx_rebase_ai / bitx_workspace add bit_osfs and/or bit_utils to their deps (they consumed those packages) - Blackbox test files (*_test.mbt) updated to use the new package aliases (e.g. @apply.X -> @bit_apply.X) - tools/check-layers.mjs recognises mizchi/bit_ as the core layer - docs/package-layout.md updated with the new layout diagram and per-module mapping table moon check passes (0 errors) and all 12 new modules' native tests pass (bit_apply 7, bit_archive 21, bit_date 6, bit_diff3 23, bit_diff_core 6, bit_fast_import 32, bit_hash 11, bit_ignore 16, bit_trailers 6, bit_utils 4 — bit_bootstrap and bit_osfs have no tests). mizchi/bit/lib (285/285) and mizchi/bit/cmd/git-bit (4/4) still pass too. --- docs/package-layout.md | 74 ++++++++++++------- modules/bit/moon.mod.json | 12 +++ modules/bit/src/cmd/bit/moon.pkg | 20 ++--- modules/bit/src/cmd/git-bit/moon.pkg | 4 +- modules/bit/src/config_parse/moon.pkg | 2 +- .../bit/src/date_parse/date_parse_test.mbt | 57 -------------- modules/bit/src/diff/moon.pkg | 4 +- modules/bit/src/fingerprint/moon.pkg | 4 +- modules/bit/src/fuzz_tests/moon.pkg | 4 +- modules/bit/src/grep/moon.pkg | 2 +- modules/bit/src/lib/moon.pkg | 16 ++-- modules/bit/src/lib/native/moon.pkg | 6 +- modules/bit/src/object/moon.pkg | 2 +- modules/bit/src/repo_ops/moon.pkg | 2 +- modules/bit/src/runtime/moon.pkg | 2 +- .../src/string_utils/string_utils_test.mbt | 32 -------- modules/bit/src/vfs/moon.pkg | 2 +- modules/bit_apply/moon.mod.json | 11 +++ .../src/apply => bit_apply/src}/apply.mbt | 0 .../apply => bit_apply/src}/apply_test.mbt | 18 ++--- .../{bit/src/apply => bit_apply/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_archive/moon.mod.json | 11 +++ .../{bit/src/tar => bit_archive/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../{bit/src/tar => bit_archive/src}/tar.mbt | 0 .../src/tar => bit_archive/src}/tar_test.mbt | 0 modules/bit_bootstrap/moon.mod.json | 11 +++ .../src}/bootstrap.mbt | 0 .../bootstrap => bit_bootstrap/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/stdio_guard_stub.c | 0 modules/bit_date/moon.mod.json | 11 +++ .../src}/date_parse.mbt | 0 modules/bit_date/src/date_parse_test.mbt | 57 ++++++++++++++ .../src/date_parse => bit_date/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_diff3/moon.mod.json | 11 +++ .../src/diff3 => bit_diff3/src}/diff3.mbt | 0 .../diff3 => bit_diff3/src}/diff3_wbtest.mbt | 0 .../{bit/src/diff3 => bit_diff3/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_diff_core/moon.mod.json | 11 +++ .../src}/bench_test.mbt | 0 .../src}/diff_core.mbt | 0 .../src}/diff_core_test.mbt | 36 ++++----- .../diff_core => bit_diff_core/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_fast_import/moon.mod.json | 11 +++ .../src}/fast_import_parse.mbt | 0 .../src}/fast_import_parse_test.mbt | 0 .../src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_hash/moon.mod.json | 13 ++++ .../src/hash => bit_hash/src}/bench_test.mbt | 0 .../{bit/src/hash => bit_hash/src}/hex.mbt | 0 .../src/hash => bit_hash/src}/hex_test.mbt | 0 .../{bit/src/hash => bit_hash/src}/moon.pkg | 0 .../hash => bit_hash/src}/pkg.generated.mbti | 0 .../{bit/src/hash => bit_hash/src}/sha1.mbt | 0 .../src/hash => bit_hash/src}/sha1_test.mbt | 0 .../{bit/src/hash => bit_hash/src}/sha256.mbt | 0 .../src/hash => bit_hash/src}/sha256_test.mbt | 0 modules/bit_ignore/moon.mod.json | 11 +++ .../ignore => bit_ignore/src}/bench_test.mbt | 16 ++-- .../src/ignore => bit_ignore/src}/ignore.mbt | 0 .../ignore => bit_ignore/src}/ignore_test.mbt | 48 ++++++------ .../src/ignore => bit_ignore/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_osfs/moon.mod.json | 14 ++++ .../{bit/src/osfs => bit_osfs/src}/moon.pkg | 0 .../{bit/src/osfs => bit_osfs/src}/osfs.mbt | 0 .../osfs => bit_osfs/src}/pkg.generated.mbti | 0 modules/bit_trailers/moon.mod.json | 11 +++ .../trailers => bit_trailers/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/trailers.mbt | 0 .../src}/trailers_test.mbt | 0 modules/bit_utils/moon.mod.json | 11 +++ .../string_utils => bit_utils/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/string_utils.mbt | 0 modules/bit_utils/src/string_utils_test.mbt | 32 ++++++++ modules/bitx_doc/moon.mod.json | 1 + modules/bitx_doc/src/moon.pkg | 2 +- modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 2 +- modules/bitx_rebase_ai/moon.mod.json | 2 + modules/bitx_rebase_ai/src/moon.pkg | 4 +- modules/bitx_workspace/moon.mod.json | 2 + modules/bitx_workspace/src/moon.pkg | 4 +- moon.work | 12 +++ tools/check-layers.mjs | 27 +++++++ 93 files changed, 429 insertions(+), 217 deletions(-) delete mode 100644 modules/bit/src/date_parse/date_parse_test.mbt delete mode 100644 modules/bit/src/string_utils/string_utils_test.mbt create mode 100644 modules/bit_apply/moon.mod.json rename modules/{bit/src/apply => bit_apply/src}/apply.mbt (100%) rename modules/{bit/src/apply => bit_apply/src}/apply_test.mbt (80%) rename modules/{bit/src/apply => bit_apply/src}/moon.pkg (100%) rename modules/{bit/src/apply => bit_apply/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_archive/moon.mod.json rename modules/{bit/src/tar => bit_archive/src}/moon.pkg (100%) rename modules/{bit/src/tar => bit_archive/src}/pkg.generated.mbti (100%) rename modules/{bit/src/tar => bit_archive/src}/tar.mbt (100%) rename modules/{bit/src/tar => bit_archive/src}/tar_test.mbt (100%) create mode 100644 modules/bit_bootstrap/moon.mod.json rename modules/{bit/src/bootstrap => bit_bootstrap/src}/bootstrap.mbt (100%) rename modules/{bit/src/bootstrap => bit_bootstrap/src}/moon.pkg (100%) rename modules/{bit/src/bootstrap => bit_bootstrap/src}/pkg.generated.mbti (100%) rename modules/{bit/src/bootstrap => bit_bootstrap/src}/stdio_guard_stub.c (100%) create mode 100644 modules/bit_date/moon.mod.json rename modules/{bit/src/date_parse => bit_date/src}/date_parse.mbt (100%) create mode 100644 modules/bit_date/src/date_parse_test.mbt rename modules/{bit/src/date_parse => bit_date/src}/moon.pkg (100%) rename modules/{bit/src/date_parse => bit_date/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_diff3/moon.mod.json rename modules/{bit/src/diff3 => bit_diff3/src}/diff3.mbt (100%) rename modules/{bit/src/diff3 => bit_diff3/src}/diff3_wbtest.mbt (100%) rename modules/{bit/src/diff3 => bit_diff3/src}/moon.pkg (100%) rename modules/{bit/src/diff3 => bit_diff3/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_diff_core/moon.mod.json rename modules/{bit/src/diff_core => bit_diff_core/src}/bench_test.mbt (100%) rename modules/{bit/src/diff_core => bit_diff_core/src}/diff_core.mbt (100%) rename modules/{bit/src/diff_core => bit_diff_core/src}/diff_core_test.mbt (58%) rename modules/{bit/src/diff_core => bit_diff_core/src}/moon.pkg (100%) rename modules/{bit/src/diff_core => bit_diff_core/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_fast_import/moon.mod.json rename modules/{bit/src/fast_import => bit_fast_import/src}/fast_import_parse.mbt (100%) rename modules/{bit/src/fast_import => bit_fast_import/src}/fast_import_parse_test.mbt (100%) rename modules/{bit/src/fast_import => bit_fast_import/src}/moon.pkg (100%) rename modules/{bit/src/fast_import => bit_fast_import/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_hash/moon.mod.json rename modules/{bit/src/hash => bit_hash/src}/bench_test.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/hex.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/hex_test.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/moon.pkg (100%) rename modules/{bit/src/hash => bit_hash/src}/pkg.generated.mbti (100%) rename modules/{bit/src/hash => bit_hash/src}/sha1.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/sha1_test.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/sha256.mbt (100%) rename modules/{bit/src/hash => bit_hash/src}/sha256_test.mbt (100%) create mode 100644 modules/bit_ignore/moon.mod.json rename modules/{bit/src/ignore => bit_ignore/src}/bench_test.mbt (86%) rename modules/{bit/src/ignore => bit_ignore/src}/ignore.mbt (100%) rename modules/{bit/src/ignore => bit_ignore/src}/ignore_test.mbt (72%) rename modules/{bit/src/ignore => bit_ignore/src}/moon.pkg (100%) rename modules/{bit/src/ignore => bit_ignore/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_osfs/moon.mod.json rename modules/{bit/src/osfs => bit_osfs/src}/moon.pkg (100%) rename modules/{bit/src/osfs => bit_osfs/src}/osfs.mbt (100%) rename modules/{bit/src/osfs => bit_osfs/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_trailers/moon.mod.json rename modules/{bit/src/trailers => bit_trailers/src}/moon.pkg (100%) rename modules/{bit/src/trailers => bit_trailers/src}/pkg.generated.mbti (100%) rename modules/{bit/src/trailers => bit_trailers/src}/trailers.mbt (100%) rename modules/{bit/src/trailers => bit_trailers/src}/trailers_test.mbt (100%) create mode 100644 modules/bit_utils/moon.mod.json rename modules/{bit/src/string_utils => bit_utils/src}/moon.pkg (100%) rename modules/{bit/src/string_utils => bit_utils/src}/pkg.generated.mbti (100%) rename modules/{bit/src/string_utils => bit_utils/src}/string_utils.mbt (100%) create mode 100644 modules/bit_utils/src/string_utils_test.mbt diff --git a/docs/package-layout.md b/docs/package-layout.md index 579622ec..c7bbb091 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -14,14 +14,26 @@ pick only the features they need. ``` moon.work ← workspace manifest modules/ - bit/ ← main module: core / mid / high / cmd + bit/ ← main module: remaining core / mid / high / cmd moon.mod.json src/ - types/ hash/ object/ ... (core) - repo/ worktree/ diff/ ... (mid) - lib/ vfs/ fingerprint/ (high) - cmd/bit/ cmd/git-bit/ (cmd) - bitx_bitconfig/ ← extension modules + types/ object/ pack/ refs/ protocol/ ... (core, not yet extracted) + repo_ops/ worktree/ diff/ ... (mid) + lib/ vfs/ fingerprint/ grep/ runtime/ (high) + cmd/bit/ cmd/git-bit/ (cmd) + bit_apply/ ← standalone core modules (gix-* equivalents) + bit_archive/ + bit_bootstrap/ + bit_date/ + bit_diff3/ + bit_diff_core/ + bit_fast_import/ + bit_hash/ + bit_ignore/ + bit_osfs/ + bit_trailers/ + bit_utils/ + bitx_bitconfig/ ← extension modules (non-Git features) bitx_doc/ bitx_hq/ bitx_hub/ @@ -31,10 +43,16 @@ modules/ bitx_workspace/ ``` +Naming conventions: +- `bit_` (no x) — extracted core plumbing modules, one Git primitive + each, mirroring gitoxide's `gix-*` crates. +- `bitx_` (with x) — extensions for non-Git features (PR metadata, + KV store, AI rebase, etc.). + ## Layers ``` -cmd ─→ bitx_* ─→ lib (high) ─→ mid ─→ core +cmd ─→ bitx_* ─→ lib (high) ─→ mid ─→ core (bit_* + mizchi/bit subpkgs) bitx_* ─→ mid ─→ core (bitx_* may bypass `lib`) ``` @@ -43,34 +61,36 @@ never import a package from a higher layer. ### core (gitoxide `gix-*` plumbing 相当) -Single-purpose, low-level packages. Each package is responsible for one Git -primitive and may only depend on other `core/*` packages it strictly needs. - -| Package | Path | gitoxide analogue | -|-------------------------------|-----------------------|------------------------------------| +Single-purpose, low-level packages. Each is responsible for one Git +primitive. Standalone modules (under `modules/bit_/`) and packages +that still live inside `mizchi/bit` are both shown — the long-term direction +is to keep extracting until every core package is its own module. + +| Module / Package | Path | gitoxide analogue | +|-------------------------------|-----------------------------------|------------------------------------| +| `mizchi/bit_hash` | `modules/bit_hash/src` | `gix-hash` | +| `mizchi/bit_date` | `modules/bit_date/src` | `gix-date` | +| `mizchi/bit_utils` | `modules/bit_utils/src` | `gix-utils`, `gix-quote` | +| `mizchi/bit_trailers` | `modules/bit_trailers/src` | `gix-trailers` | +| `mizchi/bit_ignore` | `modules/bit_ignore/src` | `gix-ignore` + `gix-glob` | +| `mizchi/bit_archive` | `modules/bit_archive/src` | `gix-archive` | +| `mizchi/bit_diff_core` | `modules/bit_diff_core/src` | `gix-diff` (low-level) | +| `mizchi/bit_diff3` | `modules/bit_diff3/src` | `gix-merge` (low-level) | +| `mizchi/bit_apply` | `modules/bit_apply/src` | (patch application) | +| `mizchi/bit_fast_import` | `modules/bit_fast_import/src` | (fast-import stream) | +| `mizchi/bit_osfs` | `modules/bit_osfs/src` | `gix-fs` (OS-backed impl) | +| `mizchi/bit_bootstrap` | `modules/bit_bootstrap/src` | (bootstrap helpers) | | `mizchi/bit/types` | `modules/bit/src/types` | (shared types) | -| `mizchi/bit/hash` | `modules/bit/src/hash` | `gix-hash` | -| `mizchi/bit/date_parse` | `modules/bit/src/date_parse` | `gix-date` | -| `mizchi/bit/string_utils` | `modules/bit/src/string_utils` | `gix-utils`, `gix-quote` | | `mizchi/bit/config_parse` | `modules/bit/src/config_parse` | `gix-config` | | `mizchi/bit/object` | `modules/bit/src/object` | `gix-object` | -| `mizchi/bit/trailers` | `modules/bit/src/trailers` | `gix-trailers` | -| `mizchi/bit/ignore` | `modules/bit/src/ignore` | `gix-ignore` + `gix-glob` | -| `mizchi/bit/tar` | `modules/bit/src/tar` | `gix-archive` | -| `mizchi/bit/diff_core` | `modules/bit/src/diff_core` | `gix-diff` (low-level) | -| `mizchi/bit/diff3` | `modules/bit/src/diff3` | `gix-merge` (low-level) | -| `mizchi/bit/apply` | `modules/bit/src/apply` | (patch application) | -| `mizchi/bit/fast_import` | `modules/bit/src/fast_import` | (fast-import stream) | -| `mizchi/bit/grep` | `modules/bit/src/grep` | (grep engine) | | `mizchi/bit/io` | `modules/bit/src/io` | `gix-fs` (abstract) | | `mizchi/bit/io/native` | `modules/bit/src/io/native` | `gix-fs` (native bindings) | -| `mizchi/bit/osfs` | `modules/bit/src/osfs` | `gix-fs` (OS-backed impl) | | `mizchi/bit/pack` | `modules/bit/src/pack` | `gix-pack` | | `mizchi/bit/refs` | `modules/bit/src/refs` | `gix-ref` | | `mizchi/bit/reftable` | `modules/bit/src/reftable` | (reftable backend) | | `mizchi/bit/protocol` | `modules/bit/src/protocol` | `gix-protocol`/`gix-transport` | -| `mizchi/bit/runtime` | `modules/bit/src/runtime` | (runtime helpers) | -| `mizchi/bit/bootstrap` | `modules/bit/src/bootstrap` | (bootstrap helpers) | +| `mizchi/bit/remote` | `modules/bit/src/remote` | `gix-url` / discover | +| `mizchi/bit/repo` | `modules/bit/src/repo` | (repo handle) | ### mid (gitoxide `gitoxide-core` 相当) @@ -78,10 +98,8 @@ Operations layered on top of `core/*`. May depend on `core/*` only. | Package | Path | Notes | |--------------------------|------------------|--------------------------------------| -| `mizchi/bit/repo` | `modules/bit/src/repo` | Repository handle / materialization | | `mizchi/bit/repo_ops` | `modules/bit/src/repo_ops` | Repository-level operations | | `mizchi/bit/pack_ops` | `modules/bit/src/pack_ops` | `collect_reachable_objects`, etc. | -| `mizchi/bit/remote` | `modules/bit/src/remote` | URL / shorthand / `.git` discovery | | `mizchi/bit/worktree` | `modules/bit/src/worktree` | status / add / commit / rm / mv | | `mizchi/bit/diff` | `modules/bit/src/diff` | High-level diff / show | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index 939d5261..e655074e 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -11,6 +11,18 @@ "bobzhang/toml": "0.1.7", "mizchi/libgit2": "0.1.0", "mizchi/zlib": "0.4.5", + "mizchi/bit_apply": "0.42.2", + "mizchi/bit_archive": "0.42.2", + "mizchi/bit_bootstrap": "0.42.2", + "mizchi/bit_date": "0.42.2", + "mizchi/bit_diff3": "0.42.2", + "mizchi/bit_diff_core": "0.42.2", + "mizchi/bit_fast_import": "0.42.2", + "mizchi/bit_hash": "0.42.2", + "mizchi/bit_ignore": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_trailers": "0.42.2", + "mizchi/bit_utils": "0.42.2", "mizchi/bitx_bitconfig": "0.42.2", "mizchi/bitx_doc": "0.42.2", "mizchi/bitx_hq": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 51055642..ac40b419 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -1,22 +1,22 @@ import { - "mizchi/bit/bootstrap" @bootstrap, + "mizchi/bit_bootstrap" @bootstrap, "mizchi/bit" @bitcore, "mizchi/bit/object" @bitobject, "mizchi/bit/config_parse" @config_parse, - "mizchi/bit/hash" @bithash, + "mizchi/bit_hash" @bithash, "mizchi/bit/pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit/lib" @bitlib, - "mizchi/bit/tar" @tar, - "mizchi/bit/apply" @apply, - "mizchi/bit/diff3" @diff3, - "mizchi/bit/date_parse" @date_parse, - "mizchi/bit/trailers" @trailers, - "mizchi/bit/fast_import" @fast_import, + "mizchi/bit_archive" @tar, + "mizchi/bit_apply" @apply, + "mizchi/bit_diff3" @diff3, + "mizchi/bit_date" @date_parse, + "mizchi/bit_trailers" @trailers, + "mizchi/bit_fast_import" @fast_import, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit/diff" @bitdiff, "mizchi/bit/grep" @bitgrep, - "mizchi/bit/ignore" @ignore, + "mizchi/bit_ignore" @ignore, "mizchi/bit/io" @bitio, "mizchi/bit/lib/native" @bitlibnative, "mizchi/bit/io/native" @bitnative, @@ -31,7 +31,7 @@ import { "mizchi/bitx_workspace" @workspace, "mizchi/bit/reftable" @reftable, "mizchi/bit/runtime" @runtime, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "mizchi/zlib" @zlib, "moonbitlang/async" @async, "moonbitlang/async/js_async" @js_async, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index 2d4e7a12..ee62fc6d 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -1,10 +1,10 @@ import { "mizchi/bit" @bitcore, "mizchi/bit/config_parse" @config_parse, - "mizchi/bit/hash" @bithash, + "mizchi/bit_hash" @bithash, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "mizchi/bitx_hq" @hq, "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/native" @hub_native, diff --git a/modules/bit/src/config_parse/moon.pkg b/modules/bit/src/config_parse/moon.pkg index aacce696..11193c9c 100644 --- a/modules/bit/src/config_parse/moon.pkg +++ b/modules/bit/src/config_parse/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "moonbitlang/core/string" @string, "moonbitlang/core/strconv", } diff --git a/modules/bit/src/date_parse/date_parse_test.mbt b/modules/bit/src/date_parse/date_parse_test.mbt deleted file mode 100644 index 58b0041a..00000000 --- a/modules/bit/src/date_parse/date_parse_test.mbt +++ /dev/null @@ -1,57 +0,0 @@ -///| -test "date_is_leap_year" { - assert_true(@date_parse.date_is_leap_year(2000)) - assert_true(@date_parse.date_is_leap_year(2024)) - assert_false(@date_parse.date_is_leap_year(1900)) - assert_false(@date_parse.date_is_leap_year(2023)) -} - -///| -test "days_since_epoch known dates" { - // 1970-01-01 = day 0 - @test.assert_eq(@date_parse.days_since_epoch(1970, 1, 1), 0) - // 1970-01-02 = day 1 - @test.assert_eq(@date_parse.days_since_epoch(1970, 1, 2), 1) - // 2000-01-01 = 10957 days - @test.assert_eq(@date_parse.days_since_epoch(2000, 1, 1), 10957) -} - -///| -test "month_name_to_number" { - @test.assert_eq(@date_parse.month_name_to_number("jan"), Some(1)) - @test.assert_eq(@date_parse.month_name_to_number("January"), Some(1)) - @test.assert_eq(@date_parse.month_name_to_number("dec"), Some(12)) - @test.assert_eq(@date_parse.month_name_to_number("December"), Some(12)) - @test.assert_eq(@date_parse.month_name_to_number("may"), Some(5)) - @test.assert_eq(@date_parse.month_name_to_number("xyz"), None) - @test.assert_eq(@date_parse.month_name_to_number(""), None) -} - -///| -test "parse_approxidate ISO 8601" { - // 2024-01-15T00:00:00 => days_since_epoch(2024,1,15) * 86400 - let result = @date_parse.parse_approxidate("2024-01-15T00:00:00", 0L) - assert_true(result is Some(_)) - let ts = result.unwrap() - let expected = @date_parse.days_since_epoch(2024, 1, 15).to_int64() * 86400L - @test.assert_eq(ts, expected) -} - -///| -test "parse_approxidate relative" { - let now = 1000000L - let result = @date_parse.parse_approxidate("3 days ago", now) - @test.assert_eq(result, Some(now - 3L * 86400L)) - let yesterday = @date_parse.parse_approxidate("yesterday", now) - @test.assert_eq(yesterday, Some(now - 86400L)) - let now_result = @date_parse.parse_approxidate("now", now) - @test.assert_eq(now_result, Some(now)) -} - -///| -test "parse_approxidate human readable" { - let result = @date_parse.parse_approxidate("Jan 1 2000", 0L) - assert_true(result is Some(_)) - let expected = @date_parse.days_since_epoch(2000, 1, 1).to_int64() * 86400L - @test.assert_eq(result.unwrap(), expected) -} diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg index c4e3cc8b..46b06849 100644 --- a/modules/bit/src/diff/moon.pkg +++ b/modules/bit/src/diff/moon.pkg @@ -1,9 +1,9 @@ import { "mizchi/bit" @bit, - "mizchi/bit/diff_core" @diff_core, + "mizchi/bit_diff_core" @diff_core, "mizchi/bit/io" @bitio, "mizchi/bit/lib" @bitlib, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "moonbitlang/core/bench" @bench, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/fingerprint/moon.pkg b/modules/bit/src/fingerprint/moon.pkg index f0d142c5..f5183c41 100644 --- a/modules/bit/src/fingerprint/moon.pkg +++ b/modules/bit/src/fingerprint/moon.pkg @@ -1,8 +1,8 @@ import { "mizchi/bit" @bit, "mizchi/bit/lib" @bitlib, - "mizchi/bit/string_utils" @string_utils, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_utils" @string_utils, + "mizchi/bit_osfs" @osfs, "moonbitlang/async" @async, "moonbitlang/async/process" @process, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg index b96bbe2a..12d98acf 100644 --- a/modules/bit/src/fuzz_tests/moon.pkg +++ b/modules/bit/src/fuzz_tests/moon.pkg @@ -2,10 +2,10 @@ import { "mizchi/bit" @bit, "mizchi/bit/pack" @pack, "mizchi/bit/protocol" @protocol, - "mizchi/bit/ignore" @ignore, + "mizchi/bit_ignore" @ignore, "moonbitlang/core/encoding/utf8" @utf8, "mizchi/bit/config_parse" @config_parse, - "mizchi/bit/date_parse" @date_parse, + "mizchi/bit_date" @date_parse, "mizchi/bit/repo" @repo, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg index e1735823..f6e8802c 100644 --- a/modules/bit/src/grep/moon.pkg +++ b/modules/bit/src/grep/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, - "mizchi/bit/ignore" @ignore, + "mizchi/bit_ignore" @ignore, "mizchi/bit/io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index 5bbc140a..c2933adf 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -5,15 +5,15 @@ import { "mizchi/bit/io/native" @bitnative, "mizchi/bit/refs" @bitrefs, "mizchi/bit/remote" @bitremote, - "mizchi/bit/hash" @bithash, + "mizchi/bit_hash" @bithash, "mizchi/bit/pack" @pack, "mizchi/bit/protocol" @protocol, - "mizchi/bit/ignore" @ignore, + "mizchi/bit_ignore" @ignore, "mizchi/bit/reftable" @reftable, - "mizchi/bit/string_utils" @string_utils, - "mizchi/bit/date_parse" @date_parse, - "mizchi/bit/diff_core" @diff_core, - "mizchi/bit/diff3" @diff3, + "mizchi/bit_utils" @string_utils, + "mizchi/bit_date" @date_parse, + "mizchi/bit_diff_core" @diff_core, + "mizchi/bit_diff3" @diff3, "mizchi/zlib" @zlib, "moonbitlang/async/js_async" @js_async, "moonbitlang/core/bench" @bench, @@ -26,14 +26,14 @@ import { "moonbitlang/async" @async, "moonbitlang/core/bench" @bench, "moonbitlang/x/fs", - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "moonbitlang/core/test" @test, } for "test" import { "moonbitlang/async" @async, "moonbitlang/core/bench" @bench, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "mizchi/bit/vfs" @bitfs, "moonbitlang/core/test" @test, } for "wbtest" diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg index 4f97d3f1..c586a44b 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit/src/lib/native/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit/pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit/lib" @bitlib, - "mizchi/bit/ignore" @ignore, + "mizchi/bit_ignore" @ignore, "mizchi/bit/io" @bitio, "mizchi/bit/io/native" @bitnative, "moonbitlang/async" @async, @@ -20,12 +20,12 @@ import { import { "moonbitlang/core/bench" @bench, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, } for "test" import { "moonbitlang/core/bench" @bench, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "moonbitlang/core/test" @test, } for "wbtest" diff --git a/modules/bit/src/object/moon.pkg b/modules/bit/src/object/moon.pkg index 9a3798aa..ce31ec73 100644 --- a/modules/bit/src/object/moon.pkg +++ b/modules/bit/src/object/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/zlib" @zlib, - "mizchi/bit/hash" @hash, + "mizchi/bit_hash" @hash, "moonbitlang/core/debug" @debug, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/repo_ops/moon.pkg b/modules/bit/src/repo_ops/moon.pkg index 79623229..e902c26c 100644 --- a/modules/bit/src/repo_ops/moon.pkg +++ b/modules/bit/src/repo_ops/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit/repo" @repo, "mizchi/bit/types" @types, "mizchi/bit/lib" @bitlib, - "mizchi/bit/hash" @bithash, + "mizchi/bit_hash" @bithash, "mizchi/bit/object" @object, "mizchi/bit/string_utils" @string_utils, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index 16f52a57..8111eabb 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit/object" @object, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/env" @env, "moonbitlang/core/string" @string, diff --git a/modules/bit/src/string_utils/string_utils_test.mbt b/modules/bit/src/string_utils/string_utils_test.mbt deleted file mode 100644 index c9ee23f1..00000000 --- a/modules/bit/src/string_utils/string_utils_test.mbt +++ /dev/null @@ -1,32 +0,0 @@ -///| -test "trim_string" { - assert_eq(@string_utils.trim_string(" hello "), "hello") - assert_eq(@string_utils.trim_string("\t\nhello\r\n"), "hello") - assert_eq(@string_utils.trim_string("hello"), "hello") - assert_eq(@string_utils.trim_string(""), "") - assert_eq(@string_utils.trim_string(" "), "") -} - -///| -test "to_octal_string" { - assert_eq(@string_utils.to_octal_string(0), "0") - assert_eq(@string_utils.to_octal_string(8), "10") - assert_eq(@string_utils.to_octal_string(0o100644), "100644") - assert_eq(@string_utils.to_octal_string(0o100755), "100755") - assert_eq(@string_utils.to_octal_string(0o40000), "40000") -} - -///| -test "mode_to_string" { - assert_eq(@string_utils.mode_to_string(33188), "100644") - assert_eq(@string_utils.mode_to_string(0o100755), "100755") - assert_eq(@string_utils.mode_to_string(0o40000), "40000") -} - -///| -test "decode_bytes" { - let data = b"hello world" - assert_eq(@string_utils.decode_bytes(data), "hello world") - let empty = b"" - assert_eq(@string_utils.decode_bytes(empty), "") -} diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg index eaa67df0..9ea75ad9 100644 --- a/modules/bit/src/vfs/moon.pkg +++ b/modules/bit/src/vfs/moon.pkg @@ -6,7 +6,7 @@ import { import { "mizchi/bit/lib" @lib, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "mizchi/zlib", "moonbitlang/core/bench" @bench, "moonbitlang/async", diff --git a/modules/bit_apply/moon.mod.json b/modules/bit_apply/moon.mod.json new file mode 100644 index 00000000..7c36ebb9 --- /dev/null +++ b/modules/bit_apply/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_apply", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "patch", "apply"], + "description": "Unified-diff patch application", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/apply/apply.mbt b/modules/bit_apply/src/apply.mbt similarity index 100% rename from modules/bit/src/apply/apply.mbt rename to modules/bit_apply/src/apply.mbt diff --git a/modules/bit/src/apply/apply_test.mbt b/modules/bit_apply/src/apply_test.mbt similarity index 80% rename from modules/bit/src/apply/apply_test.mbt rename to modules/bit_apply/src/apply_test.mbt index 0a59c946..83224772 100644 --- a/modules/bit/src/apply/apply_test.mbt +++ b/modules/bit_apply/src/apply_test.mbt @@ -1,7 +1,7 @@ ///| test "reverse_patch swaps add/delete lines" { let patch = "--- a/file.txt\n+++ b/file.txt\n@@ -1,3 +1,3 @@\n context\n-old line\n+new line\n context\n" - let reversed = @apply.reverse_patch(patch) + let reversed = @bit_apply.reverse_patch(patch) assert_true(reversed.contains("+++ b/file.txt")) assert_true(reversed.contains("--- a/file.txt")) assert_true(reversed.contains("+old line")) @@ -11,7 +11,7 @@ test "reverse_patch swaps add/delete lines" { ///| test "reverse_patch empty input" { - let result = @apply.reverse_patch("") + let result = @bit_apply.reverse_patch("") assert_eq(result, "") } @@ -26,7 +26,7 @@ test "parse_patches simple diff" { #|-world #|+world! #|+extra - let patches = @apply.parse_patches(patch) + let patches = @bit_apply.parse_patches(patch) assert_eq(patches.length(), 1) assert_eq(patches[0].display_name, "foo.txt") assert_eq(patches[0].additions, 2) @@ -44,7 +44,7 @@ test "parse_patches new file" { #|+++ b/new.txt #|@@ -0,0 +1 @@ #|+hello - let patches = @apply.parse_patches(patch) + let patches = @bit_apply.parse_patches(patch) assert_eq(patches.length(), 1) assert_true(patches[0].is_new) assert_eq(patches[0].new_mode, "100644") @@ -58,7 +58,7 @@ test "parse_patches rename" { #|similarity index 95% #|rename from old.txt #|rename to new.txt - let patches = @apply.parse_patches(patch) + let patches = @bit_apply.parse_patches(patch) assert_eq(patches.length(), 1) assert_true(patches[0].is_rename) assert_eq(patches[0].old_name, "old.txt") @@ -68,7 +68,7 @@ test "parse_patches rename" { ///| test "parse_diff_git_header" { - let (old_name, new_name) = @apply.parse_diff_git_header( + let (old_name, new_name) = @bit_apply.parse_diff_git_header( "a/src/main.mbt b/src/main.mbt", ) assert_eq(old_name, "src/main.mbt") @@ -77,7 +77,7 @@ test "parse_diff_git_header" { ///| test "parse_pct" { - assert_eq(@apply.parse_pct("95%"), 95) - assert_eq(@apply.parse_pct("100%"), 100) - assert_eq(@apply.parse_pct("0%"), 0) + assert_eq(@bit_apply.parse_pct("95%"), 95) + assert_eq(@bit_apply.parse_pct("100%"), 100) + assert_eq(@bit_apply.parse_pct("0%"), 0) } diff --git a/modules/bit/src/apply/moon.pkg b/modules/bit_apply/src/moon.pkg similarity index 100% rename from modules/bit/src/apply/moon.pkg rename to modules/bit_apply/src/moon.pkg diff --git a/modules/bit/src/apply/pkg.generated.mbti b/modules/bit_apply/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/apply/pkg.generated.mbti rename to modules/bit_apply/src/pkg.generated.mbti diff --git a/modules/bit_archive/moon.mod.json b/modules/bit_archive/moon.mod.json new file mode 100644 index 00000000..e98532a0 --- /dev/null +++ b/modules/bit_archive/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_archive", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "archive", "tar"], + "description": "Tar archive writing (gix-archive equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/tar/moon.pkg b/modules/bit_archive/src/moon.pkg similarity index 100% rename from modules/bit/src/tar/moon.pkg rename to modules/bit_archive/src/moon.pkg diff --git a/modules/bit/src/tar/pkg.generated.mbti b/modules/bit_archive/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/tar/pkg.generated.mbti rename to modules/bit_archive/src/pkg.generated.mbti diff --git a/modules/bit/src/tar/tar.mbt b/modules/bit_archive/src/tar.mbt similarity index 100% rename from modules/bit/src/tar/tar.mbt rename to modules/bit_archive/src/tar.mbt diff --git a/modules/bit/src/tar/tar_test.mbt b/modules/bit_archive/src/tar_test.mbt similarity index 100% rename from modules/bit/src/tar/tar_test.mbt rename to modules/bit_archive/src/tar_test.mbt diff --git a/modules/bit_bootstrap/moon.mod.json b/modules/bit_bootstrap/moon.mod.json new file mode 100644 index 00000000..80aab011 --- /dev/null +++ b/modules/bit_bootstrap/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_bootstrap", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "bootstrap"], + "description": "Native-stub bootstrap helpers (stdio guard)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/bootstrap/bootstrap.mbt b/modules/bit_bootstrap/src/bootstrap.mbt similarity index 100% rename from modules/bit/src/bootstrap/bootstrap.mbt rename to modules/bit_bootstrap/src/bootstrap.mbt diff --git a/modules/bit/src/bootstrap/moon.pkg b/modules/bit_bootstrap/src/moon.pkg similarity index 100% rename from modules/bit/src/bootstrap/moon.pkg rename to modules/bit_bootstrap/src/moon.pkg diff --git a/modules/bit/src/bootstrap/pkg.generated.mbti b/modules/bit_bootstrap/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/bootstrap/pkg.generated.mbti rename to modules/bit_bootstrap/src/pkg.generated.mbti diff --git a/modules/bit/src/bootstrap/stdio_guard_stub.c b/modules/bit_bootstrap/src/stdio_guard_stub.c similarity index 100% rename from modules/bit/src/bootstrap/stdio_guard_stub.c rename to modules/bit_bootstrap/src/stdio_guard_stub.c diff --git a/modules/bit_date/moon.mod.json b/modules/bit_date/moon.mod.json new file mode 100644 index 00000000..5b43d7fe --- /dev/null +++ b/modules/bit_date/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_date", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "date", "rfc2822"], + "description": "Git date parsing primitives (gix-date equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/date_parse/date_parse.mbt b/modules/bit_date/src/date_parse.mbt similarity index 100% rename from modules/bit/src/date_parse/date_parse.mbt rename to modules/bit_date/src/date_parse.mbt diff --git a/modules/bit_date/src/date_parse_test.mbt b/modules/bit_date/src/date_parse_test.mbt new file mode 100644 index 00000000..a3efd18f --- /dev/null +++ b/modules/bit_date/src/date_parse_test.mbt @@ -0,0 +1,57 @@ +///| +test "date_is_leap_year" { + assert_true(@bit_date.date_is_leap_year(2000)) + assert_true(@bit_date.date_is_leap_year(2024)) + assert_false(@bit_date.date_is_leap_year(1900)) + assert_false(@bit_date.date_is_leap_year(2023)) +} + +///| +test "days_since_epoch known dates" { + // 1970-01-01 = day 0 + @test.assert_eq(@bit_date.days_since_epoch(1970, 1, 1), 0) + // 1970-01-02 = day 1 + @test.assert_eq(@bit_date.days_since_epoch(1970, 1, 2), 1) + // 2000-01-01 = 10957 days + @test.assert_eq(@bit_date.days_since_epoch(2000, 1, 1), 10957) +} + +///| +test "month_name_to_number" { + @test.assert_eq(@bit_date.month_name_to_number("jan"), Some(1)) + @test.assert_eq(@bit_date.month_name_to_number("January"), Some(1)) + @test.assert_eq(@bit_date.month_name_to_number("dec"), Some(12)) + @test.assert_eq(@bit_date.month_name_to_number("December"), Some(12)) + @test.assert_eq(@bit_date.month_name_to_number("may"), Some(5)) + @test.assert_eq(@bit_date.month_name_to_number("xyz"), None) + @test.assert_eq(@bit_date.month_name_to_number(""), None) +} + +///| +test "parse_approxidate ISO 8601" { + // 2024-01-15T00:00:00 => days_since_epoch(2024,1,15) * 86400 + let result = @bit_date.parse_approxidate("2024-01-15T00:00:00", 0L) + assert_true(result is Some(_)) + let ts = result.unwrap() + let expected = @bit_date.days_since_epoch(2024, 1, 15).to_int64() * 86400L + @test.assert_eq(ts, expected) +} + +///| +test "parse_approxidate relative" { + let now = 1000000L + let result = @bit_date.parse_approxidate("3 days ago", now) + @test.assert_eq(result, Some(now - 3L * 86400L)) + let yesterday = @bit_date.parse_approxidate("yesterday", now) + @test.assert_eq(yesterday, Some(now - 86400L)) + let now_result = @bit_date.parse_approxidate("now", now) + @test.assert_eq(now_result, Some(now)) +} + +///| +test "parse_approxidate human readable" { + let result = @bit_date.parse_approxidate("Jan 1 2000", 0L) + assert_true(result is Some(_)) + let expected = @bit_date.days_since_epoch(2000, 1, 1).to_int64() * 86400L + @test.assert_eq(result.unwrap(), expected) +} diff --git a/modules/bit/src/date_parse/moon.pkg b/modules/bit_date/src/moon.pkg similarity index 100% rename from modules/bit/src/date_parse/moon.pkg rename to modules/bit_date/src/moon.pkg diff --git a/modules/bit/src/date_parse/pkg.generated.mbti b/modules/bit_date/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/date_parse/pkg.generated.mbti rename to modules/bit_date/src/pkg.generated.mbti diff --git a/modules/bit_diff3/moon.mod.json b/modules/bit_diff3/moon.mod.json new file mode 100644 index 00000000..a0deb8df --- /dev/null +++ b/modules/bit_diff3/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_diff3", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "merge", "diff3"], + "description": "3-way merge primitives (gix-merge low-level equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/diff3/diff3.mbt b/modules/bit_diff3/src/diff3.mbt similarity index 100% rename from modules/bit/src/diff3/diff3.mbt rename to modules/bit_diff3/src/diff3.mbt diff --git a/modules/bit/src/diff3/diff3_wbtest.mbt b/modules/bit_diff3/src/diff3_wbtest.mbt similarity index 100% rename from modules/bit/src/diff3/diff3_wbtest.mbt rename to modules/bit_diff3/src/diff3_wbtest.mbt diff --git a/modules/bit/src/diff3/moon.pkg b/modules/bit_diff3/src/moon.pkg similarity index 100% rename from modules/bit/src/diff3/moon.pkg rename to modules/bit_diff3/src/moon.pkg diff --git a/modules/bit/src/diff3/pkg.generated.mbti b/modules/bit_diff3/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/diff3/pkg.generated.mbti rename to modules/bit_diff3/src/pkg.generated.mbti diff --git a/modules/bit_diff_core/moon.mod.json b/modules/bit_diff_core/moon.mod.json new file mode 100644 index 00000000..595e06c9 --- /dev/null +++ b/modules/bit_diff_core/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_diff_core", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "diff"], + "description": "Low-level diff algorithm (gix-diff equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/diff_core/bench_test.mbt b/modules/bit_diff_core/src/bench_test.mbt similarity index 100% rename from modules/bit/src/diff_core/bench_test.mbt rename to modules/bit_diff_core/src/bench_test.mbt diff --git a/modules/bit/src/diff_core/diff_core.mbt b/modules/bit_diff_core/src/diff_core.mbt similarity index 100% rename from modules/bit/src/diff_core/diff_core.mbt rename to modules/bit_diff_core/src/diff_core.mbt diff --git a/modules/bit/src/diff_core/diff_core_test.mbt b/modules/bit_diff_core/src/diff_core_test.mbt similarity index 58% rename from modules/bit/src/diff_core/diff_core_test.mbt rename to modules/bit_diff_core/src/diff_core_test.mbt index 0f8f74fe..cfa86787 100644 --- a/modules/bit/src/diff_core/diff_core_test.mbt +++ b/modules/bit_diff_core/src/diff_core_test.mbt @@ -2,27 +2,27 @@ test "myers_diff identical" { let old = ["a", "b", "c"] let new_ = ["a", "b", "c"] - let edits = @diff_core.myers_diff(old, new_) + let edits = @bit_diff_core.myers_diff(old, new_) assert_eq(edits.length(), 3) // All should be Keep for edit in edits { - assert_true(edit is @diff_core.DiffEditOp::Keep(_, _)) + assert_true(edit is @bit_diff_core.DiffEditOp::Keep(_, _)) } } ///| test "myers_diff empty inputs" { - let edits = @diff_core.myers_diff([], []) + let edits = @bit_diff_core.myers_diff([], []) assert_eq(edits.length(), 0) - let inserts = @diff_core.myers_diff([], ["a", "b"]) + let inserts = @bit_diff_core.myers_diff([], ["a", "b"]) assert_eq(inserts.length(), 2) for edit in inserts { - assert_true(edit is @diff_core.DiffEditOp::Insert(_)) + assert_true(edit is @bit_diff_core.DiffEditOp::Insert(_)) } - let deletes = @diff_core.myers_diff(["a", "b"], []) + let deletes = @bit_diff_core.myers_diff(["a", "b"], []) assert_eq(deletes.length(), 2) for edit in deletes { - assert_true(edit is @diff_core.DiffEditOp::Delete(_)) + assert_true(edit is @bit_diff_core.DiffEditOp::Delete(_)) } } @@ -30,15 +30,15 @@ test "myers_diff empty inputs" { test "myers_diff simple change" { let old = ["a", "b", "c"] let new_ = ["a", "x", "c"] - let edits = @diff_core.myers_diff(old, new_) + let edits = @bit_diff_core.myers_diff(old, new_) let mut deletes = 0 let mut inserts = 0 let mut keeps = 0 for edit in edits { match edit { - @diff_core.DiffEditOp::Keep(_, _) => keeps += 1 - @diff_core.DiffEditOp::Delete(_) => deletes += 1 - @diff_core.DiffEditOp::Insert(_) => inserts += 1 + @bit_diff_core.DiffEditOp::Keep(_, _) => keeps += 1 + @bit_diff_core.DiffEditOp::Delete(_) => deletes += 1 + @bit_diff_core.DiffEditOp::Insert(_) => inserts += 1 } } assert_eq(keeps, 2) @@ -49,14 +49,14 @@ test "myers_diff simple change" { ///| test "split_lines" { let data = b"line1\nline2\nline3\n" - let lines = @diff_core.split_lines(data) + let lines = @bit_diff_core.split_lines(data) assert_eq(lines.length(), 3) assert_eq(lines[0], "line1") assert_eq(lines[1], "line2") assert_eq(lines[2], "line3") // No trailing newline -> no empty trailing element let data2 = b"a\nb" - let lines2 = @diff_core.split_lines(data2) + let lines2 = @bit_diff_core.split_lines(data2) assert_eq(lines2.length(), 2) assert_eq(lines2[0], "a") assert_eq(lines2[1], "b") @@ -64,10 +64,10 @@ test "split_lines" { ///| test "count_lines" { - assert_eq(@diff_core.count_lines(b"hello\nworld\n"), 2) - assert_eq(@diff_core.count_lines(b"hello\nworld"), 2) - assert_eq(@diff_core.count_lines(b"hello"), 1) - assert_eq(@diff_core.count_lines(b""), 0) + assert_eq(@bit_diff_core.count_lines(b"hello\nworld\n"), 2) + assert_eq(@bit_diff_core.count_lines(b"hello\nworld"), 2) + assert_eq(@bit_diff_core.count_lines(b"hello"), 1) + assert_eq(@bit_diff_core.count_lines(b""), 0) } ///| @@ -75,7 +75,7 @@ test "unified_hunks basic" { let old_content : Bytes = b"line1\nline2\nline3\n" let new_content : Bytes = b"line1\nmodified\nline3\n" let out : Array[String] = [] - @diff_core.unified_hunks(out, Some(old_content), Some(new_content)) + @bit_diff_core.unified_hunks(out, Some(old_content), Some(new_content)) assert_true(out.length() > 0) // Should contain hunk header assert_true(out[0].has_prefix("@@")) diff --git a/modules/bit/src/diff_core/moon.pkg b/modules/bit_diff_core/src/moon.pkg similarity index 100% rename from modules/bit/src/diff_core/moon.pkg rename to modules/bit_diff_core/src/moon.pkg diff --git a/modules/bit/src/diff_core/pkg.generated.mbti b/modules/bit_diff_core/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/diff_core/pkg.generated.mbti rename to modules/bit_diff_core/src/pkg.generated.mbti diff --git a/modules/bit_fast_import/moon.mod.json b/modules/bit_fast_import/moon.mod.json new file mode 100644 index 00000000..73c19df8 --- /dev/null +++ b/modules/bit_fast_import/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_fast_import", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "fast-import"], + "description": "git fast-import stream parser", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/fast_import/fast_import_parse.mbt b/modules/bit_fast_import/src/fast_import_parse.mbt similarity index 100% rename from modules/bit/src/fast_import/fast_import_parse.mbt rename to modules/bit_fast_import/src/fast_import_parse.mbt diff --git a/modules/bit/src/fast_import/fast_import_parse_test.mbt b/modules/bit_fast_import/src/fast_import_parse_test.mbt similarity index 100% rename from modules/bit/src/fast_import/fast_import_parse_test.mbt rename to modules/bit_fast_import/src/fast_import_parse_test.mbt diff --git a/modules/bit/src/fast_import/moon.pkg b/modules/bit_fast_import/src/moon.pkg similarity index 100% rename from modules/bit/src/fast_import/moon.pkg rename to modules/bit_fast_import/src/moon.pkg diff --git a/modules/bit/src/fast_import/pkg.generated.mbti b/modules/bit_fast_import/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/fast_import/pkg.generated.mbti rename to modules/bit_fast_import/src/pkg.generated.mbti diff --git a/modules/bit_hash/moon.mod.json b/modules/bit_hash/moon.mod.json new file mode 100644 index 00000000..4fd2435e --- /dev/null +++ b/modules/bit_hash/moon.mod.json @@ -0,0 +1,13 @@ +{ + "name": "mizchi/bit_hash", + "version": "0.42.2", + "deps": { + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "hash", "sha1", "sha256"], + "description": "Git object hashing primitives (gix-hash equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/hash/bench_test.mbt b/modules/bit_hash/src/bench_test.mbt similarity index 100% rename from modules/bit/src/hash/bench_test.mbt rename to modules/bit_hash/src/bench_test.mbt diff --git a/modules/bit/src/hash/hex.mbt b/modules/bit_hash/src/hex.mbt similarity index 100% rename from modules/bit/src/hash/hex.mbt rename to modules/bit_hash/src/hex.mbt diff --git a/modules/bit/src/hash/hex_test.mbt b/modules/bit_hash/src/hex_test.mbt similarity index 100% rename from modules/bit/src/hash/hex_test.mbt rename to modules/bit_hash/src/hex_test.mbt diff --git a/modules/bit/src/hash/moon.pkg b/modules/bit_hash/src/moon.pkg similarity index 100% rename from modules/bit/src/hash/moon.pkg rename to modules/bit_hash/src/moon.pkg diff --git a/modules/bit/src/hash/pkg.generated.mbti b/modules/bit_hash/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/hash/pkg.generated.mbti rename to modules/bit_hash/src/pkg.generated.mbti diff --git a/modules/bit/src/hash/sha1.mbt b/modules/bit_hash/src/sha1.mbt similarity index 100% rename from modules/bit/src/hash/sha1.mbt rename to modules/bit_hash/src/sha1.mbt diff --git a/modules/bit/src/hash/sha1_test.mbt b/modules/bit_hash/src/sha1_test.mbt similarity index 100% rename from modules/bit/src/hash/sha1_test.mbt rename to modules/bit_hash/src/sha1_test.mbt diff --git a/modules/bit/src/hash/sha256.mbt b/modules/bit_hash/src/sha256.mbt similarity index 100% rename from modules/bit/src/hash/sha256.mbt rename to modules/bit_hash/src/sha256.mbt diff --git a/modules/bit/src/hash/sha256_test.mbt b/modules/bit_hash/src/sha256_test.mbt similarity index 100% rename from modules/bit/src/hash/sha256_test.mbt rename to modules/bit_hash/src/sha256_test.mbt diff --git a/modules/bit_ignore/moon.mod.json b/modules/bit_ignore/moon.mod.json new file mode 100644 index 00000000..ede365ba --- /dev/null +++ b/modules/bit_ignore/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_ignore", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "gitignore", "glob"], + "description": ".gitignore + glob matching (gix-ignore + gix-glob equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/ignore/bench_test.mbt b/modules/bit_ignore/src/bench_test.mbt similarity index 86% rename from modules/bit/src/ignore/bench_test.mbt rename to modules/bit_ignore/src/bench_test.mbt index ce770428..238ae40f 100644 --- a/modules/bit/src/ignore/bench_test.mbt +++ b/modules/bit_ignore/src/bench_test.mbt @@ -3,21 +3,21 @@ ///| test "bench match_glob simple" (b : @bench.T) { b.bench(fn() { - b.keep(@ignore.match_glob("*.txt", "some/deep/path/to/file.txt")) + b.keep(@bit_ignore.match_glob("*.txt", "some/deep/path/to/file.txt")) }) } ///| test "bench match_glob no match" (b : @bench.T) { b.bench(fn() { - b.keep(@ignore.match_glob("*.txt", "some/deep/path/to/file.rs")) + b.keep(@bit_ignore.match_glob("*.txt", "some/deep/path/to/file.rs")) }) } ///| test "bench match_glob double star" (b : @bench.T) { b.bench(fn() { - b.keep(@ignore.match_glob("**/*.test.js", "src/components/Button.test.js")) + b.keep(@bit_ignore.match_glob("**/*.test.js", "src/components/Button.test.js")) }) } @@ -48,7 +48,7 @@ test "bench parse gitignore 20 rules" (b : @bench.T) { #|.DS_Store #|Thumbs.db #| - b.bench(fn() { b.keep(@ignore.parse(content, "")) }) + b.bench(fn() { b.keep(@bit_ignore.parse(content, "")) }) } ///| @@ -75,7 +75,7 @@ test "bench is_ignored 20 rules not ignored" (b : @bench.T) { #|.env #|coverage/ #| - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", content) b.bench(fn() { b.keep(m.is_ignored("src/components/Button.tsx", false)) }) } @@ -104,7 +104,7 @@ test "bench is_ignored 20 rules ignored" (b : @bench.T) { #|.env #|coverage/ #| - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", content) b.bench(fn() { b.keep(m.is_ignored("node_modules/express/lib/index.js", false)) @@ -113,7 +113,7 @@ test "bench is_ignored 20 rules ignored" (b : @bench.T) { ///| test "bench is_ignored nested bases" (b : @bench.T) { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.log\n*.tmp\n/build\n") m.add_rules("src", "*.generated.*\n!keep.generated.ts\n") m.add_rules("src/vendor", "*\n!README.md\n") @@ -144,7 +144,7 @@ test "bench 1000 paths against 20 rules" (b : @bench.T) { #|coverage/ #|*.min.js #| - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", content) let paths : Array[String] = [] for i in 0..<1000 { diff --git a/modules/bit/src/ignore/ignore.mbt b/modules/bit_ignore/src/ignore.mbt similarity index 100% rename from modules/bit/src/ignore/ignore.mbt rename to modules/bit_ignore/src/ignore.mbt diff --git a/modules/bit/src/ignore/ignore_test.mbt b/modules/bit_ignore/src/ignore_test.mbt similarity index 72% rename from modules/bit/src/ignore/ignore_test.mbt rename to modules/bit_ignore/src/ignore_test.mbt index e3d1ab4e..0d25b58c 100644 --- a/modules/bit/src/ignore/ignore_test.mbt +++ b/modules/bit_ignore/src/ignore_test.mbt @@ -1,7 +1,7 @@ ///| /// Tests for gitignore pattern matching test "parse simple patterns" { - let rules = @ignore.parse("*.txt\nnode_modules/\n", "") + let rules = @bit_ignore.parse("*.txt\nnode_modules/\n", "") assert_eq(rules.length(), 2) assert_eq(rules[0].pattern, "*.txt") assert_eq(rules[0].dir_only, false) @@ -11,7 +11,7 @@ test "parse simple patterns" { ///| test "parse negation" { - let rules = @ignore.parse("*.log\n!important.log\n", "") + let rules = @bit_ignore.parse("*.log\n!important.log\n", "") assert_eq(rules.length(), 2) assert_eq(rules[0].negated, false) assert_eq(rules[1].negated, true) @@ -20,7 +20,7 @@ test "parse negation" { ///| test "parse anchored patterns" { - let rules = @ignore.parse("/build\n*.o\n", "") + let rules = @bit_ignore.parse("/build\n*.o\n", "") assert_eq(rules.length(), 2) assert_eq(rules[0].anchored, true) assert_eq(rules[0].pattern, "build") @@ -29,14 +29,14 @@ test "parse anchored patterns" { ///| test "parse comments and empty lines" { - let rules = @ignore.parse("# comment\n\n*.txt\n \n", "") + let rules = @bit_ignore.parse("# comment\n\n*.txt\n \n", "") assert_eq(rules.length(), 1) assert_eq(rules[0].pattern, "*.txt") } ///| test "parse escaped characters" { - let rules = @ignore.parse("\\!important\n\\#hash\n", "") + let rules = @bit_ignore.parse("\\!important\n\\#hash\n", "") assert_eq(rules.length(), 2) assert_eq(rules[0].pattern, "!important") assert_eq(rules[0].negated, false) @@ -45,30 +45,30 @@ test "parse escaped characters" { ///| test "match_glob simple" { - assert_true(@ignore.match_glob("*.txt", "file.txt")) - assert_true(@ignore.match_glob("*.txt", "a.txt")) - assert_false(@ignore.match_glob("*.txt", "file.log")) - assert_false(@ignore.match_glob("*.txt", "txt")) + assert_true(@bit_ignore.match_glob("*.txt", "file.txt")) + assert_true(@bit_ignore.match_glob("*.txt", "a.txt")) + assert_false(@bit_ignore.match_glob("*.txt", "file.log")) + assert_false(@bit_ignore.match_glob("*.txt", "txt")) } ///| test "match_glob question mark" { - assert_true(@ignore.match_glob("file?.txt", "file1.txt")) - assert_true(@ignore.match_glob("file?.txt", "fileA.txt")) - assert_false(@ignore.match_glob("file?.txt", "file10.txt")) - assert_false(@ignore.match_glob("file?.txt", "file.txt")) + assert_true(@bit_ignore.match_glob("file?.txt", "file1.txt")) + assert_true(@bit_ignore.match_glob("file?.txt", "fileA.txt")) + assert_false(@bit_ignore.match_glob("file?.txt", "file10.txt")) + assert_false(@bit_ignore.match_glob("file?.txt", "file.txt")) } ///| test "match_glob multiple wildcards" { - assert_true(@ignore.match_glob("*.min.*", "app.min.js")) - assert_true(@ignore.match_glob("*.min.*", "lib.min.css")) - assert_false(@ignore.match_glob("*.min.*", "app.js")) + assert_true(@bit_ignore.match_glob("*.min.*", "app.min.js")) + assert_true(@bit_ignore.match_glob("*.min.*", "lib.min.css")) + assert_false(@bit_ignore.match_glob("*.min.*", "app.js")) } ///| test "matcher basic" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.log\nnode_modules/\n") assert_true(m.is_ignored("debug.log", false)) assert_true(m.is_ignored("logs/error.log", false)) @@ -79,7 +79,7 @@ test "matcher basic" { ///| test "matcher negation" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.log\n!important.log\n") assert_true(m.is_ignored("debug.log", false)) assert_false(m.is_ignored("important.log", false)) @@ -87,7 +87,7 @@ test "matcher negation" { ///| test "matcher anchored pattern" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "/build\n") assert_true(m.is_ignored("build", true)) assert_false(m.is_ignored("src/build", true)) @@ -95,7 +95,7 @@ test "matcher anchored pattern" { ///| test "matcher with base" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("src", "*.bak\n") assert_true(m.is_ignored("src/file.bak", false)) assert_false(m.is_ignored("file.bak", false)) @@ -104,7 +104,7 @@ test "matcher with base" { ///| test "matcher double star" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "**/test\n") assert_true(m.is_ignored("test", true)) assert_true(m.is_ignored("src/test", true)) @@ -113,7 +113,7 @@ test "matcher double star" { ///| test "matcher truncate" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.txt\n") let len = m.len() m.add_rules("src", "*.bak\n") @@ -125,7 +125,7 @@ test "matcher truncate" { ///| test "git-aware glob filter" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.log\n/dist/\nbuild/\n") m.add_rules("src", "*.generated.*\n!keep.generated.ts\n") let files : Array[String] = [ @@ -140,7 +140,7 @@ test "git-aware glob filter" { ///| test "directory traversal backtracking" { - let m = @ignore.Matcher::new() + let m = @bit_ignore.Matcher::new() m.add_rules("", "*.tmp\n") let saved = m.len() m.add_rules("src", "*.bak\n") diff --git a/modules/bit/src/ignore/moon.pkg b/modules/bit_ignore/src/moon.pkg similarity index 100% rename from modules/bit/src/ignore/moon.pkg rename to modules/bit_ignore/src/moon.pkg diff --git a/modules/bit/src/ignore/pkg.generated.mbti b/modules/bit_ignore/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/ignore/pkg.generated.mbti rename to modules/bit_ignore/src/pkg.generated.mbti diff --git a/modules/bit_osfs/moon.mod.json b/modules/bit_osfs/moon.mod.json new file mode 100644 index 00000000..e301cf1b --- /dev/null +++ b/modules/bit_osfs/moon.mod.json @@ -0,0 +1,14 @@ +{ + "name": "mizchi/bit_osfs", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "fs"], + "description": "OS-backed FileSystem / RepoFileSystem implementations (gix-fs OS impl)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/osfs/moon.pkg b/modules/bit_osfs/src/moon.pkg similarity index 100% rename from modules/bit/src/osfs/moon.pkg rename to modules/bit_osfs/src/moon.pkg diff --git a/modules/bit/src/osfs/osfs.mbt b/modules/bit_osfs/src/osfs.mbt similarity index 100% rename from modules/bit/src/osfs/osfs.mbt rename to modules/bit_osfs/src/osfs.mbt diff --git a/modules/bit/src/osfs/pkg.generated.mbti b/modules/bit_osfs/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/osfs/pkg.generated.mbti rename to modules/bit_osfs/src/pkg.generated.mbti diff --git a/modules/bit_trailers/moon.mod.json b/modules/bit_trailers/moon.mod.json new file mode 100644 index 00000000..94a64038 --- /dev/null +++ b/modules/bit_trailers/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_trailers", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "trailers"], + "description": "Commit message trailers (gix-trailers equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/trailers/moon.pkg b/modules/bit_trailers/src/moon.pkg similarity index 100% rename from modules/bit/src/trailers/moon.pkg rename to modules/bit_trailers/src/moon.pkg diff --git a/modules/bit/src/trailers/pkg.generated.mbti b/modules/bit_trailers/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/trailers/pkg.generated.mbti rename to modules/bit_trailers/src/pkg.generated.mbti diff --git a/modules/bit/src/trailers/trailers.mbt b/modules/bit_trailers/src/trailers.mbt similarity index 100% rename from modules/bit/src/trailers/trailers.mbt rename to modules/bit_trailers/src/trailers.mbt diff --git a/modules/bit/src/trailers/trailers_test.mbt b/modules/bit_trailers/src/trailers_test.mbt similarity index 100% rename from modules/bit/src/trailers/trailers_test.mbt rename to modules/bit_trailers/src/trailers_test.mbt diff --git a/modules/bit_utils/moon.mod.json b/modules/bit_utils/moon.mod.json new file mode 100644 index 00000000..4f9273fe --- /dev/null +++ b/modules/bit_utils/moon.mod.json @@ -0,0 +1,11 @@ +{ + "name": "mizchi/bit_utils", + "version": "0.42.2", + "deps": {}, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "utils", "quote"], + "description": "String and quoting utilities (gix-utils + gix-quote equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/string_utils/moon.pkg b/modules/bit_utils/src/moon.pkg similarity index 100% rename from modules/bit/src/string_utils/moon.pkg rename to modules/bit_utils/src/moon.pkg diff --git a/modules/bit/src/string_utils/pkg.generated.mbti b/modules/bit_utils/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/string_utils/pkg.generated.mbti rename to modules/bit_utils/src/pkg.generated.mbti diff --git a/modules/bit/src/string_utils/string_utils.mbt b/modules/bit_utils/src/string_utils.mbt similarity index 100% rename from modules/bit/src/string_utils/string_utils.mbt rename to modules/bit_utils/src/string_utils.mbt diff --git a/modules/bit_utils/src/string_utils_test.mbt b/modules/bit_utils/src/string_utils_test.mbt new file mode 100644 index 00000000..0da792dd --- /dev/null +++ b/modules/bit_utils/src/string_utils_test.mbt @@ -0,0 +1,32 @@ +///| +test "trim_string" { + assert_eq(@bit_utils.trim_string(" hello "), "hello") + assert_eq(@bit_utils.trim_string("\t\nhello\r\n"), "hello") + assert_eq(@bit_utils.trim_string("hello"), "hello") + assert_eq(@bit_utils.trim_string(""), "") + assert_eq(@bit_utils.trim_string(" "), "") +} + +///| +test "to_octal_string" { + assert_eq(@bit_utils.to_octal_string(0), "0") + assert_eq(@bit_utils.to_octal_string(8), "10") + assert_eq(@bit_utils.to_octal_string(0o100644), "100644") + assert_eq(@bit_utils.to_octal_string(0o100755), "100755") + assert_eq(@bit_utils.to_octal_string(0o40000), "40000") +} + +///| +test "mode_to_string" { + assert_eq(@bit_utils.mode_to_string(33188), "100644") + assert_eq(@bit_utils.mode_to_string(0o100755), "100755") + assert_eq(@bit_utils.mode_to_string(0o40000), "40000") +} + +///| +test "decode_bytes" { + let data = b"hello world" + assert_eq(@bit_utils.decode_bytes(data), "hello world") + let empty = b"" + assert_eq(@bit_utils.decode_bytes(empty), "") +} diff --git a/modules/bitx_doc/moon.mod.json b/modules/bitx_doc/moon.mod.json index 5917aa6b..3f0b3d93 100644 --- a/modules/bitx_doc/moon.mod.json +++ b/modules/bitx_doc/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_osfs": "0.42.2", "moonbitlang/x": "0.4.40" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bitx_doc/src/moon.pkg b/modules/bitx_doc/src/moon.pkg index cdb1b73a..1719c399 100644 --- a/modules/bitx_doc/src/moon.pkg +++ b/modules/bitx_doc/src/moon.pkg @@ -5,7 +5,7 @@ import { } import { - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "moonbitlang/core/test" @test, } for "test" diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index 4dd709f1..452ad741 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_osfs": "0.42.2", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40", "mizchi/x": "0.2.0" diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index 8ac3e466..da7ecba1 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -8,7 +8,7 @@ import { import { "moonbitlang/core/bench" @bench, "mizchi/bit/vfs" @fs, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "moonbitlang/x/fs" @nfs, "moonbitlang/core/test" @test, } for "test" diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json index b15c7422..83a42177 100644 --- a/modules/bitx_rebase_ai/moon.mod.json +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -3,6 +3,8 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_utils": "0.42.2", "mizchi/llm": "0.2.2", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40" diff --git a/modules/bitx_rebase_ai/src/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg index 4014a974..edd164d5 100644 --- a/modules/bitx_rebase_ai/src/moon.pkg +++ b/modules/bitx_rebase_ai/src/moon.pkg @@ -2,9 +2,9 @@ import { "moonbitlang/async" @async, "mizchi/bit" @bit, "mizchi/bit/lib" @bitlib, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "mizchi/bit/runtime" @runtime, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "mizchi/llm" @llmlib, "mizchi/llm/openai" @openai, "mizchi/llm/ffi" @llm_ffi, diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json index e74d3b44..41a1c5df 100644 --- a/modules/bitx_workspace/moon.mod.json +++ b/modules/bitx_workspace/moon.mod.json @@ -3,6 +3,8 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_utils": "0.42.2", "mizchi/bitflow": "0.4.0", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40" diff --git a/modules/bitx_workspace/src/moon.pkg b/modules/bitx_workspace/src/moon.pkg index 30bc4208..3beb1d1b 100644 --- a/modules/bitx_workspace/src/moon.pkg +++ b/modules/bitx_workspace/src/moon.pkg @@ -2,9 +2,9 @@ import { "mizchi/bit" @bit, "mizchi/bit/fingerprint" @fingerprint, "mizchi/bit/lib" @bitlib, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_utils" @string_utils, "mizchi/bitflow/workflow" @bitflow, - "mizchi/bit/osfs" @osfs, + "mizchi/bit_osfs" @osfs, "moonbitlang/async" @async, "moonbitlang/async/process" @process, "moonbitlang/async/stdio" @stdio, diff --git a/moon.work b/moon.work index 99d09f22..e4319760 100644 --- a/moon.work +++ b/moon.work @@ -2,6 +2,18 @@ // See docs/package-layout.md for the module split rationale. members = [ "modules/bit", + "modules/bit_apply", + "modules/bit_archive", + "modules/bit_bootstrap", + "modules/bit_date", + "modules/bit_diff3", + "modules/bit_diff_core", + "modules/bit_fast_import", + "modules/bit_hash", + "modules/bit_ignore", + "modules/bit_osfs", + "modules/bit_trailers", + "modules/bit_utils", "modules/bitx_bitconfig", "modules/bitx_doc", "modules/bitx_hq", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index a2ada19c..8f653c9a 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -14,6 +14,23 @@ const REPO_ROOT = join(fileURLToPath(import.meta.url), "..", ".."); const MODULES_DIR = join(REPO_ROOT, "modules"); const MODULE_PREFIX = "mizchi/bit"; const EXT_PREFIX = "mizchi/bitx_"; +// Standalone core modules extracted out of mizchi/bit. Each one is a +// gix-* plumbing equivalent that lives in its own MoonBit module under +// modules/bit_/. They are still classified as the "core" layer. +const CORE_MODULES = new Set([ + "mizchi/bit_apply", + "mizchi/bit_archive", + "mizchi/bit_bootstrap", + "mizchi/bit_date", + "mizchi/bit_diff3", + "mizchi/bit_diff_core", + "mizchi/bit_fast_import", + "mizchi/bit_hash", + "mizchi/bit_ignore", + "mizchi/bit_osfs", + "mizchi/bit_trailers", + "mizchi/bit_utils", +]); // Layer order (low to high). A package may import from its own layer or any // lower layer. @@ -71,9 +88,15 @@ function isExtModule(pkgPath) { pkgPath.startsWith(EXT_PREFIX); } +function isCoreModule(pkgPath) { + const head = pkgPath.split("/").slice(0, 2).join("/"); + return CORE_MODULES.has(head); +} + function isOurModule(pkgPath) { if (pkgPath === MODULE_PREFIX || pkgPath.startsWith(MODULE_PREFIX + "/")) return true; if (isExtModule(pkgPath)) return true; + if (isCoreModule(pkgPath)) return true; return false; } @@ -82,6 +105,7 @@ function isOurModule(pkgPath) { function classify(pkgPath) { if (!isOurModule(pkgPath)) return null; // external if (isExtModule(pkgPath)) return "ext"; + if (isCoreModule(pkgPath)) return "core"; const rel = pkgPath === MODULE_PREFIX ? "" : pkgPath.slice(MODULE_PREFIX.length + 1); const top = rel.split("/")[0]; if (rel === "") return "core"; @@ -94,6 +118,9 @@ function classify(pkgPath) { function topSegment(pkgPath) { if (!isOurModule(pkgPath)) return null; + if (isCoreModule(pkgPath)) { + return pkgPath.split("/").slice(0, 2).join("/"); + } if (isExtModule(pkgPath)) { // For ext modules, the "family" is the module name itself // (e.g. "mizchi/bitx_hub" is one family — its sub-packages /native, From af7a074ceda2a1388ebde2b441bba380949d6459 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 17:20:56 +0000 Subject: [PATCH 06/26] refactor: extract bit_object, bit_config, bit_pack (wave 2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three more core packages whose internal mizchi/bit/* dependencies were already resolved to bit_* modules in wave 1 are now standalone: src/object → modules/bit_object (gix-object) src/config_parse → modules/bit_config (gix-config) src/pack → modules/bit_pack (gix-pack) The trickier bit: bit_object owns the underlying type defs that mizchi/bit/types re-exports as aliases (`pub type ObjectId = @object.ObjectId`, etc). MoonBit's type checker needs the source module imported wherever a type alias is dereferenced through @bit., so every moon.pkg that imports `mizchi/bit` and uses `@bit.GitError` / `@bit.ObjectId` etc. now also imports `mizchi/bit_object`. Same applies to bitx_doc / bitx_kv / bitx_rebase_ai / bitx_subdir / bitx_workspace / bitx_hub — they now declare bit_object in moon.mod.json deps. Long-term direction: move the type defs themselves out of bit_object into a future bit_types module, so the aliases become unnecessary and the transitive-import requirement goes away. moon check passes (0 errors). Tests: - mizchi/bit_object: 27/27 - mizchi/bit_config: 8/8 - mizchi/bit_pack: 72/72 - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 11 +- modules/bit/moon.mod.json | 3 + modules/bit/src/cmd/bit/moon.pkg | 7 +- modules/bit/src/cmd/git-bit/moon.pkg | 3 +- .../src/config_parse/config_parse_test.mbt | 103 ------------------ modules/bit/src/diff/moon.pkg | 1 + modules/bit/src/fingerprint/moon.pkg | 1 + modules/bit/src/fuzz_tests/moon.pkg | 5 +- modules/bit/src/grep/moon.pkg | 1 + modules/bit/src/io/moon.pkg | 1 + modules/bit/src/io/native/moon.pkg | 3 +- modules/bit/src/lib/moon.pkg | 4 +- modules/bit/src/lib/native/moon.pkg | 3 +- modules/bit/src/moon.pkg | 2 +- modules/bit/src/pack_ops/moon.pkg | 1 + modules/bit/src/protocol/moon.pkg | 5 +- modules/bit/src/refs/moon.pkg | 1 + modules/bit/src/reftable/moon.pkg | 2 +- modules/bit/src/remote/moon.pkg | 1 + modules/bit/src/repo/moon.pkg | 2 +- modules/bit/src/repo_ops/moon.pkg | 4 +- modules/bit/src/runtime/moon.pkg | 2 +- modules/bit/src/tests/moon.pkg | 3 +- modules/bit/src/types/moon.pkg | 2 +- modules/bit/src/vfs/moon.pkg | 1 + modules/bit/src/worktree/moon.pkg | 1 + modules/bit_config/moon.mod.json | 13 +++ .../src}/bench_test.mbt | 0 .../src}/config_parse.mbt | 0 modules/bit_config/src/config_parse_test.mbt | 103 ++++++++++++++++++ .../config_parse => bit_config/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_object/moon.mod.json | 14 +++ .../object => bit_object/src}/bench_test.mbt | 0 .../src}/hash_algorithm.mbt | 0 .../src/object => bit_object/src}/hasher.mbt | 0 .../src/object => bit_object/src}/moon.pkg | 0 .../src/object => bit_object/src}/object.mbt | 0 .../object => bit_object/src}/object_test.mbt | 0 .../src}/pkg.generated.mbti | 0 .../src/object => bit_object/src}/sha1.mbt | 0 .../object => bit_object/src}/sha1_test.mbt | 0 .../src/object => bit_object/src}/sha256.mbt | 0 .../object => bit_object/src}/sha256_test.mbt | 0 .../src/object => bit_object/src}/types.mbt | 0 modules/bit_osfs/moon.mod.json | 1 + modules/bit_osfs/src/moon.pkg | 1 + modules/bit_pack/moon.mod.json | 18 +++ .../src}/bench_profile_test.mbt | 6 +- .../src/pack => bit_pack/src}/bench_test.mbt | 22 ++-- .../src}/bit_oracle_pack_test.mbt | 0 .../pack => bit_pack/src}/gen_packfile.mbt | 0 .../{bit/src/pack => bit_pack/src}/moon.pkg | 2 + .../src}/pack_index_write.mbt | 0 .../src}/pack_index_write_test.mbt | 0 .../src/pack => bit_pack/src}/packfile.mbt | 0 .../src}/packfile_fixture_test.mbt | 0 .../pack => bit_pack/src}/packfile_parse.mbt | 0 .../src}/packfile_parse_test.mbt | 0 .../pack => bit_pack/src}/packfile_test.mbt | 0 .../pack => bit_pack/src}/packfile_wbtest.mbt | 0 .../pack => bit_pack/src}/pkg.generated.mbti | 0 modules/bitx_doc/moon.mod.json | 1 + modules/bitx_doc/src/moon.pkg | 1 + modules/bitx_hub/moon.mod.json | 2 + modules/bitx_hub/src/crypto/moon.pkg | 1 + modules/bitx_hub/src/moon.pkg | 1 + modules/bitx_hub/src/native/moon.pkg | 3 +- modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 1 + modules/bitx_kv/src/native/moon.pkg | 1 + modules/bitx_rebase_ai/moon.mod.json | 1 + modules/bitx_rebase_ai/src/moon.pkg | 1 + modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 1 + modules/bitx_workspace/moon.mod.json | 1 + modules/bitx_workspace/src/moon.pkg | 1 + moon.work | 3 + tools/check-layers.mjs | 3 + 79 files changed, 235 insertions(+), 142 deletions(-) delete mode 100644 modules/bit/src/config_parse/config_parse_test.mbt create mode 100644 modules/bit_config/moon.mod.json rename modules/{bit/src/config_parse => bit_config/src}/bench_test.mbt (100%) rename modules/{bit/src/config_parse => bit_config/src}/config_parse.mbt (100%) create mode 100644 modules/bit_config/src/config_parse_test.mbt rename modules/{bit/src/config_parse => bit_config/src}/moon.pkg (100%) rename modules/{bit/src/config_parse => bit_config/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_object/moon.mod.json rename modules/{bit/src/object => bit_object/src}/bench_test.mbt (100%) rename modules/{bit/src/object => bit_object/src}/hash_algorithm.mbt (100%) rename modules/{bit/src/object => bit_object/src}/hasher.mbt (100%) rename modules/{bit/src/object => bit_object/src}/moon.pkg (100%) rename modules/{bit/src/object => bit_object/src}/object.mbt (100%) rename modules/{bit/src/object => bit_object/src}/object_test.mbt (100%) rename modules/{bit/src/object => bit_object/src}/pkg.generated.mbti (100%) rename modules/{bit/src/object => bit_object/src}/sha1.mbt (100%) rename modules/{bit/src/object => bit_object/src}/sha1_test.mbt (100%) rename modules/{bit/src/object => bit_object/src}/sha256.mbt (100%) rename modules/{bit/src/object => bit_object/src}/sha256_test.mbt (100%) rename modules/{bit/src/object => bit_object/src}/types.mbt (100%) create mode 100644 modules/bit_pack/moon.mod.json rename modules/{bit/src/pack => bit_pack/src}/bench_profile_test.mbt (94%) rename modules/{bit/src/pack => bit_pack/src}/bench_test.mbt (79%) rename modules/{bit/src/pack => bit_pack/src}/bit_oracle_pack_test.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/gen_packfile.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/moon.pkg (92%) rename modules/{bit/src/pack => bit_pack/src}/pack_index_write.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/pack_index_write_test.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile_fixture_test.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile_parse.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile_parse_test.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile_test.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/packfile_wbtest.mbt (100%) rename modules/{bit/src/pack => bit_pack/src}/pkg.generated.mbti (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index c7bbb091..b16a0742 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -24,13 +24,16 @@ modules/ bit_apply/ ← standalone core modules (gix-* equivalents) bit_archive/ bit_bootstrap/ + bit_config/ bit_date/ bit_diff3/ bit_diff_core/ bit_fast_import/ bit_hash/ bit_ignore/ + bit_object/ bit_osfs/ + bit_pack/ bit_trailers/ bit_utils/ bitx_bitconfig/ ← extension modules (non-Git features) @@ -80,12 +83,12 @@ is to keep extracting until every core package is its own module. | `mizchi/bit_fast_import` | `modules/bit_fast_import/src` | (fast-import stream) | | `mizchi/bit_osfs` | `modules/bit_osfs/src` | `gix-fs` (OS-backed impl) | | `mizchi/bit_bootstrap` | `modules/bit_bootstrap/src` | (bootstrap helpers) | -| `mizchi/bit/types` | `modules/bit/src/types` | (shared types) | -| `mizchi/bit/config_parse` | `modules/bit/src/config_parse` | `gix-config` | -| `mizchi/bit/object` | `modules/bit/src/object` | `gix-object` | +| `mizchi/bit_config` | `modules/bit_config/src` | `gix-config` | +| `mizchi/bit_object` | `modules/bit_object/src` | `gix-object` | +| `mizchi/bit_pack` | `modules/bit_pack/src` | `gix-pack` | +| `mizchi/bit/types` | `modules/bit/src/types` | (shared types, re-exports object) | | `mizchi/bit/io` | `modules/bit/src/io` | `gix-fs` (abstract) | | `mizchi/bit/io/native` | `modules/bit/src/io/native` | `gix-fs` (native bindings) | -| `mizchi/bit/pack` | `modules/bit/src/pack` | `gix-pack` | | `mizchi/bit/refs` | `modules/bit/src/refs` | `gix-ref` | | `mizchi/bit/reftable` | `modules/bit/src/reftable` | (reftable backend) | | `mizchi/bit/protocol` | `modules/bit/src/protocol` | `gix-protocol`/`gix-transport` | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index e655074e..de2f20e0 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -14,13 +14,16 @@ "mizchi/bit_apply": "0.42.2", "mizchi/bit_archive": "0.42.2", "mizchi/bit_bootstrap": "0.42.2", + "mizchi/bit_config": "0.42.2", "mizchi/bit_date": "0.42.2", "mizchi/bit_diff3": "0.42.2", "mizchi/bit_diff_core": "0.42.2", "mizchi/bit_fast_import": "0.42.2", "mizchi/bit_hash": "0.42.2", "mizchi/bit_ignore": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_pack": "0.42.2", "mizchi/bit_trailers": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/bitx_bitconfig": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index ac40b419..5eba0bbe 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -1,10 +1,11 @@ import { "mizchi/bit_bootstrap" @bootstrap, "mizchi/bit" @bitcore, - "mizchi/bit/object" @bitobject, - "mizchi/bit/config_parse" @config_parse, + "mizchi/bit_object" @object, + "mizchi/bit_object" @bitobject, + "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, - "mizchi/bit/pack" @pack, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit/lib" @bitlib, "mizchi/bit_archive" @tar, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index ee62fc6d..f030a4cf 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bitcore, - "mizchi/bit/config_parse" @config_parse, + "mizchi/bit_object" @object, + "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, diff --git a/modules/bit/src/config_parse/config_parse_test.mbt b/modules/bit/src/config_parse/config_parse_test.mbt deleted file mode 100644 index b9c330e2..00000000 --- a/modules/bit/src/config_parse/config_parse_test.mbt +++ /dev/null @@ -1,103 +0,0 @@ -///| -test "parse_config_value simple" { - @test.assert_eq(@config_parse.parse_config_value(" hello "), "hello") - @test.assert_eq(@config_parse.parse_config_value(" world "), "world") -} - -///| -test "parse_config_value quoted" { - @test.assert_eq(@config_parse.parse_config_value("\"hello world\""), "hello world") - @test.assert_eq( - @config_parse.parse_config_value("\"with \\n newline\""), - "with \n newline", - ) -} - -///| -test "parse_config_value comment stripping" { - @test.assert_eq(@config_parse.parse_config_value("value # comment"), "value") - @test.assert_eq(@config_parse.parse_config_value("value ; comment"), "value") -} - -///| -test "parse_bool_keyword_value" { - @test.assert_eq(@config_parse.parse_bool_keyword_value("true"), Some(true)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("yes"), Some(true)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("on"), Some(true)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("1"), Some(true)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("false"), Some(false)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("no"), Some(false)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("off"), Some(false)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("0"), Some(false)) - @test.assert_eq(@config_parse.parse_bool_keyword_value(""), Some(false)) - @test.assert_eq(@config_parse.parse_bool_keyword_value("maybe"), None) -} - -///| -test "config_parse_size_value" { - @test.assert_eq(@config_parse.config_parse_size_value("1024"), Some(1024L)) - @test.assert_eq(@config_parse.config_parse_size_value("1k"), Some(1024L)) - @test.assert_eq(@config_parse.config_parse_size_value("1m"), Some(1048576L)) - @test.assert_eq(@config_parse.config_parse_size_value("1g"), Some(1073741824L)) - @test.assert_eq(@config_parse.config_parse_size_value(""), None) - @test.assert_eq(@config_parse.config_parse_size_value("abc"), None) -} - -///| -test "parse_config_key" { - @test.assert_eq( - @config_parse.parse_config_key("core.bare"), - Some(("core", None, "bare")), - ) - @test.assert_eq( - @config_parse.parse_config_key("remote.origin.url"), - Some(("remote", Some("origin"), "url")), - ) - @test.assert_eq(@config_parse.parse_config_key("nokey"), None) - @test.assert_eq(@config_parse.parse_config_key(""), None) - @test.assert_eq(@config_parse.parse_config_key("section."), None) -} - -///| -test "get_config_value_from_content" { - let content = - #|[core] - #| bare = false - #| autocrlf = true - #|[user] - #| name = Test User - let bare = @config_parse.get_config_value_from_content( - content, - "core.bare", - None, - false, - ) - @test.assert_eq(bare, Some("false")) - let name = @config_parse.get_config_value_from_content( - content, - "user.name", - None, - false, - ) - @test.assert_eq(name, Some("Test User")) - let missing = @config_parse.get_config_value_from_content( - content, - "core.missing", - None, - false, - ) - @test.assert_eq(missing, None) -} - -///| -test "parse_config_int_value" { - let (val, err) = @config_parse.parse_config_int_value("42") - @test.assert_eq(val, Some(42L)) - @test.assert_eq(err, None) - let (val2, err2) = @config_parse.parse_config_int_value("2k") - @test.assert_eq(val2, Some(2048L)) - @test.assert_eq(err2, None) - let (val3, err3) = @config_parse.parse_config_int_value("abc") - @test.assert_eq(val3, None) - @test.assert_eq(err3, Some("invalid unit")) -} diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg index 46b06849..7fd186c3 100644 --- a/modules/bit/src/diff/moon.pkg +++ b/modules/bit/src/diff/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit_diff_core" @diff_core, "mizchi/bit/io" @bitio, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/fingerprint/moon.pkg b/modules/bit/src/fingerprint/moon.pkg index f5183c41..34f3d418 100644 --- a/modules/bit/src/fingerprint/moon.pkg +++ b/modules/bit/src/fingerprint/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit_osfs" @osfs, diff --git a/modules/bit/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg index 12d98acf..891138ff 100644 --- a/modules/bit/src/fuzz_tests/moon.pkg +++ b/modules/bit/src/fuzz_tests/moon.pkg @@ -1,10 +1,11 @@ import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_object" @object, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit_ignore" @ignore, "moonbitlang/core/encoding/utf8" @utf8, - "mizchi/bit/config_parse" @config_parse, + "mizchi/bit_config" @config_parse, "mizchi/bit_date" @date_parse, "mizchi/bit/repo" @repo, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg index f6e8802c..97c8fcf0 100644 --- a/modules/bit/src/grep/moon.pkg +++ b/modules/bit/src/grep/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_ignore" @ignore, diff --git a/modules/bit/src/io/moon.pkg b/modules/bit/src/io/moon.pkg index 967353de..fc533ea8 100644 --- a/modules/bit/src/io/moon.pkg +++ b/modules/bit/src/io/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit/types" @types, + "mizchi/bit_object" @object, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/io/native/moon.pkg b/modules/bit/src/io/native/moon.pkg index 2a22d7d4..0443ece4 100644 --- a/modules/bit/src/io/native/moon.pkg +++ b/modules/bit/src/io/native/moon.pkg @@ -1,7 +1,8 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/io" @bitio, - "mizchi/bit/pack" @pack, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "moonbitlang/async" @async, "moonbitlang/async/fs" @afs, diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index c2933adf..bf2fa325 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -1,12 +1,12 @@ import { "mizchi/bit" @bit, - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, "mizchi/bit/io" @bitio, "mizchi/bit/io/native" @bitnative, "mizchi/bit/refs" @bitrefs, "mizchi/bit/remote" @bitremote, "mizchi/bit_hash" @bithash, - "mizchi/bit/pack" @pack, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit_ignore" @ignore, "mizchi/bit/reftable" @reftable, diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg index c586a44b..0868c7b7 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit/src/lib/native/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_object" @object, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit/lib" @bitlib, "mizchi/bit_ignore" @ignore, diff --git a/modules/bit/src/moon.pkg b/modules/bit/src/moon.pkg index aedabe82..3382b1e9 100644 --- a/modules/bit/src/moon.pkg +++ b/modules/bit/src/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/bit/io" @io, - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, "mizchi/bit/repo" @repo, "mizchi/bit/types" @types, } diff --git a/modules/bit/src/pack_ops/moon.pkg b/modules/bit/src/pack_ops/moon.pkg index 6e77c5f2..b0a1923d 100644 --- a/modules/bit/src/pack_ops/moon.pkg +++ b/modules/bit/src/pack_ops/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit/src/protocol/moon.pkg b/modules/bit/src/protocol/moon.pkg index e1b387d3..20d8c652 100644 --- a/modules/bit/src/protocol/moon.pkg +++ b/modules/bit/src/protocol/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_object" @object, + "mizchi/bit_pack" @pack, "moonbitlang/async" @async, "moonbitlang/core/encoding/utf8" @utf8, } @@ -11,7 +12,7 @@ import { import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_pack" @pack, "moonbitlang/core/bench" @bench, "moonbitlang/core/test" @test, } for "test" diff --git a/modules/bit/src/refs/moon.pkg b/modules/bit/src/refs/moon.pkg index aa8d88c2..58336e3d 100644 --- a/modules/bit/src/refs/moon.pkg +++ b/modules/bit/src/refs/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/reftable" @reftable, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/reftable/moon.pkg b/modules/bit/src/reftable/moon.pkg index 77e91784..e33ce018 100644 --- a/modules/bit/src/reftable/moon.pkg +++ b/modules/bit/src/reftable/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/bit" @bit, - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, } warnings = "-29" diff --git a/modules/bit/src/remote/moon.pkg b/modules/bit/src/remote/moon.pkg index 82726a2d..10f1aa0b 100644 --- a/modules/bit/src/remote/moon.pkg +++ b/modules/bit/src/remote/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/repo/moon.pkg b/modules/bit/src/repo/moon.pkg index f6285d53..8c09ef2c 100644 --- a/modules/bit/src/repo/moon.pkg +++ b/modules/bit/src/repo/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/bit/types" @types, - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, "mizchi/bit/io" @io, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/repo_ops/moon.pkg b/modules/bit/src/repo_ops/moon.pkg index e902c26c..3cf2141a 100644 --- a/modules/bit/src/repo_ops/moon.pkg +++ b/modules/bit/src/repo_ops/moon.pkg @@ -3,8 +3,8 @@ import { "mizchi/bit/types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_hash" @bithash, - "mizchi/bit/object" @object, - "mizchi/bit/string_utils" @string_utils, + "mizchi/bit_object" @object, + "mizchi/bit_utils" @string_utils, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index 8111eabb..35f4ee34 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/bit" @bit, - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, diff --git a/modules/bit/src/tests/moon.pkg b/modules/bit/src/tests/moon.pkg index 6ca02bde..1752462e 100644 --- a/modules/bit/src/tests/moon.pkg +++ b/modules/bit/src/tests/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_object" @object, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/zlib" @zlib, "moonbitlang/core/encoding/utf8", diff --git a/modules/bit/src/types/moon.pkg b/modules/bit/src/types/moon.pkg index cb9eae20..bd4dfd7e 100644 --- a/modules/bit/src/types/moon.pkg +++ b/modules/bit/src/types/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/object" @object, + "mizchi/bit_object" @object, } warnings = "-29" diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg index 9ea75ad9..58da1e81 100644 --- a/modules/bit/src/vfs/moon.pkg +++ b/modules/bit/src/vfs/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @lib, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/worktree/moon.pkg b/modules/bit/src/worktree/moon.pkg index 6e77c5f2..b0a1923d 100644 --- a/modules/bit/src/worktree/moon.pkg +++ b/modules/bit/src/worktree/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit_config/moon.mod.json b/modules/bit_config/moon.mod.json new file mode 100644 index 00000000..0eadcc9d --- /dev/null +++ b/modules/bit_config/moon.mod.json @@ -0,0 +1,13 @@ +{ + "name": "mizchi/bit_config", + "version": "0.42.2", + "deps": { + "mizchi/bit_utils": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "config", "gitconfig"], + "description": "Git config file parser (gix-config equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/config_parse/bench_test.mbt b/modules/bit_config/src/bench_test.mbt similarity index 100% rename from modules/bit/src/config_parse/bench_test.mbt rename to modules/bit_config/src/bench_test.mbt diff --git a/modules/bit/src/config_parse/config_parse.mbt b/modules/bit_config/src/config_parse.mbt similarity index 100% rename from modules/bit/src/config_parse/config_parse.mbt rename to modules/bit_config/src/config_parse.mbt diff --git a/modules/bit_config/src/config_parse_test.mbt b/modules/bit_config/src/config_parse_test.mbt new file mode 100644 index 00000000..b93afb97 --- /dev/null +++ b/modules/bit_config/src/config_parse_test.mbt @@ -0,0 +1,103 @@ +///| +test "parse_config_value simple" { + @test.assert_eq(@bit_config.parse_config_value(" hello "), "hello") + @test.assert_eq(@bit_config.parse_config_value(" world "), "world") +} + +///| +test "parse_config_value quoted" { + @test.assert_eq(@bit_config.parse_config_value("\"hello world\""), "hello world") + @test.assert_eq( + @bit_config.parse_config_value("\"with \\n newline\""), + "with \n newline", + ) +} + +///| +test "parse_config_value comment stripping" { + @test.assert_eq(@bit_config.parse_config_value("value # comment"), "value") + @test.assert_eq(@bit_config.parse_config_value("value ; comment"), "value") +} + +///| +test "parse_bool_keyword_value" { + @test.assert_eq(@bit_config.parse_bool_keyword_value("true"), Some(true)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("yes"), Some(true)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("on"), Some(true)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("1"), Some(true)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("false"), Some(false)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("no"), Some(false)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("off"), Some(false)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("0"), Some(false)) + @test.assert_eq(@bit_config.parse_bool_keyword_value(""), Some(false)) + @test.assert_eq(@bit_config.parse_bool_keyword_value("maybe"), None) +} + +///| +test "config_parse_size_value" { + @test.assert_eq(@bit_config.config_parse_size_value("1024"), Some(1024L)) + @test.assert_eq(@bit_config.config_parse_size_value("1k"), Some(1024L)) + @test.assert_eq(@bit_config.config_parse_size_value("1m"), Some(1048576L)) + @test.assert_eq(@bit_config.config_parse_size_value("1g"), Some(1073741824L)) + @test.assert_eq(@bit_config.config_parse_size_value(""), None) + @test.assert_eq(@bit_config.config_parse_size_value("abc"), None) +} + +///| +test "parse_config_key" { + @test.assert_eq( + @bit_config.parse_config_key("core.bare"), + Some(("core", None, "bare")), + ) + @test.assert_eq( + @bit_config.parse_config_key("remote.origin.url"), + Some(("remote", Some("origin"), "url")), + ) + @test.assert_eq(@bit_config.parse_config_key("nokey"), None) + @test.assert_eq(@bit_config.parse_config_key(""), None) + @test.assert_eq(@bit_config.parse_config_key("section."), None) +} + +///| +test "get_config_value_from_content" { + let content = + #|[core] + #| bare = false + #| autocrlf = true + #|[user] + #| name = Test User + let bare = @bit_config.get_config_value_from_content( + content, + "core.bare", + None, + false, + ) + @test.assert_eq(bare, Some("false")) + let name = @bit_config.get_config_value_from_content( + content, + "user.name", + None, + false, + ) + @test.assert_eq(name, Some("Test User")) + let missing = @bit_config.get_config_value_from_content( + content, + "core.missing", + None, + false, + ) + @test.assert_eq(missing, None) +} + +///| +test "parse_config_int_value" { + let (val, err) = @bit_config.parse_config_int_value("42") + @test.assert_eq(val, Some(42L)) + @test.assert_eq(err, None) + let (val2, err2) = @bit_config.parse_config_int_value("2k") + @test.assert_eq(val2, Some(2048L)) + @test.assert_eq(err2, None) + let (val3, err3) = @bit_config.parse_config_int_value("abc") + @test.assert_eq(val3, None) + @test.assert_eq(err3, Some("invalid unit")) +} diff --git a/modules/bit/src/config_parse/moon.pkg b/modules/bit_config/src/moon.pkg similarity index 100% rename from modules/bit/src/config_parse/moon.pkg rename to modules/bit_config/src/moon.pkg diff --git a/modules/bit/src/config_parse/pkg.generated.mbti b/modules/bit_config/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/config_parse/pkg.generated.mbti rename to modules/bit_config/src/pkg.generated.mbti diff --git a/modules/bit_object/moon.mod.json b/modules/bit_object/moon.mod.json new file mode 100644 index 00000000..bae78873 --- /dev/null +++ b/modules/bit_object/moon.mod.json @@ -0,0 +1,14 @@ +{ + "name": "mizchi/bit_object", + "version": "0.42.2", + "deps": { + "mizchi/bit_hash": "0.42.2", + "mizchi/zlib": "0.4.5" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "object", "blob", "tree", "commit"], + "description": "Git object model (gix-object equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/object/bench_test.mbt b/modules/bit_object/src/bench_test.mbt similarity index 100% rename from modules/bit/src/object/bench_test.mbt rename to modules/bit_object/src/bench_test.mbt diff --git a/modules/bit/src/object/hash_algorithm.mbt b/modules/bit_object/src/hash_algorithm.mbt similarity index 100% rename from modules/bit/src/object/hash_algorithm.mbt rename to modules/bit_object/src/hash_algorithm.mbt diff --git a/modules/bit/src/object/hasher.mbt b/modules/bit_object/src/hasher.mbt similarity index 100% rename from modules/bit/src/object/hasher.mbt rename to modules/bit_object/src/hasher.mbt diff --git a/modules/bit/src/object/moon.pkg b/modules/bit_object/src/moon.pkg similarity index 100% rename from modules/bit/src/object/moon.pkg rename to modules/bit_object/src/moon.pkg diff --git a/modules/bit/src/object/object.mbt b/modules/bit_object/src/object.mbt similarity index 100% rename from modules/bit/src/object/object.mbt rename to modules/bit_object/src/object.mbt diff --git a/modules/bit/src/object/object_test.mbt b/modules/bit_object/src/object_test.mbt similarity index 100% rename from modules/bit/src/object/object_test.mbt rename to modules/bit_object/src/object_test.mbt diff --git a/modules/bit/src/object/pkg.generated.mbti b/modules/bit_object/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/object/pkg.generated.mbti rename to modules/bit_object/src/pkg.generated.mbti diff --git a/modules/bit/src/object/sha1.mbt b/modules/bit_object/src/sha1.mbt similarity index 100% rename from modules/bit/src/object/sha1.mbt rename to modules/bit_object/src/sha1.mbt diff --git a/modules/bit/src/object/sha1_test.mbt b/modules/bit_object/src/sha1_test.mbt similarity index 100% rename from modules/bit/src/object/sha1_test.mbt rename to modules/bit_object/src/sha1_test.mbt diff --git a/modules/bit/src/object/sha256.mbt b/modules/bit_object/src/sha256.mbt similarity index 100% rename from modules/bit/src/object/sha256.mbt rename to modules/bit_object/src/sha256.mbt diff --git a/modules/bit/src/object/sha256_test.mbt b/modules/bit_object/src/sha256_test.mbt similarity index 100% rename from modules/bit/src/object/sha256_test.mbt rename to modules/bit_object/src/sha256_test.mbt diff --git a/modules/bit/src/object/types.mbt b/modules/bit_object/src/types.mbt similarity index 100% rename from modules/bit/src/object/types.mbt rename to modules/bit_object/src/types.mbt diff --git a/modules/bit_osfs/moon.mod.json b/modules/bit_osfs/moon.mod.json index e301cf1b..cde7f8a2 100644 --- a/modules/bit_osfs/moon.mod.json +++ b/modules/bit_osfs/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "moonbitlang/x": "0.4.40" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bit_osfs/src/moon.pkg b/modules/bit_osfs/src/moon.pkg index 42a3baea..2b71c173 100644 --- a/modules/bit_osfs/src/moon.pkg +++ b/modules/bit_osfs/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "moonbitlang/x/fs", } diff --git a/modules/bit_pack/moon.mod.json b/modules/bit_pack/moon.mod.json new file mode 100644 index 00000000..bf4cdbf6 --- /dev/null +++ b/modules/bit_pack/moon.mod.json @@ -0,0 +1,18 @@ +{ + "name": "mizchi/bit_pack", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/tempfile": "0.1.0", + "mizchi/zlib": "0.4.5", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "pack", "packfile", "index"], + "description": "Git packfile encoder/decoder + index (gix-pack equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/pack/bench_profile_test.mbt b/modules/bit_pack/src/bench_profile_test.mbt similarity index 94% rename from modules/bit/src/pack/bench_profile_test.mbt rename to modules/bit_pack/src/bench_profile_test.mbt index 61ec265b..8e403e15 100644 --- a/modules/bit/src/pack/bench_profile_test.mbt +++ b/modules/bit_pack/src/bench_profile_test.mbt @@ -60,7 +60,7 @@ test "bench profile: delta compute 500 blobs" (b : @bench.T) { for obj in profile_500 { match prev { Some(p) => { - let delta = @pack.build_delta_pub(p.data, obj.data) + let delta = @bit_pack.build_delta_pub(p.data, obj.data) total += delta.length() } None => () @@ -106,7 +106,7 @@ test "bench profile: Array[Byte] collect 500x200B" (b : @bench.T) { ///| test "bench profile: full packfile 500 blobs" (b : @bench.T) { b.bench(fn() { - let pack = @pack.create_packfile(profile_500) + let pack = @bit_pack.create_packfile(profile_500) b.keep(pack.length()) }) } @@ -114,7 +114,7 @@ test "bench profile: full packfile 500 blobs" (b : @bench.T) { ///| test "bench profile: packfile with delta 500 blobs" (b : @bench.T) { b.bench(fn() { - let pack = @pack.create_packfile_with_delta( + let pack = @bit_pack.create_packfile_with_delta( profile_500, @bit.PackDeltaMode::OfsDelta, ) diff --git a/modules/bit/src/pack/bench_test.mbt b/modules/bit_pack/src/bench_test.mbt similarity index 79% rename from modules/bit/src/pack/bench_test.mbt rename to modules/bit_pack/src/bench_test.mbt index 8c26307d..4e42bbca 100644 --- a/modules/bit/src/pack/bench_test.mbt +++ b/modules/bit_pack/src/bench_test.mbt @@ -33,10 +33,10 @@ fn make_similar_blob_objects(count : Int) -> Array[@bit.PackObject] { } ///| -let bench_pack_small : Bytes = @pack.create_packfile(make_blob_objects(3)) +let bench_pack_small : Bytes = @bit_pack.create_packfile(make_blob_objects(3)) ///| -let bench_pack_100 : Bytes = @pack.create_packfile(make_blob_objects(100)) +let bench_pack_100 : Bytes = @bit_pack.create_packfile(make_blob_objects(100)) ///| let bench_objects_10 : Array[@bit.PackObject] = make_blob_objects(10) @@ -50,7 +50,7 @@ let bench_similar_100 : Array[@bit.PackObject] = make_similar_blob_objects(100) ///| test "bench parse_packfile small" (b : @bench.T) { b.bench(fn() { - let objs = try! @pack.parse_packfile(bench_pack_small) + let objs = try! @bit_pack.parse_packfile(bench_pack_small) b.keep(objs.length()) }) } @@ -58,7 +58,7 @@ test "bench parse_packfile small" (b : @bench.T) { ///| test "bench parse_packfile 100 objects" (b : @bench.T) { b.bench(fn() { - let objs = try! @pack.parse_packfile(bench_pack_100) + let objs = try! @bit_pack.parse_packfile(bench_pack_100) b.keep(objs.length()) }) } @@ -66,7 +66,7 @@ test "bench parse_packfile 100 objects" (b : @bench.T) { ///| test "bench create_packfile 10 objects" (b : @bench.T) { b.bench(fn() { - let pack = @pack.create_packfile(bench_objects_10) + let pack = @bit_pack.create_packfile(bench_objects_10) b.keep(pack.length()) }) } @@ -74,7 +74,7 @@ test "bench create_packfile 10 objects" (b : @bench.T) { ///| test "bench create_packfile 100 objects" (b : @bench.T) { b.bench(fn() { - let pack = @pack.create_packfile(bench_objects_100) + let pack = @bit_pack.create_packfile(bench_objects_100) b.keep(pack.length()) }) } @@ -82,7 +82,7 @@ test "bench create_packfile 100 objects" (b : @bench.T) { ///| test "bench create_packfile_with_delta 100" (b : @bench.T) { b.bench(fn() { - let pack = @pack.create_packfile_with_delta( + let pack = @bit_pack.create_packfile_with_delta( bench_similar_100, @bit.PackDeltaMode::OfsDelta, ) @@ -93,7 +93,7 @@ test "bench create_packfile_with_delta 100" (b : @bench.T) { ///| test "bench build_pack_index" (b : @bench.T) { b.bench(fn() { - let idx = try! @pack.build_pack_index(bench_pack_100) + let idx = try! @bit_pack.build_pack_index(bench_pack_100) b.keep(idx.length()) }) } @@ -104,7 +104,7 @@ test "bench encode_type_and_size" (b : @bench.T) { let buf : Array[Byte] = [] for i in 0..<1000 { buf.clear() - @pack.encode_type_and_size(3, i * 100, buf) + @bit_pack.encode_type_and_size(3, i * 100, buf) } b.keep(buf.length()) }) @@ -113,7 +113,7 @@ test "bench encode_type_and_size" (b : @bench.T) { ///| fn make_encoded_header() -> Bytes { let buf : Array[Byte] = [] - @pack.encode_type_and_size(3, 65536, buf) + @bit_pack.encode_type_and_size(3, 65536, buf) Bytes::from_array(buf) } @@ -125,7 +125,7 @@ test "bench decode_type_and_size_at" (b : @bench.T) { b.bench(fn() { let mut sum = 0 for _ in 0..<1000 { - let (type_id, size, _) = try! @pack.decode_type_and_size_at( + let (type_id, size, _) = try! @bit_pack.decode_type_and_size_at( bench_encoded_header, 0, ) sum = sum + type_id + size diff --git a/modules/bit/src/pack/bit_oracle_pack_test.mbt b/modules/bit_pack/src/bit_oracle_pack_test.mbt similarity index 100% rename from modules/bit/src/pack/bit_oracle_pack_test.mbt rename to modules/bit_pack/src/bit_oracle_pack_test.mbt diff --git a/modules/bit/src/pack/gen_packfile.mbt b/modules/bit_pack/src/gen_packfile.mbt similarity index 100% rename from modules/bit/src/pack/gen_packfile.mbt rename to modules/bit_pack/src/gen_packfile.mbt diff --git a/modules/bit/src/pack/moon.pkg b/modules/bit_pack/src/moon.pkg similarity index 92% rename from modules/bit/src/pack/moon.pkg rename to modules/bit_pack/src/moon.pkg index dcb6fb67..49fa5fd2 100644 --- a/modules/bit/src/pack/moon.pkg +++ b/modules/bit_pack/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/zlib" @zlib, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/string" @string, @@ -7,6 +8,7 @@ import { import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/protocol" @protocol, "moonbitlang/async" @async, "moonbitlang/async/process" @process, diff --git a/modules/bit/src/pack/pack_index_write.mbt b/modules/bit_pack/src/pack_index_write.mbt similarity index 100% rename from modules/bit/src/pack/pack_index_write.mbt rename to modules/bit_pack/src/pack_index_write.mbt diff --git a/modules/bit/src/pack/pack_index_write_test.mbt b/modules/bit_pack/src/pack_index_write_test.mbt similarity index 100% rename from modules/bit/src/pack/pack_index_write_test.mbt rename to modules/bit_pack/src/pack_index_write_test.mbt diff --git a/modules/bit/src/pack/packfile.mbt b/modules/bit_pack/src/packfile.mbt similarity index 100% rename from modules/bit/src/pack/packfile.mbt rename to modules/bit_pack/src/packfile.mbt diff --git a/modules/bit/src/pack/packfile_fixture_test.mbt b/modules/bit_pack/src/packfile_fixture_test.mbt similarity index 100% rename from modules/bit/src/pack/packfile_fixture_test.mbt rename to modules/bit_pack/src/packfile_fixture_test.mbt diff --git a/modules/bit/src/pack/packfile_parse.mbt b/modules/bit_pack/src/packfile_parse.mbt similarity index 100% rename from modules/bit/src/pack/packfile_parse.mbt rename to modules/bit_pack/src/packfile_parse.mbt diff --git a/modules/bit/src/pack/packfile_parse_test.mbt b/modules/bit_pack/src/packfile_parse_test.mbt similarity index 100% rename from modules/bit/src/pack/packfile_parse_test.mbt rename to modules/bit_pack/src/packfile_parse_test.mbt diff --git a/modules/bit/src/pack/packfile_test.mbt b/modules/bit_pack/src/packfile_test.mbt similarity index 100% rename from modules/bit/src/pack/packfile_test.mbt rename to modules/bit_pack/src/packfile_test.mbt diff --git a/modules/bit/src/pack/packfile_wbtest.mbt b/modules/bit_pack/src/packfile_wbtest.mbt similarity index 100% rename from modules/bit/src/pack/packfile_wbtest.mbt rename to modules/bit_pack/src/packfile_wbtest.mbt diff --git a/modules/bit/src/pack/pkg.generated.mbti b/modules/bit_pack/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/pack/pkg.generated.mbti rename to modules/bit_pack/src/pkg.generated.mbti diff --git a/modules/bitx_doc/moon.mod.json b/modules/bitx_doc/moon.mod.json index 3f0b3d93..e1588239 100644 --- a/modules/bitx_doc/moon.mod.json +++ b/modules/bitx_doc/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/x": "0.4.40" }, diff --git a/modules/bitx_doc/src/moon.pkg b/modules/bitx_doc/src/moon.pkg index 1719c399..0fd5e82c 100644 --- a/modules/bitx_doc/src/moon.pkg +++ b/modules/bitx_doc/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "moonbitlang/x/encoding" @encoding, "moonbitlang/x/path" @path, } diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json index 974a08fc..f3dee231 100644 --- a/modules/bitx_hub/moon.mod.json +++ b/modules/bitx_hub/moon.mod.json @@ -3,6 +3,8 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_pack": "0.42.2", "mizchi/x": "0.2.0", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40" diff --git a/modules/bitx_hub/src/crypto/moon.pkg b/modules/bitx_hub/src/crypto/moon.pkg index e76bd069..8050d5cd 100644 --- a/modules/bitx_hub/src/crypto/moon.pkg +++ b/modules/bitx_hub/src/crypto/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "moonbitlang/async/process" @process, "moonbitlang/async/js_async" @js_async, "moonbitlang/core/env" @env, diff --git a/modules/bitx_hub/src/moon.pkg b/modules/bitx_hub/src/moon.pkg index 7c570fd2..ce7c55b1 100644 --- a/modules/bitx_hub/src/moon.pkg +++ b/modules/bitx_hub/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @lib, "moonbitlang/core/json" @json, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_hub/src/native/moon.pkg b/modules/bitx_hub/src/native/moon.pkg index 108d8074..8ac826aa 100644 --- a/modules/bitx_hub/src/native/moon.pkg +++ b/modules/bitx_hub/src/native/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, - "mizchi/bit/pack" @pack, + "mizchi/bit_object" @object, + "mizchi/bit_pack" @pack, "mizchi/bit/protocol" @protocol, "mizchi/bit/io/native" @bitnative, "mizchi/bit/lib" @lib, diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index 452ad741..9e6a81dd 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index da7ecba1..5492ddab 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @lib, "moonbitlang/core/buffer" @buffer, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_kv/src/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg index d7bfa5b2..d28fcf18 100644 --- a/modules/bitx_kv/src/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -1,6 +1,7 @@ import { "moonbitlang/async" @async, "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @lib, "mizchi/bit/vfs" @fs, "mizchi/bitx_kv" @kv, diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json index 83a42177..a91ddfa3 100644 --- a/modules/bitx_rebase_ai/moon.mod.json +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/llm": "0.2.2", diff --git a/modules/bitx_rebase_ai/src/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg index edd164d5..1dfee714 100644 --- a/modules/bitx_rebase_ai/src/moon.pkg +++ b/modules/bitx_rebase_ai/src/moon.pkg @@ -1,6 +1,7 @@ import { "moonbitlang/async" @async, "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit/runtime" @runtime, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index 503cd062..6f0fd957 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/zlib": "0.4.5" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index 6cd48b7a..c294e031 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/lib", "mizchi/bit/vfs" @fs, "mizchi/zlib" @zlib, diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json index 41a1c5df..3152e3bf 100644 --- a/modules/bitx_workspace/moon.mod.json +++ b/modules/bitx_workspace/moon.mod.json @@ -3,6 +3,7 @@ "version": "0.42.2", "deps": { "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/bitflow": "0.4.0", diff --git a/modules/bitx_workspace/src/moon.pkg b/modules/bitx_workspace/src/moon.pkg index 3beb1d1b..daa5e709 100644 --- a/modules/bitx_workspace/src/moon.pkg +++ b/modules/bitx_workspace/src/moon.pkg @@ -1,5 +1,6 @@ import { "mizchi/bit" @bit, + "mizchi/bit_object" @object, "mizchi/bit/fingerprint" @fingerprint, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, diff --git a/moon.work b/moon.work index e4319760..82a26295 100644 --- a/moon.work +++ b/moon.work @@ -5,13 +5,16 @@ members = [ "modules/bit_apply", "modules/bit_archive", "modules/bit_bootstrap", + "modules/bit_config", "modules/bit_date", "modules/bit_diff3", "modules/bit_diff_core", "modules/bit_fast_import", "modules/bit_hash", "modules/bit_ignore", + "modules/bit_object", "modules/bit_osfs", + "modules/bit_pack", "modules/bit_trailers", "modules/bit_utils", "modules/bitx_bitconfig", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 8f653c9a..c38f483b 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -21,13 +21,16 @@ const CORE_MODULES = new Set([ "mizchi/bit_apply", "mizchi/bit_archive", "mizchi/bit_bootstrap", + "mizchi/bit_config", "mizchi/bit_date", "mizchi/bit_diff3", "mizchi/bit_diff_core", "mizchi/bit_fast_import", "mizchi/bit_hash", "mizchi/bit_ignore", + "mizchi/bit_object", "mizchi/bit_osfs", + "mizchi/bit_pack", "mizchi/bit_trailers", "mizchi/bit_utils", ]); From 06d90aec0c3e2cdb813522703c71afdd5ff9e8d5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 17:24:32 +0000 Subject: [PATCH 07/26] refactor: extract bit_types, bit_protocol, bit_reftable (wave 3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/types → modules/bit_types (shared trait/type defs) src/protocol → modules/bit_protocol (gix-protocol + gix-transport) src/reftable → modules/bit_reftable (reftable backend) Same transitive-import handling as wave 2: every moon.pkg that imports mizchi/bit and uses @bit. (FileSystem / RepoFileSystem / etc.) now also imports mizchi/bit_types, and the containing modules declare mizchi/bit_types in moon.mod.json deps. moon check passes. Tests: - mizchi/bit_types: 0 (no tests) - mizchi/bit_protocol: 30/30 - mizchi/bit_reftable: 9/9 - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 7 +++- modules/bit/moon.mod.json | 3 ++ modules/bit/src/cmd/bit/moon.pkg | 5 +-- modules/bit/src/cmd/git-bit/moon.pkg | 1 + modules/bit/src/diff/moon.pkg | 1 + modules/bit/src/fingerprint/moon.pkg | 1 + modules/bit/src/fuzz_tests/moon.pkg | 3 +- modules/bit/src/grep/moon.pkg | 1 + modules/bit/src/io/moon.pkg | 2 +- modules/bit/src/io/native/moon.pkg | 3 +- modules/bit/src/lib/moon.pkg | 5 +-- modules/bit/src/lib/native/moon.pkg | 3 +- modules/bit/src/moon.pkg | 2 +- modules/bit/src/pack_ops/moon.pkg | 1 + modules/bit/src/refs/moon.pkg | 3 +- modules/bit/src/remote/moon.pkg | 1 + modules/bit/src/repo/moon.pkg | 2 +- modules/bit/src/repo_ops/moon.pkg | 2 +- modules/bit/src/runtime/moon.pkg | 1 + modules/bit/src/tests/moon.pkg | 3 +- modules/bit/src/vfs/moon.pkg | 1 + modules/bit/src/worktree/moon.pkg | 1 + modules/bit_osfs/moon.mod.json | 1 + modules/bit_osfs/src/moon.pkg | 1 + modules/bit_pack/moon.mod.json | 2 ++ modules/bit_pack/src/moon.pkg | 4 ++- modules/bit_protocol/moon.mod.json | 17 ++++++++++ .../src}/bench_test.mbt | 32 +++++++++---------- .../protocol => bit_protocol/src}/moon.pkg | 1 + .../src}/pkg.generated.mbti | 0 .../protocol => bit_protocol/src}/pktline.mbt | 0 .../src}/pktline_test.mbt | 0 .../src}/remote_common.mbt | 0 .../src}/remote_test.mbt | 0 .../src}/transport.mbt | 0 .../src}/upload_pack_common.mbt | 0 .../src}/upload_pack_http_common.mbt | 0 .../src}/upload_pack_http_wbtest.mbt | 0 .../src}/upload_pack_remote_wasm.mbt | 0 .../src}/upload_pack_remote_wasm_wbtest.mbt | 0 modules/bit_reftable/moon.mod.json | 15 +++++++++ .../reftable => bit_reftable/src}/moon.pkg | 1 + .../src}/pkg.generated.mbti | 0 .../src}/reftable.mbt | 0 .../src}/reftable_wbtest.mbt | 0 .../reftable => bit_reftable/src}/stack.mbt | 0 .../reftable => bit_reftable/src}/writer.mbt | 0 modules/bit_types/moon.mod.json | 13 ++++++++ .../src/types => bit_types/src}/contracts.mbt | 0 .../src/types => bit_types/src}/git_types.mbt | 0 .../{bit/src/types => bit_types/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bitx_doc/moon.mod.json | 1 + modules/bitx_doc/src/moon.pkg | 1 + modules/bitx_hub/moon.mod.json | 2 ++ modules/bitx_hub/src/crypto/moon.pkg | 1 + modules/bitx_hub/src/moon.pkg | 1 + modules/bitx_hub/src/native/moon.pkg | 3 +- modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 1 + modules/bitx_kv/src/native/moon.pkg | 1 + modules/bitx_rebase_ai/moon.mod.json | 1 + modules/bitx_rebase_ai/src/moon.pkg | 1 + modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 1 + modules/bitx_workspace/moon.mod.json | 1 + modules/bitx_workspace/src/moon.pkg | 1 + moon.work | 3 ++ tools/check-layers.mjs | 3 ++ 69 files changed, 131 insertions(+), 32 deletions(-) create mode 100644 modules/bit_protocol/moon.mod.json rename modules/{bit/src/protocol => bit_protocol/src}/bench_test.mbt (76%) rename modules/{bit/src/protocol => bit_protocol/src}/moon.pkg (95%) rename modules/{bit/src/protocol => bit_protocol/src}/pkg.generated.mbti (100%) rename modules/{bit/src/protocol => bit_protocol/src}/pktline.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/pktline_test.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/remote_common.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/remote_test.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/transport.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/upload_pack_common.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/upload_pack_http_common.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/upload_pack_http_wbtest.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/upload_pack_remote_wasm.mbt (100%) rename modules/{bit/src/protocol => bit_protocol/src}/upload_pack_remote_wasm_wbtest.mbt (100%) create mode 100644 modules/bit_reftable/moon.mod.json rename modules/{bit/src/reftable => bit_reftable/src}/moon.pkg (73%) rename modules/{bit/src/reftable => bit_reftable/src}/pkg.generated.mbti (100%) rename modules/{bit/src/reftable => bit_reftable/src}/reftable.mbt (100%) rename modules/{bit/src/reftable => bit_reftable/src}/reftable_wbtest.mbt (100%) rename modules/{bit/src/reftable => bit_reftable/src}/stack.mbt (100%) rename modules/{bit/src/reftable => bit_reftable/src}/writer.mbt (100%) create mode 100644 modules/bit_types/moon.mod.json rename modules/{bit/src/types => bit_types/src}/contracts.mbt (100%) rename modules/{bit/src/types => bit_types/src}/git_types.mbt (100%) rename modules/{bit/src/types => bit_types/src}/moon.pkg (100%) rename modules/{bit/src/types => bit_types/src}/pkg.generated.mbti (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index b16a0742..6b72ca4a 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -34,7 +34,10 @@ modules/ bit_object/ bit_osfs/ bit_pack/ + bit_protocol/ + bit_reftable/ bit_trailers/ + bit_types/ bit_utils/ bitx_bitconfig/ ← extension modules (non-Git features) bitx_doc/ @@ -86,7 +89,9 @@ is to keep extracting until every core package is its own module. | `mizchi/bit_config` | `modules/bit_config/src` | `gix-config` | | `mizchi/bit_object` | `modules/bit_object/src` | `gix-object` | | `mizchi/bit_pack` | `modules/bit_pack/src` | `gix-pack` | -| `mizchi/bit/types` | `modules/bit/src/types` | (shared types, re-exports object) | +| `mizchi/bit_protocol` | `modules/bit_protocol/src` | `gix-protocol` + `gix-transport` | +| `mizchi/bit_reftable` | `modules/bit_reftable/src` | (reftable backend) | +| `mizchi/bit_types` | `modules/bit_types/src` | (shared types, re-exports object) | | `mizchi/bit/io` | `modules/bit/src/io` | `gix-fs` (abstract) | | `mizchi/bit/io/native` | `modules/bit/src/io/native` | `gix-fs` (native bindings) | | `mizchi/bit/refs` | `modules/bit/src/refs` | `gix-ref` | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index de2f20e0..10ff3b61 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -24,7 +24,10 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_pack": "0.42.2", + "mizchi/bit_protocol": "0.42.2", + "mizchi/bit_reftable": "0.42.2", "mizchi/bit_trailers": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/bitx_bitconfig": "0.42.2", "mizchi/bitx_doc": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 5eba0bbe..1525d8d3 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -2,11 +2,12 @@ import { "mizchi/bit_bootstrap" @bootstrap, "mizchi/bit" @bitcore, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_object" @bitobject, "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/bit/lib" @bitlib, "mizchi/bit_archive" @tar, "mizchi/bit_apply" @apply, @@ -30,7 +31,7 @@ import { "mizchi/bitx_subdir" @subdir, "mizchi/bitx_bitconfig" @bitconfig, "mizchi/bitx_workspace" @workspace, - "mizchi/bit/reftable" @reftable, + "mizchi/bit_reftable" @reftable, "mizchi/bit/runtime" @runtime, "mizchi/bit_utils" @string_utils, "mizchi/zlib" @zlib, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index f030a4cf..996e757b 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bitcore, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg index 7fd186c3..fa300c48 100644 --- a/modules/bit/src/diff/moon.pkg +++ b/modules/bit/src/diff/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_diff_core" @diff_core, "mizchi/bit/io" @bitio, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/fingerprint/moon.pkg b/modules/bit/src/fingerprint/moon.pkg index 34f3d418..6b06c0e1 100644 --- a/modules/bit/src/fingerprint/moon.pkg +++ b/modules/bit/src/fingerprint/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit_osfs" @osfs, diff --git a/modules/bit/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg index 891138ff..276800f3 100644 --- a/modules/bit/src/fuzz_tests/moon.pkg +++ b/modules/bit/src/fuzz_tests/moon.pkg @@ -1,8 +1,9 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/bit_ignore" @ignore, "moonbitlang/core/encoding/utf8" @utf8, "mizchi/bit_config" @config_parse, diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg index 97c8fcf0..2f96e9d0 100644 --- a/modules/bit/src/grep/moon.pkg +++ b/modules/bit/src/grep/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_ignore" @ignore, diff --git a/modules/bit/src/io/moon.pkg b/modules/bit/src/io/moon.pkg index fc533ea8..2b16a218 100644 --- a/modules/bit/src/io/moon.pkg +++ b/modules/bit/src/io/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/types" @types, + "mizchi/bit_types" @types, "mizchi/bit_object" @object, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/io/native/moon.pkg b/modules/bit/src/io/native/moon.pkg index 0443ece4..5e9273b6 100644 --- a/modules/bit/src/io/native/moon.pkg +++ b/modules/bit/src/io/native/moon.pkg @@ -1,9 +1,10 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/io" @bitio, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "moonbitlang/async" @async, "moonbitlang/async/fs" @afs, "moonbitlang/async/http" @http, diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index bf2fa325..ce88a70a 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -1,15 +1,16 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/io" @bitio, "mizchi/bit/io/native" @bitnative, "mizchi/bit/refs" @bitrefs, "mizchi/bit/remote" @bitremote, "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/bit_ignore" @ignore, - "mizchi/bit/reftable" @reftable, + "mizchi/bit_reftable" @reftable, "mizchi/bit_utils" @string_utils, "mizchi/bit_date" @date_parse, "mizchi/bit_diff_core" @diff_core, diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg index 0868c7b7..3df2a6df 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit/src/lib/native/moon.pkg @@ -1,8 +1,9 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/bit/lib" @bitlib, "mizchi/bit_ignore" @ignore, "mizchi/bit/io" @bitio, diff --git a/modules/bit/src/moon.pkg b/modules/bit/src/moon.pkg index 3382b1e9..96e0b9cc 100644 --- a/modules/bit/src/moon.pkg +++ b/modules/bit/src/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit/io" @io, "mizchi/bit_object" @object, "mizchi/bit/repo" @repo, - "mizchi/bit/types" @types, + "mizchi/bit_types" @types, } warnings = "-29" diff --git a/modules/bit/src/pack_ops/moon.pkg b/modules/bit/src/pack_ops/moon.pkg index b0a1923d..351690e7 100644 --- a/modules/bit/src/pack_ops/moon.pkg +++ b/modules/bit/src/pack_ops/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit/src/refs/moon.pkg b/modules/bit/src/refs/moon.pkg index 58336e3d..3bdaee85 100644 --- a/modules/bit/src/refs/moon.pkg +++ b/modules/bit/src/refs/moon.pkg @@ -1,7 +1,8 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, - "mizchi/bit/reftable" @reftable, + "mizchi/bit_types" @types, + "mizchi/bit_reftable" @reftable, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/remote/moon.pkg b/modules/bit/src/remote/moon.pkg index 10f1aa0b..2f4b6bf1 100644 --- a/modules/bit/src/remote/moon.pkg +++ b/modules/bit/src/remote/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/repo/moon.pkg b/modules/bit/src/repo/moon.pkg index 8c09ef2c..e9a5d995 100644 --- a/modules/bit/src/repo/moon.pkg +++ b/modules/bit/src/repo/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/types" @types, + "mizchi/bit_types" @types, "mizchi/bit_object" @object, "mizchi/bit/io" @io, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit/src/repo_ops/moon.pkg b/modules/bit/src/repo_ops/moon.pkg index 3cf2141a..84ae3189 100644 --- a/modules/bit/src/repo_ops/moon.pkg +++ b/modules/bit/src/repo_ops/moon.pkg @@ -1,6 +1,6 @@ import { "mizchi/bit/repo" @repo, - "mizchi/bit/types" @types, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_hash" @bithash, "mizchi/bit_object" @object, diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index 35f4ee34..c325d6c5 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, diff --git a/modules/bit/src/tests/moon.pkg b/modules/bit/src/tests/moon.pkg index 1752462e..f2be24a9 100644 --- a/modules/bit/src/tests/moon.pkg +++ b/modules/bit/src/tests/moon.pkg @@ -1,8 +1,9 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/zlib" @zlib, "moonbitlang/core/encoding/utf8", } for "test" diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg index 58da1e81..95a7040f 100644 --- a/modules/bit/src/vfs/moon.pkg +++ b/modules/bit/src/vfs/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @lib, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/worktree/moon.pkg b/modules/bit/src/worktree/moon.pkg index b0a1923d..351690e7 100644 --- a/modules/bit/src/worktree/moon.pkg +++ b/modules/bit/src/worktree/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit_osfs/moon.mod.json b/modules/bit_osfs/moon.mod.json index cde7f8a2..a2a2a79f 100644 --- a/modules/bit_osfs/moon.mod.json +++ b/modules/bit_osfs/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "moonbitlang/x": "0.4.40" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bit_osfs/src/moon.pkg b/modules/bit_osfs/src/moon.pkg index 2b71c173..1afa9537 100644 --- a/modules/bit_osfs/src/moon.pkg +++ b/modules/bit_osfs/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "moonbitlang/x/fs", } diff --git a/modules/bit_pack/moon.mod.json b/modules/bit_pack/moon.mod.json index bf4cdbf6..a4f3ad80 100644 --- a/modules/bit_pack/moon.mod.json +++ b/modules/bit_pack/moon.mod.json @@ -4,6 +4,8 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_protocol": "0.42.2", "mizchi/tempfile": "0.1.0", "mizchi/zlib": "0.4.5", "moonbitlang/async": "0.16.6", diff --git a/modules/bit_pack/src/moon.pkg b/modules/bit_pack/src/moon.pkg index 49fa5fd2..90cabc15 100644 --- a/modules/bit_pack/src/moon.pkg +++ b/modules/bit_pack/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/zlib" @zlib, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/string" @string, @@ -9,7 +10,8 @@ import { import { "mizchi/bit" @bit, "mizchi/bit_object" @object, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_types" @types, + "mizchi/bit_protocol" @protocol, "moonbitlang/async" @async, "moonbitlang/async/process" @process, "moonbitlang/x/fs", diff --git a/modules/bit_protocol/moon.mod.json b/modules/bit_protocol/moon.mod.json new file mode 100644 index 00000000..5390edcd --- /dev/null +++ b/modules/bit_protocol/moon.mod.json @@ -0,0 +1,17 @@ +{ + "name": "mizchi/bit_protocol", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_pack": "0.42.2", + "moonbitlang/async": "0.16.6" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "protocol", "transport"], + "description": "Git wire protocol + transport (gix-protocol + gix-transport)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/protocol/bench_test.mbt b/modules/bit_protocol/src/bench_test.mbt similarity index 76% rename from modules/bit/src/protocol/bench_test.mbt rename to modules/bit_protocol/src/bench_test.mbt index cef388b1..7370222a 100644 --- a/modules/bit/src/protocol/bench_test.mbt +++ b/modules/bit_protocol/src/bench_test.mbt @@ -24,12 +24,12 @@ fn make_encoded_packets(count : Int) -> Bytes { let parts : Array[Byte] = [] for i in 0.. Bytes { } else { hex + " refs/heads/branch-\{i}\n" } - let encoded = @protocol.pktline_encode(line) + let encoded = @bit_protocol.pktline_encode(line) for j in 0.. @protocol.PushRequest { +fn make_push_request() -> @bit_protocol.PushRequest { let old_id = @bit.ObjectId::zero() let new_id = try! @bit.ObjectId::from_hex( "ce013625030ba8dba906f756967f9e9ca394464a", @@ -93,16 +93,16 @@ fn make_push_request() -> @protocol.PushRequest { let packfile = Bytes::from_array([ b'P', b'A', b'C', b'K', 0, 0, 0, 2, 0, 0, 0, 0, ]) - @protocol.PushRequest::new(old_id, new_id, "refs/heads/main", packfile) + @bit_protocol.PushRequest::new(old_id, new_id, "refs/heads/main", packfile) } ///| -let bench_push_req : @protocol.PushRequest = make_push_request() +let bench_push_req : @bit_protocol.PushRequest = make_push_request() ///| test "bench pktline_encode" (b : @bench.T) { b.bench(fn() { - let encoded = @protocol.pktline_encode(bench_pktline_str) + let encoded = @bit_protocol.pktline_encode(bench_pktline_str) b.keep(encoded.length()) }) } @@ -110,7 +110,7 @@ test "bench pktline_encode" (b : @bench.T) { ///| test "bench pktline_encode_bytes 1KB" (b : @bench.T) { b.bench(fn() { - let encoded = @protocol.pktline_encode_bytes(bench_1kb_bytes) + let encoded = @bit_protocol.pktline_encode_bytes(bench_1kb_bytes) b.keep(encoded.length()) }) } @@ -118,7 +118,7 @@ test "bench pktline_encode_bytes 1KB" (b : @bench.T) { ///| test "bench pktline_decode 100 packets" (b : @bench.T) { b.bench(fn() { - let packets = try! @protocol.pktline_decode(bench_encoded_100) + let packets = try! @bit_protocol.pktline_decode(bench_encoded_100) b.keep(packets.length()) }) } @@ -126,7 +126,7 @@ test "bench pktline_decode 100 packets" (b : @bench.T) { ///| test "bench parse_refs 50 refs" (b : @bench.T) { b.bench(fn() { - let refs = try! @protocol.parse_refs(bench_refs_50) + let refs = try! @bit_protocol.parse_refs(bench_refs_50) b.keep(refs.length()) }) } @@ -134,7 +134,7 @@ test "bench parse_refs 50 refs" (b : @bench.T) { ///| test "bench build_fetch_request_v2" (b : @bench.T) { b.bench(fn() { - let req = @protocol.build_fetch_request_v2("git/moonbit", bench_want_ids, 0) + let req = @bit_protocol.build_fetch_request_v2("git/moonbit", bench_want_ids, 0) b.keep(req.length()) }) } @@ -142,7 +142,7 @@ test "bench build_fetch_request_v2" (b : @bench.T) { ///| test "bench build_fetch_request_v0" (b : @bench.T) { b.bench(fn() { - let req = @protocol.build_fetch_request_v0( + let req = @bit_protocol.build_fetch_request_v0( "git/moonbit", bench_want_ids, bench_caps, ) b.keep(req.length()) @@ -152,7 +152,7 @@ test "bench build_fetch_request_v0" (b : @bench.T) { ///| test "bench parse_remote http" (b : @bench.T) { b.bench(fn() { - let spec = @protocol.parse_remote("https://github.com/user/repo.git") + let spec = @bit_protocol.parse_remote("https://github.com/user/repo.git") b.keep(spec.path.length()) }) } @@ -160,7 +160,7 @@ test "bench parse_remote http" (b : @bench.T) { ///| test "bench parse_remote ssh" (b : @bench.T) { b.bench(fn() { - let spec = @protocol.parse_remote("git@github.com:user/repo.git") + let spec = @bit_protocol.parse_remote("git@github.com:user/repo.git") b.keep(spec.path.length()) }) } @@ -168,7 +168,7 @@ test "bench parse_remote ssh" (b : @bench.T) { ///| test "bench build_receive_pack_body" (b : @bench.T) { b.bench(fn() { - let body = @protocol.build_receive_pack_body(bench_push_req) + let body = @bit_protocol.build_receive_pack_body(bench_push_req) b.keep(body.length()) }) } diff --git a/modules/bit/src/protocol/moon.pkg b/modules/bit_protocol/src/moon.pkg similarity index 95% rename from modules/bit/src/protocol/moon.pkg rename to modules/bit_protocol/src/moon.pkg index 20d8c652..d1db52c6 100644 --- a/modules/bit/src/protocol/moon.pkg +++ b/modules/bit_protocol/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, "moonbitlang/async" @async, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit/src/protocol/pkg.generated.mbti b/modules/bit_protocol/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/protocol/pkg.generated.mbti rename to modules/bit_protocol/src/pkg.generated.mbti diff --git a/modules/bit/src/protocol/pktline.mbt b/modules/bit_protocol/src/pktline.mbt similarity index 100% rename from modules/bit/src/protocol/pktline.mbt rename to modules/bit_protocol/src/pktline.mbt diff --git a/modules/bit/src/protocol/pktline_test.mbt b/modules/bit_protocol/src/pktline_test.mbt similarity index 100% rename from modules/bit/src/protocol/pktline_test.mbt rename to modules/bit_protocol/src/pktline_test.mbt diff --git a/modules/bit/src/protocol/remote_common.mbt b/modules/bit_protocol/src/remote_common.mbt similarity index 100% rename from modules/bit/src/protocol/remote_common.mbt rename to modules/bit_protocol/src/remote_common.mbt diff --git a/modules/bit/src/protocol/remote_test.mbt b/modules/bit_protocol/src/remote_test.mbt similarity index 100% rename from modules/bit/src/protocol/remote_test.mbt rename to modules/bit_protocol/src/remote_test.mbt diff --git a/modules/bit/src/protocol/transport.mbt b/modules/bit_protocol/src/transport.mbt similarity index 100% rename from modules/bit/src/protocol/transport.mbt rename to modules/bit_protocol/src/transport.mbt diff --git a/modules/bit/src/protocol/upload_pack_common.mbt b/modules/bit_protocol/src/upload_pack_common.mbt similarity index 100% rename from modules/bit/src/protocol/upload_pack_common.mbt rename to modules/bit_protocol/src/upload_pack_common.mbt diff --git a/modules/bit/src/protocol/upload_pack_http_common.mbt b/modules/bit_protocol/src/upload_pack_http_common.mbt similarity index 100% rename from modules/bit/src/protocol/upload_pack_http_common.mbt rename to modules/bit_protocol/src/upload_pack_http_common.mbt diff --git a/modules/bit/src/protocol/upload_pack_http_wbtest.mbt b/modules/bit_protocol/src/upload_pack_http_wbtest.mbt similarity index 100% rename from modules/bit/src/protocol/upload_pack_http_wbtest.mbt rename to modules/bit_protocol/src/upload_pack_http_wbtest.mbt diff --git a/modules/bit/src/protocol/upload_pack_remote_wasm.mbt b/modules/bit_protocol/src/upload_pack_remote_wasm.mbt similarity index 100% rename from modules/bit/src/protocol/upload_pack_remote_wasm.mbt rename to modules/bit_protocol/src/upload_pack_remote_wasm.mbt diff --git a/modules/bit/src/protocol/upload_pack_remote_wasm_wbtest.mbt b/modules/bit_protocol/src/upload_pack_remote_wasm_wbtest.mbt similarity index 100% rename from modules/bit/src/protocol/upload_pack_remote_wasm_wbtest.mbt rename to modules/bit_protocol/src/upload_pack_remote_wasm_wbtest.mbt diff --git a/modules/bit_reftable/moon.mod.json b/modules/bit_reftable/moon.mod.json new file mode 100644 index 00000000..5644ea26 --- /dev/null +++ b/modules/bit_reftable/moon.mod.json @@ -0,0 +1,15 @@ +{ + "name": "mizchi/bit_reftable", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "reftable"], + "description": "Git reftable backend", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/reftable/moon.pkg b/modules/bit_reftable/src/moon.pkg similarity index 73% rename from modules/bit/src/reftable/moon.pkg rename to modules/bit_reftable/src/moon.pkg index e33ce018..8d07f963 100644 --- a/modules/bit/src/reftable/moon.pkg +++ b/modules/bit_reftable/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, } warnings = "-29" diff --git a/modules/bit/src/reftable/pkg.generated.mbti b/modules/bit_reftable/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/reftable/pkg.generated.mbti rename to modules/bit_reftable/src/pkg.generated.mbti diff --git a/modules/bit/src/reftable/reftable.mbt b/modules/bit_reftable/src/reftable.mbt similarity index 100% rename from modules/bit/src/reftable/reftable.mbt rename to modules/bit_reftable/src/reftable.mbt diff --git a/modules/bit/src/reftable/reftable_wbtest.mbt b/modules/bit_reftable/src/reftable_wbtest.mbt similarity index 100% rename from modules/bit/src/reftable/reftable_wbtest.mbt rename to modules/bit_reftable/src/reftable_wbtest.mbt diff --git a/modules/bit/src/reftable/stack.mbt b/modules/bit_reftable/src/stack.mbt similarity index 100% rename from modules/bit/src/reftable/stack.mbt rename to modules/bit_reftable/src/stack.mbt diff --git a/modules/bit/src/reftable/writer.mbt b/modules/bit_reftable/src/writer.mbt similarity index 100% rename from modules/bit/src/reftable/writer.mbt rename to modules/bit_reftable/src/writer.mbt diff --git a/modules/bit_types/moon.mod.json b/modules/bit_types/moon.mod.json new file mode 100644 index 00000000..fd514abd --- /dev/null +++ b/modules/bit_types/moon.mod.json @@ -0,0 +1,13 @@ +{ + "name": "mizchi/bit_types", + "version": "0.42.2", + "deps": { + "mizchi/bit_object": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "types"], + "description": "Shared types & traits (re-exports from bit_object)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/types/contracts.mbt b/modules/bit_types/src/contracts.mbt similarity index 100% rename from modules/bit/src/types/contracts.mbt rename to modules/bit_types/src/contracts.mbt diff --git a/modules/bit/src/types/git_types.mbt b/modules/bit_types/src/git_types.mbt similarity index 100% rename from modules/bit/src/types/git_types.mbt rename to modules/bit_types/src/git_types.mbt diff --git a/modules/bit/src/types/moon.pkg b/modules/bit_types/src/moon.pkg similarity index 100% rename from modules/bit/src/types/moon.pkg rename to modules/bit_types/src/moon.pkg diff --git a/modules/bit/src/types/pkg.generated.mbti b/modules/bit_types/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/types/pkg.generated.mbti rename to modules/bit_types/src/pkg.generated.mbti diff --git a/modules/bitx_doc/moon.mod.json b/modules/bitx_doc/moon.mod.json index e1588239..8878366c 100644 --- a/modules/bitx_doc/moon.mod.json +++ b/modules/bitx_doc/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/x": "0.4.40" }, diff --git a/modules/bitx_doc/src/moon.pkg b/modules/bitx_doc/src/moon.pkg index 0fd5e82c..c6566b5d 100644 --- a/modules/bitx_doc/src/moon.pkg +++ b/modules/bitx_doc/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "moonbitlang/x/encoding" @encoding, "moonbitlang/x/path" @path, } diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json index f3dee231..04dffab6 100644 --- a/modules/bitx_hub/moon.mod.json +++ b/modules/bitx_hub/moon.mod.json @@ -4,7 +4,9 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", + "mizchi/bit_protocol": "0.42.2", "mizchi/x": "0.2.0", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40" diff --git a/modules/bitx_hub/src/crypto/moon.pkg b/modules/bitx_hub/src/crypto/moon.pkg index 8050d5cd..8f6dcd52 100644 --- a/modules/bitx_hub/src/crypto/moon.pkg +++ b/modules/bitx_hub/src/crypto/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "moonbitlang/async/process" @process, "moonbitlang/async/js_async" @js_async, "moonbitlang/core/env" @env, diff --git a/modules/bitx_hub/src/moon.pkg b/modules/bitx_hub/src/moon.pkg index ce7c55b1..448707ae 100644 --- a/modules/bitx_hub/src/moon.pkg +++ b/modules/bitx_hub/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @lib, "moonbitlang/core/json" @json, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_hub/src/native/moon.pkg b/modules/bitx_hub/src/native/moon.pkg index 8ac826aa..eee30afa 100644 --- a/modules/bitx_hub/src/native/moon.pkg +++ b/modules/bitx_hub/src/native/moon.pkg @@ -1,8 +1,9 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, - "mizchi/bit/protocol" @protocol, + "mizchi/bit_protocol" @protocol, "mizchi/bit/io/native" @bitnative, "mizchi/bit/lib" @lib, "mizchi/bitx_hub" @hub, diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index 9e6a81dd..bf6c40fd 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index 5492ddab..01b6bd03 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @lib, "moonbitlang/core/buffer" @buffer, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_kv/src/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg index d28fcf18..5a4f5904 100644 --- a/modules/bitx_kv/src/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -2,6 +2,7 @@ import { "moonbitlang/async" @async, "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @lib, "mizchi/bit/vfs" @fs, "mizchi/bitx_kv" @kv, diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json index a91ddfa3..237df364 100644 --- a/modules/bitx_rebase_ai/moon.mod.json +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/llm": "0.2.2", diff --git a/modules/bitx_rebase_ai/src/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg index 1dfee714..f637a944 100644 --- a/modules/bitx_rebase_ai/src/moon.pkg +++ b/modules/bitx_rebase_ai/src/moon.pkg @@ -2,6 +2,7 @@ import { "moonbitlang/async" @async, "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit/runtime" @runtime, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index 6f0fd957..f3a46937 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/zlib": "0.4.5" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index c294e031..ea51d544 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/lib", "mizchi/bit/vfs" @fs, "mizchi/zlib" @zlib, diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json index 3152e3bf..a6484152 100644 --- a/modules/bitx_workspace/moon.mod.json +++ b/modules/bitx_workspace/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/bitflow": "0.4.0", diff --git a/modules/bitx_workspace/src/moon.pkg b/modules/bitx_workspace/src/moon.pkg index daa5e709..ccaa5750 100644 --- a/modules/bitx_workspace/src/moon.pkg +++ b/modules/bitx_workspace/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_types" @types, "mizchi/bit/fingerprint" @fingerprint, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, diff --git a/moon.work b/moon.work index 82a26295..8cc3a78c 100644 --- a/moon.work +++ b/moon.work @@ -15,7 +15,10 @@ members = [ "modules/bit_object", "modules/bit_osfs", "modules/bit_pack", + "modules/bit_protocol", + "modules/bit_reftable", "modules/bit_trailers", + "modules/bit_types", "modules/bit_utils", "modules/bitx_bitconfig", "modules/bitx_doc", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index c38f483b..8308f94b 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -31,7 +31,10 @@ const CORE_MODULES = new Set([ "mizchi/bit_object", "mizchi/bit_osfs", "mizchi/bit_pack", + "mizchi/bit_protocol", + "mizchi/bit_reftable", "mizchi/bit_trailers", + "mizchi/bit_types", "mizchi/bit_utils", ]); From 270f4e4f3233b14dabd1de8f15eb6ac3b140cd9a Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 17:27:57 +0000 Subject: [PATCH 08/26] refactor: extract bit_io, bit_refs (wave 4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/io → modules/bit_io (gix-fs abstract + native bindings) src/refs → modules/bit_refs (gix-ref) Both modules now satisfy "no internal mizchi/bit/* runtime dep" after waves 1-3 carved out their direct dependencies. bit_io brings its `native` sub-package along (mizchi/bit_io/native). Consumers of @bit.TestFs and friends had to gain mizchi/bit_io imports + moon.mod.json deps via the same transitive-alias pattern as previous waves. moon check passes. Tests: - mizchi/bit_io: 0 (no tests) - mizchi/bit_refs: 2/2 - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 8 +++++--- modules/bit/moon.mod.json | 2 ++ modules/bit/src/cmd/bit/moon.pkg | 4 ++-- modules/bit/src/diff/moon.pkg | 2 +- modules/bit/src/grep/moon.pkg | 2 +- modules/bit/src/lib/moon.pkg | 6 +++--- modules/bit/src/lib/native/moon.pkg | 4 ++-- modules/bit/src/moon.pkg | 2 +- modules/bit/src/pack_ops/moon.pkg | 1 + modules/bit/src/remote/moon.pkg | 2 +- modules/bit/src/repo/moon.pkg | 4 ++-- modules/bit/src/runtime/moon.pkg | 1 + modules/bit/src/tests/moon.pkg | 1 + modules/bit/src/vfs/moon.pkg | 1 + modules/bit/src/worktree/moon.pkg | 1 + modules/bit_io/moon.mod.json | 19 +++++++++++++++++++ .../src/io => bit_io/src}/env_provider.mbt | 0 modules/{bit/src/io => bit_io/src}/fs.mbt | 0 .../src/io => bit_io/src}/http_client.mbt | 0 modules/{bit/src/io => bit_io/src}/moon.pkg | 0 .../io => bit_io/src}/native/env_native.mbt | 0 .../src}/native/http_client_native.mbt | 0 .../io => bit_io/src}/native/init_native.mbt | 0 .../src/io => bit_io/src}/native/lstat_stub.c | 0 .../src/io => bit_io/src}/native/moon.pkg | 2 +- .../src}/native/pkg.generated.mbti | 0 .../io => bit_io/src}/native/readdir_stub.c | 0 .../src/io => bit_io/src}/native/remote.mbt | 0 .../src}/native/upload_pack_http.mbt | 0 .../src}/native/upload_pack_http_common.mbt | 0 .../native/upload_pack_http_common_wbtest.mbt | 0 .../src}/native/upload_pack_process.mbt | 0 .../native/upload_pack_process_wbtest.mbt | 0 .../src}/native/upload_pack_remote_native.mbt | 0 .../src}/native/worktree_probe_native.mbt | 0 .../src/io => bit_io/src}/pkg.generated.mbti | 0 .../{bit/src/io => bit_io/src}/test_fs.mbt | 0 .../src/io => bit_io/src}/worktree_probe.mbt | 0 modules/bit_protocol/moon.mod.json | 1 + modules/bit_protocol/src/moon.pkg | 1 + modules/bit_refs/moon.mod.json | 17 +++++++++++++++++ .../src/refs => bit_refs/src}/bench_test.mbt | 0 .../{bit/src/refs => bit_refs/src}/moon.pkg | 1 + .../refs => bit_refs/src}/pkg.generated.mbti | 0 .../src/refs => bit_refs/src}/refs_store.mbt | 0 .../refs => bit_refs/src}/refs_store_test.mbt | 0 modules/bitx_hub/moon.mod.json | 1 + modules/bitx_hub/src/moon.pkg | 1 + modules/bitx_hub/src/native/moon.pkg | 3 ++- modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 1 + modules/bitx_kv/src/native/moon.pkg | 1 + modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 1 + moon.work | 2 ++ tools/check-layers.mjs | 2 ++ 56 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 modules/bit_io/moon.mod.json rename modules/{bit/src/io => bit_io/src}/env_provider.mbt (100%) rename modules/{bit/src/io => bit_io/src}/fs.mbt (100%) rename modules/{bit/src/io => bit_io/src}/http_client.mbt (100%) rename modules/{bit/src/io => bit_io/src}/moon.pkg (100%) rename modules/{bit/src/io => bit_io/src}/native/env_native.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/http_client_native.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/init_native.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/lstat_stub.c (100%) rename modules/{bit/src/io => bit_io/src}/native/moon.pkg (97%) rename modules/{bit/src/io => bit_io/src}/native/pkg.generated.mbti (100%) rename modules/{bit/src/io => bit_io/src}/native/readdir_stub.c (100%) rename modules/{bit/src/io => bit_io/src}/native/remote.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_http.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_http_common.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_http_common_wbtest.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_process.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_process_wbtest.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/upload_pack_remote_native.mbt (100%) rename modules/{bit/src/io => bit_io/src}/native/worktree_probe_native.mbt (100%) rename modules/{bit/src/io => bit_io/src}/pkg.generated.mbti (100%) rename modules/{bit/src/io => bit_io/src}/test_fs.mbt (100%) rename modules/{bit/src/io => bit_io/src}/worktree_probe.mbt (100%) create mode 100644 modules/bit_refs/moon.mod.json rename modules/{bit/src/refs => bit_refs/src}/bench_test.mbt (100%) rename modules/{bit/src/refs => bit_refs/src}/moon.pkg (93%) rename modules/{bit/src/refs => bit_refs/src}/pkg.generated.mbti (100%) rename modules/{bit/src/refs => bit_refs/src}/refs_store.mbt (100%) rename modules/{bit/src/refs => bit_refs/src}/refs_store_test.mbt (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index 6b72ca4a..2731e1ac 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -31,10 +31,12 @@ modules/ bit_fast_import/ bit_hash/ bit_ignore/ + bit_io/ bit_object/ bit_osfs/ bit_pack/ bit_protocol/ + bit_refs/ bit_reftable/ bit_trailers/ bit_types/ @@ -92,9 +94,9 @@ is to keep extracting until every core package is its own module. | `mizchi/bit_protocol` | `modules/bit_protocol/src` | `gix-protocol` + `gix-transport` | | `mizchi/bit_reftable` | `modules/bit_reftable/src` | (reftable backend) | | `mizchi/bit_types` | `modules/bit_types/src` | (shared types, re-exports object) | -| `mizchi/bit/io` | `modules/bit/src/io` | `gix-fs` (abstract) | -| `mizchi/bit/io/native` | `modules/bit/src/io/native` | `gix-fs` (native bindings) | -| `mizchi/bit/refs` | `modules/bit/src/refs` | `gix-ref` | +| `mizchi/bit_io` | `modules/bit_io/src` | `gix-fs` (abstract + native) | +| `mizchi/bit_io/native` | `modules/bit_io/src/native` | `gix-fs` (native bindings) | +| `mizchi/bit_refs` | `modules/bit_refs/src` | `gix-ref` | | `mizchi/bit/reftable` | `modules/bit/src/reftable` | (reftable backend) | | `mizchi/bit/protocol` | `modules/bit/src/protocol` | `gix-protocol`/`gix-transport` | | `mizchi/bit/remote` | `modules/bit/src/remote` | `gix-url` / discover | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index 10ff3b61..703fc0f5 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -21,10 +21,12 @@ "mizchi/bit_fast_import": "0.42.2", "mizchi/bit_hash": "0.42.2", "mizchi/bit_ignore": "0.42.2", + "mizchi/bit_io": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_pack": "0.42.2", "mizchi/bit_protocol": "0.42.2", + "mizchi/bit_refs": "0.42.2", "mizchi/bit_reftable": "0.42.2", "mizchi/bit_trailers": "0.42.2", "mizchi/bit_types": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 1525d8d3..aed54a09 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -19,9 +19,9 @@ import { "mizchi/bit/diff" @bitdiff, "mizchi/bit/grep" @bitgrep, "mizchi/bit_ignore" @ignore, - "mizchi/bit/io" @bitio, + "mizchi/bit_io" @bitio, "mizchi/bit/lib/native" @bitlibnative, - "mizchi/bit/io/native" @bitnative, + "mizchi/bit_io/native" @bitnative, "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/native" @hub_native, "mizchi/bitx_rebase_ai" @rebase_ai, diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg index fa300c48..eff55fc0 100644 --- a/modules/bit/src/diff/moon.pkg +++ b/modules/bit/src/diff/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_diff_core" @diff_core, - "mizchi/bit/io" @bitio, + "mizchi/bit_io" @bitio, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "moonbitlang/core/bench" @bench, diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg index 2f96e9d0..b8e4c1d8 100644 --- a/modules/bit/src/grep/moon.pkg +++ b/modules/bit/src/grep/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_ignore" @ignore, - "mizchi/bit/io" @bitio, + "mizchi/bit_io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index ce88a70a..f4669d54 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -2,9 +2,9 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/io" @bitio, - "mizchi/bit/io/native" @bitnative, - "mizchi/bit/refs" @bitrefs, + "mizchi/bit_io" @bitio, + "mizchi/bit_io/native" @bitnative, + "mizchi/bit_refs" @bitrefs, "mizchi/bit/remote" @bitremote, "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg index 3df2a6df..8f6ff1c9 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit/src/lib/native/moon.pkg @@ -6,8 +6,8 @@ import { "mizchi/bit_protocol" @protocol, "mizchi/bit/lib" @bitlib, "mizchi/bit_ignore" @ignore, - "mizchi/bit/io" @bitio, - "mizchi/bit/io/native" @bitnative, + "mizchi/bit_io" @bitio, + "mizchi/bit_io/native" @bitnative, "moonbitlang/async" @async, "moonbitlang/async/fs" @afs, "moonbitlang/async/http" @http, diff --git a/modules/bit/src/moon.pkg b/modules/bit/src/moon.pkg index 96e0b9cc..75312913 100644 --- a/modules/bit/src/moon.pkg +++ b/modules/bit/src/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/io" @io, + "mizchi/bit_io" @io, "mizchi/bit_object" @object, "mizchi/bit/repo" @repo, "mizchi/bit_types" @types, diff --git a/modules/bit/src/pack_ops/moon.pkg b/modules/bit/src/pack_ops/moon.pkg index 351690e7..24f2f9c2 100644 --- a/modules/bit/src/pack_ops/moon.pkg +++ b/modules/bit/src/pack_ops/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit/src/remote/moon.pkg b/modules/bit/src/remote/moon.pkg index 2f4b6bf1..081d5c5b 100644 --- a/modules/bit/src/remote/moon.pkg +++ b/modules/bit/src/remote/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/io" @bitio, + "mizchi/bit_io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/repo/moon.pkg b/modules/bit/src/repo/moon.pkg index e9a5d995..40f394d1 100644 --- a/modules/bit/src/repo/moon.pkg +++ b/modules/bit/src/repo/moon.pkg @@ -1,12 +1,12 @@ import { "mizchi/bit_types" @types, "mizchi/bit_object" @object, - "mizchi/bit/io" @io, + "mizchi/bit_io" @io, "moonbitlang/core/encoding/utf8" @utf8, } import { - "mizchi/bit/io" @io, + "mizchi/bit_io" @io, "moonbitlang/core/test" @test, } for "wbtest" diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index c325d6c5..93c601bd 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, diff --git a/modules/bit/src/tests/moon.pkg b/modules/bit/src/tests/moon.pkg index f2be24a9..d553b382 100644 --- a/modules/bit/src/tests/moon.pkg +++ b/modules/bit/src/tests/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, "mizchi/zlib" @zlib, diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg index 95a7040f..17f532e1 100644 --- a/modules/bit/src/vfs/moon.pkg +++ b/modules/bit/src/vfs/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/worktree/moon.pkg b/modules/bit/src/worktree/moon.pkg index 351690e7..24f2f9c2 100644 --- a/modules/bit/src/worktree/moon.pkg +++ b/modules/bit/src/worktree/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit_io/moon.mod.json b/modules/bit_io/moon.mod.json new file mode 100644 index 00000000..34dcdd98 --- /dev/null +++ b/modules/bit_io/moon.mod.json @@ -0,0 +1,19 @@ +{ + "name": "mizchi/bit_io", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_pack": "0.42.2", + "mizchi/bit_protocol": "0.42.2", + "mizchi/bit_types": "0.42.2", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "fs", "io"], + "description": "Abstract FileSystem traits + native HTTP/FS bindings (gix-fs abstract)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/io/env_provider.mbt b/modules/bit_io/src/env_provider.mbt similarity index 100% rename from modules/bit/src/io/env_provider.mbt rename to modules/bit_io/src/env_provider.mbt diff --git a/modules/bit/src/io/fs.mbt b/modules/bit_io/src/fs.mbt similarity index 100% rename from modules/bit/src/io/fs.mbt rename to modules/bit_io/src/fs.mbt diff --git a/modules/bit/src/io/http_client.mbt b/modules/bit_io/src/http_client.mbt similarity index 100% rename from modules/bit/src/io/http_client.mbt rename to modules/bit_io/src/http_client.mbt diff --git a/modules/bit/src/io/moon.pkg b/modules/bit_io/src/moon.pkg similarity index 100% rename from modules/bit/src/io/moon.pkg rename to modules/bit_io/src/moon.pkg diff --git a/modules/bit/src/io/native/env_native.mbt b/modules/bit_io/src/native/env_native.mbt similarity index 100% rename from modules/bit/src/io/native/env_native.mbt rename to modules/bit_io/src/native/env_native.mbt diff --git a/modules/bit/src/io/native/http_client_native.mbt b/modules/bit_io/src/native/http_client_native.mbt similarity index 100% rename from modules/bit/src/io/native/http_client_native.mbt rename to modules/bit_io/src/native/http_client_native.mbt diff --git a/modules/bit/src/io/native/init_native.mbt b/modules/bit_io/src/native/init_native.mbt similarity index 100% rename from modules/bit/src/io/native/init_native.mbt rename to modules/bit_io/src/native/init_native.mbt diff --git a/modules/bit/src/io/native/lstat_stub.c b/modules/bit_io/src/native/lstat_stub.c similarity index 100% rename from modules/bit/src/io/native/lstat_stub.c rename to modules/bit_io/src/native/lstat_stub.c diff --git a/modules/bit/src/io/native/moon.pkg b/modules/bit_io/src/native/moon.pkg similarity index 97% rename from modules/bit/src/io/native/moon.pkg rename to modules/bit_io/src/native/moon.pkg index 5e9273b6..77f7cc4d 100644 --- a/modules/bit/src/io/native/moon.pkg +++ b/modules/bit_io/src/native/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/io" @bitio, + "mizchi/bit_io" @bitio, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, "moonbitlang/async" @async, diff --git a/modules/bit/src/io/native/pkg.generated.mbti b/modules/bit_io/src/native/pkg.generated.mbti similarity index 100% rename from modules/bit/src/io/native/pkg.generated.mbti rename to modules/bit_io/src/native/pkg.generated.mbti diff --git a/modules/bit/src/io/native/readdir_stub.c b/modules/bit_io/src/native/readdir_stub.c similarity index 100% rename from modules/bit/src/io/native/readdir_stub.c rename to modules/bit_io/src/native/readdir_stub.c diff --git a/modules/bit/src/io/native/remote.mbt b/modules/bit_io/src/native/remote.mbt similarity index 100% rename from modules/bit/src/io/native/remote.mbt rename to modules/bit_io/src/native/remote.mbt diff --git a/modules/bit/src/io/native/upload_pack_http.mbt b/modules/bit_io/src/native/upload_pack_http.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_http.mbt rename to modules/bit_io/src/native/upload_pack_http.mbt diff --git a/modules/bit/src/io/native/upload_pack_http_common.mbt b/modules/bit_io/src/native/upload_pack_http_common.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_http_common.mbt rename to modules/bit_io/src/native/upload_pack_http_common.mbt diff --git a/modules/bit/src/io/native/upload_pack_http_common_wbtest.mbt b/modules/bit_io/src/native/upload_pack_http_common_wbtest.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_http_common_wbtest.mbt rename to modules/bit_io/src/native/upload_pack_http_common_wbtest.mbt diff --git a/modules/bit/src/io/native/upload_pack_process.mbt b/modules/bit_io/src/native/upload_pack_process.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_process.mbt rename to modules/bit_io/src/native/upload_pack_process.mbt diff --git a/modules/bit/src/io/native/upload_pack_process_wbtest.mbt b/modules/bit_io/src/native/upload_pack_process_wbtest.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_process_wbtest.mbt rename to modules/bit_io/src/native/upload_pack_process_wbtest.mbt diff --git a/modules/bit/src/io/native/upload_pack_remote_native.mbt b/modules/bit_io/src/native/upload_pack_remote_native.mbt similarity index 100% rename from modules/bit/src/io/native/upload_pack_remote_native.mbt rename to modules/bit_io/src/native/upload_pack_remote_native.mbt diff --git a/modules/bit/src/io/native/worktree_probe_native.mbt b/modules/bit_io/src/native/worktree_probe_native.mbt similarity index 100% rename from modules/bit/src/io/native/worktree_probe_native.mbt rename to modules/bit_io/src/native/worktree_probe_native.mbt diff --git a/modules/bit/src/io/pkg.generated.mbti b/modules/bit_io/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/io/pkg.generated.mbti rename to modules/bit_io/src/pkg.generated.mbti diff --git a/modules/bit/src/io/test_fs.mbt b/modules/bit_io/src/test_fs.mbt similarity index 100% rename from modules/bit/src/io/test_fs.mbt rename to modules/bit_io/src/test_fs.mbt diff --git a/modules/bit/src/io/worktree_probe.mbt b/modules/bit_io/src/worktree_probe.mbt similarity index 100% rename from modules/bit/src/io/worktree_probe.mbt rename to modules/bit_io/src/worktree_probe.mbt diff --git a/modules/bit_protocol/moon.mod.json b/modules/bit_protocol/moon.mod.json index 5390edcd..f6ca8b07 100644 --- a/modules/bit_protocol/moon.mod.json +++ b/modules/bit_protocol/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", "moonbitlang/async": "0.16.6" diff --git a/modules/bit_protocol/src/moon.pkg b/modules/bit_protocol/src/moon.pkg index d1db52c6..31548b80 100644 --- a/modules/bit_protocol/src/moon.pkg +++ b/modules/bit_protocol/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit_pack" @pack, "moonbitlang/async" @async, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit_refs/moon.mod.json b/modules/bit_refs/moon.mod.json new file mode 100644 index 00000000..56e87edf --- /dev/null +++ b/modules/bit_refs/moon.mod.json @@ -0,0 +1,17 @@ +{ + "name": "mizchi/bit_refs", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_reftable": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "ref"], + "description": "Git reference store (gix-ref equivalent)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/refs/bench_test.mbt b/modules/bit_refs/src/bench_test.mbt similarity index 100% rename from modules/bit/src/refs/bench_test.mbt rename to modules/bit_refs/src/bench_test.mbt diff --git a/modules/bit/src/refs/moon.pkg b/modules/bit_refs/src/moon.pkg similarity index 93% rename from modules/bit/src/refs/moon.pkg rename to modules/bit_refs/src/moon.pkg index 3bdaee85..9715fcd8 100644 --- a/modules/bit/src/refs/moon.pkg +++ b/modules/bit_refs/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit_reftable" @reftable, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bit/src/refs/pkg.generated.mbti b/modules/bit_refs/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/refs/pkg.generated.mbti rename to modules/bit_refs/src/pkg.generated.mbti diff --git a/modules/bit/src/refs/refs_store.mbt b/modules/bit_refs/src/refs_store.mbt similarity index 100% rename from modules/bit/src/refs/refs_store.mbt rename to modules/bit_refs/src/refs_store.mbt diff --git a/modules/bit/src/refs/refs_store_test.mbt b/modules/bit_refs/src/refs_store_test.mbt similarity index 100% rename from modules/bit/src/refs/refs_store_test.mbt rename to modules/bit_refs/src/refs_store_test.mbt diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json index 04dffab6..26e7ab3f 100644 --- a/modules/bitx_hub/moon.mod.json +++ b/modules/bitx_hub/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", "mizchi/bit_protocol": "0.42.2", diff --git a/modules/bitx_hub/src/moon.pkg b/modules/bitx_hub/src/moon.pkg index 448707ae..78fe19d1 100644 --- a/modules/bitx_hub/src/moon.pkg +++ b/modules/bitx_hub/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/json" @json, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_hub/src/native/moon.pkg b/modules/bitx_hub/src/native/moon.pkg index eee30afa..b91c6c5d 100644 --- a/modules/bitx_hub/src/native/moon.pkg +++ b/modules/bitx_hub/src/native/moon.pkg @@ -4,7 +4,8 @@ import { "mizchi/bit_types" @types, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, - "mizchi/bit/io/native" @bitnative, + "mizchi/bit_io/native" @bitnative, + "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/crypto" @crypto, diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index bf6c40fd..e527cfa8 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/async": "0.16.6", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index 01b6bd03..a3b250e5 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/buffer" @buffer, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bitx_kv/src/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg index 5a4f5904..8d3b1356 100644 --- a/modules/bitx_kv/src/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -3,6 +3,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "mizchi/bit/vfs" @fs, "mizchi/bitx_kv" @kv, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index f3a46937..7d7ef023 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/zlib": "0.4.5" }, diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index ea51d544..707d51e3 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_io" @io, "mizchi/bit/lib", "mizchi/bit/vfs" @fs, "mizchi/zlib" @zlib, diff --git a/moon.work b/moon.work index 8cc3a78c..de162e15 100644 --- a/moon.work +++ b/moon.work @@ -12,10 +12,12 @@ members = [ "modules/bit_fast_import", "modules/bit_hash", "modules/bit_ignore", + "modules/bit_io", "modules/bit_object", "modules/bit_osfs", "modules/bit_pack", "modules/bit_protocol", + "modules/bit_refs", "modules/bit_reftable", "modules/bit_trailers", "modules/bit_types", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 8308f94b..9a48bd6e 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -28,10 +28,12 @@ const CORE_MODULES = new Set([ "mizchi/bit_fast_import", "mizchi/bit_hash", "mizchi/bit_ignore", + "mizchi/bit_io", "mizchi/bit_object", "mizchi/bit_osfs", "mizchi/bit_pack", "mizchi/bit_protocol", + "mizchi/bit_refs", "mizchi/bit_reftable", "mizchi/bit_trailers", "mizchi/bit_types", From 29e7680dca1cae4a5c4bf9cd8d21eda135418180 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 17:31:28 +0000 Subject: [PATCH 09/26] refactor: extract bit_remote, bit_repo (wave 5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/remote → modules/bit_remote (gix-url + gix-discover) src/repo → modules/bit_repo (repo handle / materialization) bit_repo introduces a new transitive: types defined here (ObjectStore, CommitInfo) are re-exported through the mizchi/bit root facade. Same pattern as previous waves — consumers gain mizchi/bit_repo imports + moon.mod.json deps. After this wave, mizchi/bit/src/ contains only pack_ops, repo_ops, worktree, diff, lib, vfs, fingerprint, grep, runtime, cmd/, tests/, fuzz_tests/. moon check passes. Tests: - mizchi/bit_remote: 4/4 - mizchi/bit_repo: 2/2 - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 4 ++++ modules/bit/moon.mod.json | 2 ++ modules/bit/src/cmd/bit/moon.pkg | 1 + modules/bit/src/cmd/git-bit/moon.pkg | 1 + modules/bit/src/diff/moon.pkg | 1 + modules/bit/src/fuzz_tests/moon.pkg | 2 +- modules/bit/src/lib/moon.pkg | 3 ++- modules/bit/src/lib/native/moon.pkg | 1 + modules/bit/src/moon.pkg | 2 +- modules/bit/src/repo_ops/moon.pkg | 2 +- modules/bit/src/runtime/moon.pkg | 1 + modules/bit/src/tests/moon.pkg | 1 + modules/bit/src/vfs/moon.pkg | 1 + modules/bit_io/moon.mod.json | 1 + modules/bit_io/src/native/moon.pkg | 1 + modules/bit_pack/moon.mod.json | 1 + modules/bit_pack/src/moon.pkg | 2 ++ modules/bit_protocol/moon.mod.json | 1 + modules/bit_protocol/src/moon.pkg | 1 + modules/bit_remote/moon.mod.json | 16 ++++++++++++++++ .../{bit/src/remote => bit_remote/src}/moon.pkg | 0 .../remote => bit_remote/src}/pkg.generated.mbti | 0 .../remote => bit_remote/src}/remote_path.mbt | 0 .../src}/remote_path_test.mbt | 0 .../src}/remote_shorthand.mbt | 0 .../src}/remote_shorthand_test.mbt | 0 modules/bit_repo/moon.mod.json | 15 +++++++++++++++ modules/{bit/src/repo => bit_repo/src}/core.mbt | 0 .../src/repo => bit_repo/src}/materialize.mbt | 0 .../repo => bit_repo/src}/materialize_wbtest.mbt | 0 modules/{bit/src/repo => bit_repo/src}/moon.pkg | 0 .../src/repo => bit_repo/src}/pkg.generated.mbti | 0 modules/bitx_hub/moon.mod.json | 1 + modules/bitx_hub/src/moon.pkg | 1 + modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 1 + modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 1 + moon.work | 2 ++ tools/check-layers.mjs | 2 ++ 40 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 modules/bit_remote/moon.mod.json rename modules/{bit/src/remote => bit_remote/src}/moon.pkg (100%) rename modules/{bit/src/remote => bit_remote/src}/pkg.generated.mbti (100%) rename modules/{bit/src/remote => bit_remote/src}/remote_path.mbt (100%) rename modules/{bit/src/remote => bit_remote/src}/remote_path_test.mbt (100%) rename modules/{bit/src/remote => bit_remote/src}/remote_shorthand.mbt (100%) rename modules/{bit/src/remote => bit_remote/src}/remote_shorthand_test.mbt (100%) create mode 100644 modules/bit_repo/moon.mod.json rename modules/{bit/src/repo => bit_repo/src}/core.mbt (100%) rename modules/{bit/src/repo => bit_repo/src}/materialize.mbt (100%) rename modules/{bit/src/repo => bit_repo/src}/materialize_wbtest.mbt (100%) rename modules/{bit/src/repo => bit_repo/src}/moon.pkg (100%) rename modules/{bit/src/repo => bit_repo/src}/pkg.generated.mbti (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index 2731e1ac..a6d28497 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -38,6 +38,8 @@ modules/ bit_protocol/ bit_refs/ bit_reftable/ + bit_remote/ + bit_repo/ bit_trailers/ bit_types/ bit_utils/ @@ -97,6 +99,8 @@ is to keep extracting until every core package is its own module. | `mizchi/bit_io` | `modules/bit_io/src` | `gix-fs` (abstract + native) | | `mizchi/bit_io/native` | `modules/bit_io/src/native` | `gix-fs` (native bindings) | | `mizchi/bit_refs` | `modules/bit_refs/src` | `gix-ref` | +| `mizchi/bit_remote` | `modules/bit_remote/src` | `gix-url` + `gix-discover` | +| `mizchi/bit_repo` | `modules/bit_repo/src` | (repo handle) | | `mizchi/bit/reftable` | `modules/bit/src/reftable` | (reftable backend) | | `mizchi/bit/protocol` | `modules/bit/src/protocol` | `gix-protocol`/`gix-transport` | | `mizchi/bit/remote` | `modules/bit/src/remote` | `gix-url` / discover | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index 703fc0f5..e3c8e391 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -28,6 +28,8 @@ "mizchi/bit_protocol": "0.42.2", "mizchi/bit_refs": "0.42.2", "mizchi/bit_reftable": "0.42.2", + "mizchi/bit_remote": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_trailers": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_utils": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index aed54a09..696fba10 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -4,6 +4,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_object" @bitobject, + "mizchi/bit_repo" @repo, "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index 996e757b..677ca5ae 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bitcore, "mizchi/bit_object" @object, + "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit/src/diff/moon.pkg index eff55fc0..011b3944 100644 --- a/modules/bit/src/diff/moon.pkg +++ b/modules/bit/src/diff/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_diff_core" @diff_core, "mizchi/bit_io" @bitio, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg index 276800f3..fecaecc3 100644 --- a/modules/bit/src/fuzz_tests/moon.pkg +++ b/modules/bit/src/fuzz_tests/moon.pkg @@ -8,7 +8,7 @@ import { "moonbitlang/core/encoding/utf8" @utf8, "mizchi/bit_config" @config_parse, "mizchi/bit_date" @date_parse, - "mizchi/bit/repo" @repo, + "mizchi/bit_repo" @repo, "mizchi/bit/lib" @bitlib, } diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index f4669d54..fc3fc342 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -2,10 +2,11 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @bitio, "mizchi/bit_io/native" @bitnative, "mizchi/bit_refs" @bitrefs, - "mizchi/bit/remote" @bitremote, + "mizchi/bit_remote" @bitremote, "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit/src/lib/native/moon.pkg index 8f6ff1c9..7e0c85f2 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit/src/lib/native/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, "mizchi/bit/lib" @bitlib, diff --git a/modules/bit/src/moon.pkg b/modules/bit/src/moon.pkg index 75312913..da813835 100644 --- a/modules/bit/src/moon.pkg +++ b/modules/bit/src/moon.pkg @@ -1,7 +1,7 @@ import { "mizchi/bit_io" @io, "mizchi/bit_object" @object, - "mizchi/bit/repo" @repo, + "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, } diff --git a/modules/bit/src/repo_ops/moon.pkg b/modules/bit/src/repo_ops/moon.pkg index 84ae3189..e6f5bd90 100644 --- a/modules/bit/src/repo_ops/moon.pkg +++ b/modules/bit/src/repo_ops/moon.pkg @@ -1,5 +1,5 @@ import { - "mizchi/bit/repo" @repo, + "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_hash" @bithash, diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index 93c601bd..9e5f83ba 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit/lib" @bitlib, "mizchi/bit/repo_ops" @bitrepo, diff --git a/modules/bit/src/tests/moon.pkg b/modules/bit/src/tests/moon.pkg index d553b382..4bab5079 100644 --- a/modules/bit/src/tests/moon.pkg +++ b/modules/bit/src/tests/moon.pkg @@ -3,6 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_io" @io, + "mizchi/bit_repo" @repo, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, "mizchi/zlib" @zlib, diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit/src/vfs/moon.pkg index 17f532e1..9640d628 100644 --- a/modules/bit/src/vfs/moon.pkg +++ b/modules/bit/src/vfs/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit_io/moon.mod.json b/modules/bit_io/moon.mod.json index 34dcdd98..c8ab0e98 100644 --- a/modules/bit_io/moon.mod.json +++ b/modules/bit_io/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_pack": "0.42.2", "mizchi/bit_protocol": "0.42.2", "mizchi/bit_types": "0.42.2", diff --git a/modules/bit_io/src/native/moon.pkg b/modules/bit_io/src/native/moon.pkg index 77f7cc4d..251bc232 100644 --- a/modules/bit_io/src/native/moon.pkg +++ b/modules/bit_io/src/native/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @bitio, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, diff --git a/modules/bit_pack/moon.mod.json b/modules/bit_pack/moon.mod.json index a4f3ad80..5c70c191 100644 --- a/modules/bit_pack/moon.mod.json +++ b/modules/bit_pack/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_protocol": "0.42.2", "mizchi/tempfile": "0.1.0", diff --git a/modules/bit_pack/src/moon.pkg b/modules/bit_pack/src/moon.pkg index 90cabc15..913a94df 100644 --- a/modules/bit_pack/src/moon.pkg +++ b/modules/bit_pack/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/zlib" @zlib, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/string" @string, @@ -11,6 +12,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_protocol" @protocol, "moonbitlang/async" @async, "moonbitlang/async/process" @process, diff --git a/modules/bit_protocol/moon.mod.json b/modules/bit_protocol/moon.mod.json index f6ca8b07..8d1617d0 100644 --- a/modules/bit_protocol/moon.mod.json +++ b/modules/bit_protocol/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", "moonbitlang/async": "0.16.6" diff --git a/modules/bit_protocol/src/moon.pkg b/modules/bit_protocol/src/moon.pkg index 31548b80..580680ab 100644 --- a/modules/bit_protocol/src/moon.pkg +++ b/modules/bit_protocol/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit_pack" @pack, "moonbitlang/async" @async, diff --git a/modules/bit_remote/moon.mod.json b/modules/bit_remote/moon.mod.json new file mode 100644 index 00000000..13ac4d38 --- /dev/null +++ b/modules/bit_remote/moon.mod.json @@ -0,0 +1,16 @@ +{ + "name": "mizchi/bit_remote", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "remote", "url"], + "description": "Remote URL parsing and .git path resolution (gix-url + gix-discover)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/remote/moon.pkg b/modules/bit_remote/src/moon.pkg similarity index 100% rename from modules/bit/src/remote/moon.pkg rename to modules/bit_remote/src/moon.pkg diff --git a/modules/bit/src/remote/pkg.generated.mbti b/modules/bit_remote/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/remote/pkg.generated.mbti rename to modules/bit_remote/src/pkg.generated.mbti diff --git a/modules/bit/src/remote/remote_path.mbt b/modules/bit_remote/src/remote_path.mbt similarity index 100% rename from modules/bit/src/remote/remote_path.mbt rename to modules/bit_remote/src/remote_path.mbt diff --git a/modules/bit/src/remote/remote_path_test.mbt b/modules/bit_remote/src/remote_path_test.mbt similarity index 100% rename from modules/bit/src/remote/remote_path_test.mbt rename to modules/bit_remote/src/remote_path_test.mbt diff --git a/modules/bit/src/remote/remote_shorthand.mbt b/modules/bit_remote/src/remote_shorthand.mbt similarity index 100% rename from modules/bit/src/remote/remote_shorthand.mbt rename to modules/bit_remote/src/remote_shorthand.mbt diff --git a/modules/bit/src/remote/remote_shorthand_test.mbt b/modules/bit_remote/src/remote_shorthand_test.mbt similarity index 100% rename from modules/bit/src/remote/remote_shorthand_test.mbt rename to modules/bit_remote/src/remote_shorthand_test.mbt diff --git a/modules/bit_repo/moon.mod.json b/modules/bit_repo/moon.mod.json new file mode 100644 index 00000000..ab2e7ab4 --- /dev/null +++ b/modules/bit_repo/moon.mod.json @@ -0,0 +1,15 @@ +{ + "name": "mizchi/bit_repo", + "version": "0.42.2", + "deps": { + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "repo"], + "description": "Repository handle and materialization", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/repo/core.mbt b/modules/bit_repo/src/core.mbt similarity index 100% rename from modules/bit/src/repo/core.mbt rename to modules/bit_repo/src/core.mbt diff --git a/modules/bit/src/repo/materialize.mbt b/modules/bit_repo/src/materialize.mbt similarity index 100% rename from modules/bit/src/repo/materialize.mbt rename to modules/bit_repo/src/materialize.mbt diff --git a/modules/bit/src/repo/materialize_wbtest.mbt b/modules/bit_repo/src/materialize_wbtest.mbt similarity index 100% rename from modules/bit/src/repo/materialize_wbtest.mbt rename to modules/bit_repo/src/materialize_wbtest.mbt diff --git a/modules/bit/src/repo/moon.pkg b/modules/bit_repo/src/moon.pkg similarity index 100% rename from modules/bit/src/repo/moon.pkg rename to modules/bit_repo/src/moon.pkg diff --git a/modules/bit/src/repo/pkg.generated.mbti b/modules/bit_repo/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/repo/pkg.generated.mbti rename to modules/bit_repo/src/pkg.generated.mbti diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json index 26e7ab3f..82d29358 100644 --- a/modules/bitx_hub/moon.mod.json +++ b/modules/bitx_hub/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", diff --git a/modules/bitx_hub/src/moon.pkg b/modules/bitx_hub/src/moon.pkg index 78fe19d1..305a619c 100644 --- a/modules/bitx_hub/src/moon.pkg +++ b/modules/bitx_hub/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/json" @json, diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index e527cfa8..5ed856fa 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_osfs": "0.42.2", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index a3b250e5..c2391d53 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -2,6 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, + "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, "moonbitlang/core/buffer" @buffer, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index 7d7ef023..357fb1a0 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/zlib": "0.4.5" diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index 707d51e3..e08bff51 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -1,6 +1,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, + "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, "mizchi/bit_io" @io, "mizchi/bit/lib", diff --git a/moon.work b/moon.work index de162e15..1156c671 100644 --- a/moon.work +++ b/moon.work @@ -19,6 +19,8 @@ members = [ "modules/bit_protocol", "modules/bit_refs", "modules/bit_reftable", + "modules/bit_remote", + "modules/bit_repo", "modules/bit_trailers", "modules/bit_types", "modules/bit_utils", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 9a48bd6e..5e342b4a 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -35,6 +35,8 @@ const CORE_MODULES = new Set([ "mizchi/bit_protocol", "mizchi/bit_refs", "mizchi/bit_reftable", + "mizchi/bit_remote", + "mizchi/bit_repo", "mizchi/bit_trailers", "mizchi/bit_types", "mizchi/bit_utils", From be6497010b8ee4e43a4f9db669b3cda4197e12a5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 26 May 2026 17:36:23 +0000 Subject: [PATCH 10/26] refactor: extract mid layer modules pack_ops/repo_ops/worktree/diff (wave 6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/pack_ops → modules/bit_pack_ops (collect_reachable_objects, etc.) src/repo_ops → modules/bit_repo_ops (revparse, repository ops) src/worktree → modules/bit_worktree (status / add / commit / rm / mv) src/diff → modules/bit_diff (high-level diff / show) These four still depend on mizchi/bit/lib at runtime, so they are classified as high (not mid) by tools/check-layers.mjs — same as the parking lot the docs already described. Once their lib dep is broken they can be promoted to mid. After this wave modules/bit/src/ contains only: lib, vfs, fingerprint, grep, runtime, cmd/{bit,git-bit}, tests/, fuzz_tests/, top.mbt. moon check passes. Tests: - mizchi/bit_pack_ops: 1/1 - mizchi/bit_repo_ops: 0 (no tests) - mizchi/bit_worktree: 1/1 - mizchi/bit_diff: 0 (no tests) - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 21 +++++++++++++------ modules/bit/moon.mod.json | 4 ++++ modules/bit/src/cmd/bit/moon.pkg | 4 ++-- modules/bit/src/cmd/git-bit/moon.pkg | 2 +- modules/bit/src/grep/moon.pkg | 2 +- modules/bit/src/runtime/moon.pkg | 2 +- modules/bit_diff/moon.mod.json | 19 +++++++++++++++++ .../src/diff => bit_diff/src}/bench_test.mbt | 0 .../src/diff => bit_diff/src}/diff_ops.mbt | 0 .../{bit/src/diff => bit_diff/src}/moon.pkg | 0 .../diff => bit_diff/src}/pkg.generated.mbti | 0 modules/bit_pack_ops/moon.mod.json | 18 ++++++++++++++++ .../pack_ops => bit_pack_ops/src}/moon.pkg | 0 .../pack_ops => bit_pack_ops/src}/pack.mbt | 0 .../src}/pack_test.mbt | 0 .../src}/pkg.generated.mbti | 0 modules/bit_repo_ops/moon.mod.json | 17 +++++++++++++++ .../repo_ops => bit_repo_ops/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/repo_ops.mbt | 0 .../src}/revparse_ops.mbt | 0 modules/bit_worktree/moon.mod.json | 17 +++++++++++++++ .../worktree => bit_worktree/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/worktree.mbt | 0 .../src}/worktree_test.mbt | 0 moon.work | 4 ++++ tools/check-layers.mjs | 19 ++++++++++++++++- 28 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 modules/bit_diff/moon.mod.json rename modules/{bit/src/diff => bit_diff/src}/bench_test.mbt (100%) rename modules/{bit/src/diff => bit_diff/src}/diff_ops.mbt (100%) rename modules/{bit/src/diff => bit_diff/src}/moon.pkg (100%) rename modules/{bit/src/diff => bit_diff/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_pack_ops/moon.mod.json rename modules/{bit/src/pack_ops => bit_pack_ops/src}/moon.pkg (100%) rename modules/{bit/src/pack_ops => bit_pack_ops/src}/pack.mbt (100%) rename modules/{bit/src/pack_ops => bit_pack_ops/src}/pack_test.mbt (100%) rename modules/{bit/src/pack_ops => bit_pack_ops/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_repo_ops/moon.mod.json rename modules/{bit/src/repo_ops => bit_repo_ops/src}/moon.pkg (100%) rename modules/{bit/src/repo_ops => bit_repo_ops/src}/pkg.generated.mbti (100%) rename modules/{bit/src/repo_ops => bit_repo_ops/src}/repo_ops.mbt (100%) rename modules/{bit/src/repo_ops => bit_repo_ops/src}/revparse_ops.mbt (100%) create mode 100644 modules/bit_worktree/moon.mod.json rename modules/{bit/src/worktree => bit_worktree/src}/moon.pkg (100%) rename modules/{bit/src/worktree => bit_worktree/src}/pkg.generated.mbti (100%) rename modules/{bit/src/worktree => bit_worktree/src}/worktree.mbt (100%) rename modules/{bit/src/worktree => bit_worktree/src}/worktree_test.mbt (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index a6d28497..a256df0e 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -26,6 +26,7 @@ modules/ bit_bootstrap/ bit_config/ bit_date/ + bit_diff/ bit_diff3/ bit_diff_core/ bit_fast_import/ @@ -35,14 +36,17 @@ modules/ bit_object/ bit_osfs/ bit_pack/ + bit_pack_ops/ bit_protocol/ bit_refs/ bit_reftable/ bit_remote/ bit_repo/ + bit_repo_ops/ bit_trailers/ bit_types/ bit_utils/ + bit_worktree/ bitx_bitconfig/ ← extension modules (non-Git features) bitx_doc/ bitx_hq/ @@ -110,12 +114,17 @@ is to keep extracting until every core package is its own module. Operations layered on top of `core/*`. May depend on `core/*` only. -| Package | Path | Notes | -|--------------------------|------------------|--------------------------------------| -| `mizchi/bit/repo_ops` | `modules/bit/src/repo_ops` | Repository-level operations | -| `mizchi/bit/pack_ops` | `modules/bit/src/pack_ops` | `collect_reachable_objects`, etc. | -| `mizchi/bit/worktree` | `modules/bit/src/worktree` | status / add / commit / rm / mv | -| `mizchi/bit/diff` | `modules/bit/src/diff` | High-level diff / show | +| Module / Package | Path | Notes | +|--------------------------|-----------------------------------|--------------------------------------| +| `mizchi/bit_repo_ops` | `modules/bit_repo_ops/src` | Repository-level operations | +| `mizchi/bit_pack_ops` | `modules/bit_pack_ops/src` | `collect_reachable_objects`, etc. | +| `mizchi/bit_worktree` | `modules/bit_worktree/src` | status / add / commit / rm / mv | +| `mizchi/bit_diff` | `modules/bit_diff/src` | High-level diff / show | + +(These currently still import `mizchi/bit/lib`, so they are tracked as +**high** by `tools/check-layers.mjs` even though gitoxide-style they +belong to mid. Promoting them once their `lib` dep is broken is on the +roadmap.) ### high (gitoxide `gix` porcelain 相当) diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index e3c8e391..8cc21008 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -16,6 +16,7 @@ "mizchi/bit_bootstrap": "0.42.2", "mizchi/bit_config": "0.42.2", "mizchi/bit_date": "0.42.2", + "mizchi/bit_diff": "0.42.2", "mizchi/bit_diff3": "0.42.2", "mizchi/bit_diff_core": "0.42.2", "mizchi/bit_fast_import": "0.42.2", @@ -25,14 +26,17 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_pack": "0.42.2", + "mizchi/bit_pack_ops": "0.42.2", "mizchi/bit_protocol": "0.42.2", "mizchi/bit_refs": "0.42.2", "mizchi/bit_reftable": "0.42.2", "mizchi/bit_remote": "0.42.2", "mizchi/bit_repo": "0.42.2", + "mizchi/bit_repo_ops": "0.42.2", "mizchi/bit_trailers": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_utils": "0.42.2", + "mizchi/bit_worktree": "0.42.2", "mizchi/bitx_bitconfig": "0.42.2", "mizchi/bitx_doc": "0.42.2", "mizchi/bitx_hq": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 696fba10..b2faaee5 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -16,8 +16,8 @@ import { "mizchi/bit_date" @date_parse, "mizchi/bit_trailers" @trailers, "mizchi/bit_fast_import" @fast_import, - "mizchi/bit/repo_ops" @bitrepo, - "mizchi/bit/diff" @bitdiff, + "mizchi/bit_repo_ops" @bitrepo, + "mizchi/bit_diff" @bitdiff, "mizchi/bit/grep" @bitgrep, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index 677ca5ae..7da73b70 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -6,7 +6,7 @@ import { "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, "mizchi/bit/lib" @bitlib, - "mizchi/bit/repo_ops" @bitrepo, + "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, "mizchi/bitx_hq" @hq, "mizchi/bitx_hub" @hub, diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit/src/grep/moon.pkg index b8e4c1d8..2ba9f1dd 100644 --- a/modules/bit/src/grep/moon.pkg +++ b/modules/bit/src/grep/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, - "mizchi/bit/repo_ops" @bitrepo, + "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit/src/runtime/moon.pkg index 9e5f83ba..20ebcabd 100644 --- a/modules/bit/src/runtime/moon.pkg +++ b/modules/bit/src/runtime/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, "mizchi/bit/lib" @bitlib, - "mizchi/bit/repo_ops" @bitrepo, + "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/env" @env, diff --git a/modules/bit_diff/moon.mod.json b/modules/bit_diff/moon.mod.json new file mode 100644 index 00000000..6d4c9d32 --- /dev/null +++ b/modules/bit_diff/moon.mod.json @@ -0,0 +1,19 @@ +{ + "name": "mizchi/bit_diff", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_diff_core": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_utils": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "diff"], + "description": "High-level diff / show", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/diff/bench_test.mbt b/modules/bit_diff/src/bench_test.mbt similarity index 100% rename from modules/bit/src/diff/bench_test.mbt rename to modules/bit_diff/src/bench_test.mbt diff --git a/modules/bit/src/diff/diff_ops.mbt b/modules/bit_diff/src/diff_ops.mbt similarity index 100% rename from modules/bit/src/diff/diff_ops.mbt rename to modules/bit_diff/src/diff_ops.mbt diff --git a/modules/bit/src/diff/moon.pkg b/modules/bit_diff/src/moon.pkg similarity index 100% rename from modules/bit/src/diff/moon.pkg rename to modules/bit_diff/src/moon.pkg diff --git a/modules/bit/src/diff/pkg.generated.mbti b/modules/bit_diff/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/diff/pkg.generated.mbti rename to modules/bit_diff/src/pkg.generated.mbti diff --git a/modules/bit_pack_ops/moon.mod.json b/modules/bit_pack_ops/moon.mod.json new file mode 100644 index 00000000..e620d7a9 --- /dev/null +++ b/modules/bit_pack_ops/moon.mod.json @@ -0,0 +1,18 @@ +{ + "name": "mizchi/bit_pack_ops", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_pack": "0.42.2", + "mizchi/bit_types": "0.42.2", + "moonbitlang/async": "0.16.6" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "pack"], + "description": "High-level pack operations (collect_reachable_objects, etc.)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/pack_ops/moon.pkg b/modules/bit_pack_ops/src/moon.pkg similarity index 100% rename from modules/bit/src/pack_ops/moon.pkg rename to modules/bit_pack_ops/src/moon.pkg diff --git a/modules/bit/src/pack_ops/pack.mbt b/modules/bit_pack_ops/src/pack.mbt similarity index 100% rename from modules/bit/src/pack_ops/pack.mbt rename to modules/bit_pack_ops/src/pack.mbt diff --git a/modules/bit/src/pack_ops/pack_test.mbt b/modules/bit_pack_ops/src/pack_test.mbt similarity index 100% rename from modules/bit/src/pack_ops/pack_test.mbt rename to modules/bit_pack_ops/src/pack_test.mbt diff --git a/modules/bit/src/pack_ops/pkg.generated.mbti b/modules/bit_pack_ops/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/pack_ops/pkg.generated.mbti rename to modules/bit_pack_ops/src/pkg.generated.mbti diff --git a/modules/bit_repo_ops/moon.mod.json b/modules/bit_repo_ops/moon.mod.json new file mode 100644 index 00000000..e659f056 --- /dev/null +++ b/modules/bit_repo_ops/moon.mod.json @@ -0,0 +1,17 @@ +{ + "name": "mizchi/bit_repo_ops", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_hash": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "repo"], + "description": "Repository-level operations (revparse, etc.)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/repo_ops/moon.pkg b/modules/bit_repo_ops/src/moon.pkg similarity index 100% rename from modules/bit/src/repo_ops/moon.pkg rename to modules/bit_repo_ops/src/moon.pkg diff --git a/modules/bit/src/repo_ops/pkg.generated.mbti b/modules/bit_repo_ops/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/repo_ops/pkg.generated.mbti rename to modules/bit_repo_ops/src/pkg.generated.mbti diff --git a/modules/bit/src/repo_ops/repo_ops.mbt b/modules/bit_repo_ops/src/repo_ops.mbt similarity index 100% rename from modules/bit/src/repo_ops/repo_ops.mbt rename to modules/bit_repo_ops/src/repo_ops.mbt diff --git a/modules/bit/src/repo_ops/revparse_ops.mbt b/modules/bit_repo_ops/src/revparse_ops.mbt similarity index 100% rename from modules/bit/src/repo_ops/revparse_ops.mbt rename to modules/bit_repo_ops/src/revparse_ops.mbt diff --git a/modules/bit_worktree/moon.mod.json b/modules/bit_worktree/moon.mod.json new file mode 100644 index 00000000..b2812d02 --- /dev/null +++ b/modules/bit_worktree/moon.mod.json @@ -0,0 +1,17 @@ +{ + "name": "mizchi/bit_worktree", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_types": "0.42.2", + "moonbitlang/async": "0.16.6" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "worktree", "status"], + "description": "Working-tree operations (status / add / commit / rm / mv)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/worktree/moon.pkg b/modules/bit_worktree/src/moon.pkg similarity index 100% rename from modules/bit/src/worktree/moon.pkg rename to modules/bit_worktree/src/moon.pkg diff --git a/modules/bit/src/worktree/pkg.generated.mbti b/modules/bit_worktree/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/worktree/pkg.generated.mbti rename to modules/bit_worktree/src/pkg.generated.mbti diff --git a/modules/bit/src/worktree/worktree.mbt b/modules/bit_worktree/src/worktree.mbt similarity index 100% rename from modules/bit/src/worktree/worktree.mbt rename to modules/bit_worktree/src/worktree.mbt diff --git a/modules/bit/src/worktree/worktree_test.mbt b/modules/bit_worktree/src/worktree_test.mbt similarity index 100% rename from modules/bit/src/worktree/worktree_test.mbt rename to modules/bit_worktree/src/worktree_test.mbt diff --git a/moon.work b/moon.work index 1156c671..414ff3a3 100644 --- a/moon.work +++ b/moon.work @@ -7,6 +7,7 @@ members = [ "modules/bit_bootstrap", "modules/bit_config", "modules/bit_date", + "modules/bit_diff", "modules/bit_diff3", "modules/bit_diff_core", "modules/bit_fast_import", @@ -16,14 +17,17 @@ members = [ "modules/bit_object", "modules/bit_osfs", "modules/bit_pack", + "modules/bit_pack_ops", "modules/bit_protocol", "modules/bit_refs", "modules/bit_reftable", "modules/bit_remote", "modules/bit_repo", + "modules/bit_repo_ops", "modules/bit_trailers", "modules/bit_types", "modules/bit_utils", + "modules/bit_worktree", "modules/bitx_bitconfig", "modules/bitx_doc", "modules/bitx_hq", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 5e342b4a..9125ad8f 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -42,6 +42,16 @@ const CORE_MODULES = new Set([ "mizchi/bit_utils", ]); +// Standalone "high"-layer modules (carved out of mizchi/bit, still depend +// on mizchi/bit/lib). Long-term direction: break their lib dependency +// and promote to MID, eventually shrinking lib to a thin facade. +const HIGH_MODULES = new Set([ + "mizchi/bit_diff", + "mizchi/bit_pack_ops", + "mizchi/bit_repo_ops", + "mizchi/bit_worktree", +]); + // Layer order (low to high). A package may import from its own layer or any // lower layer. const LAYERS = ["core", "mid", "high", "ext", "cmd"]; @@ -103,10 +113,16 @@ function isCoreModule(pkgPath) { return CORE_MODULES.has(head); } +function isHighModule(pkgPath) { + const head = pkgPath.split("/").slice(0, 2).join("/"); + return HIGH_MODULES.has(head); +} + function isOurModule(pkgPath) { if (pkgPath === MODULE_PREFIX || pkgPath.startsWith(MODULE_PREFIX + "/")) return true; if (isExtModule(pkgPath)) return true; if (isCoreModule(pkgPath)) return true; + if (isHighModule(pkgPath)) return true; return false; } @@ -116,6 +132,7 @@ function classify(pkgPath) { if (!isOurModule(pkgPath)) return null; // external if (isExtModule(pkgPath)) return "ext"; if (isCoreModule(pkgPath)) return "core"; + if (isHighModule(pkgPath)) return "high"; const rel = pkgPath === MODULE_PREFIX ? "" : pkgPath.slice(MODULE_PREFIX.length + 1); const top = rel.split("/")[0]; if (rel === "") return "core"; @@ -128,7 +145,7 @@ function classify(pkgPath) { function topSegment(pkgPath) { if (!isOurModule(pkgPath)) return null; - if (isCoreModule(pkgPath)) { + if (isCoreModule(pkgPath) || isHighModule(pkgPath)) { return pkgPath.split("/").slice(0, 2).join("/"); } if (isExtModule(pkgPath)) { From 959ae3ebcb76dd6803b8be2ecbefd0509a79b4c8 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 02:59:33 +0000 Subject: [PATCH 11/26] refactor: extract bit_vfs, bit_fingerprint, bit_grep, bit_runtime (wave 7) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pull the remaining non-lib high-layer packages out of mizchi/bit into their own modules: src/vfs → modules/bit_vfs src/fingerprint → modules/bit_fingerprint src/grep → modules/bit_grep src/runtime → modules/bit_runtime These still depend on mizchi/bit/lib at runtime, so they remain classified as the high layer (same as wave 6's mid extraction). After this wave modules/bit/src/ has just: lib (high), cmd/, tests/, fuzz_tests/, top.mbt. Consumers updated: bitx_kv / bitx_subdir add bit_vfs dep; bitx_workspace adds bit_fingerprint; bitx_rebase_ai adds bit_runtime. moon check passes. Tests (native): - mizchi/bit_vfs: 50/50 - mizchi/bit_grep: 28/28 - mizchi/bit_runtime: 14/14 - mizchi/bit_fingerprint: 7/9 (2 failures are environment-dependent git-commit signing tests, unrelated to the refactor) - mizchi/bit/lib: 285/285 --- docs/package-layout.md | 10 +++++++-- modules/bit/moon.mod.json | 4 ++++ modules/bit/src/cmd/bit/moon.pkg | 6 +++--- modules/bit/src/lib/moon.pkg | 2 +- modules/bit_fingerprint/moon.mod.json | 18 ++++++++++++++++ .../src}/fingerprint.mbt | 0 .../src}/fingerprint_wbtest.mbt | 0 .../src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 modules/bit_grep/moon.mod.json | 18 ++++++++++++++++ .../{bit/src/grep => bit_grep/src}/moon.pkg | 0 .../src/grep => bit_grep/src}/pattern.mbt | 0 .../grep => bit_grep/src}/pattern_wbtest.mbt | 0 .../grep => bit_grep/src}/pkg.generated.mbti | 0 .../{bit/src/grep => bit_grep/src}/search.mbt | 0 .../grep => bit_grep/src}/search_wbtest.mbt | 0 modules/bit_runtime/moon.mod.json | 20 ++++++++++++++++++ .../src/runtime => bit_runtime/src}/moon.pkg | 0 .../src}/pkg.generated.mbti | 0 .../src}/storage_runtime.mbt | 0 .../src}/storage_runtime_wbtest.mbt | 0 modules/bit_vfs/moon.mod.json | 21 +++++++++++++++++++ .../vfs => bit_vfs/src}/bench_real_test.mbt | 0 .../src/vfs => bit_vfs/src}/bench_test.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/cache.mbt | 0 modules/{bit/src/vfs => bit_vfs/src}/fs.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/fs_test.mbt | 0 .../src/vfs => bit_vfs/src}/fs_wbtest.mbt | 0 .../vfs => bit_vfs/src}/integration_test.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/layer.mbt | 0 modules/{bit/src/vfs => bit_vfs/src}/lru.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/lru_test.mbt | 0 modules/{bit/src/vfs => bit_vfs/src}/moon.pkg | 0 .../src}/partial_clone_test.mbt | 0 modules/{bit/src/vfs => bit_vfs/src}/path.mbt | 0 .../src}/perf_partial_clone_test.mbt | 0 .../vfs => bit_vfs/src}/pkg.generated.mbti | 0 .../{bit/src/vfs => bit_vfs/src}/read_ops.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/snapshot.mbt | 0 .../src/vfs => bit_vfs/src}/tree_builder.mbt | 0 .../{bit/src/vfs => bit_vfs/src}/types.mbt | 0 .../vfs => bit_vfs/src}/verify_lazy_test.mbt | 0 .../src/vfs => bit_vfs/src}/write_ops.mbt | 0 modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 2 +- modules/bitx_kv/src/native/moon.pkg | 2 +- modules/bitx_rebase_ai/moon.mod.json | 1 + modules/bitx_rebase_ai/src/moon.pkg | 2 +- modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 2 +- modules/bitx_workspace/moon.mod.json | 1 + modules/bitx_workspace/src/moon.pkg | 2 +- moon.work | 4 ++++ tools/check-layers.mjs | 4 ++++ 54 files changed, 110 insertions(+), 11 deletions(-) create mode 100644 modules/bit_fingerprint/moon.mod.json rename modules/{bit/src/fingerprint => bit_fingerprint/src}/fingerprint.mbt (100%) rename modules/{bit/src/fingerprint => bit_fingerprint/src}/fingerprint_wbtest.mbt (100%) rename modules/{bit/src/fingerprint => bit_fingerprint/src}/moon.pkg (100%) rename modules/{bit/src/fingerprint => bit_fingerprint/src}/pkg.generated.mbti (100%) create mode 100644 modules/bit_grep/moon.mod.json rename modules/{bit/src/grep => bit_grep/src}/moon.pkg (100%) rename modules/{bit/src/grep => bit_grep/src}/pattern.mbt (100%) rename modules/{bit/src/grep => bit_grep/src}/pattern_wbtest.mbt (100%) rename modules/{bit/src/grep => bit_grep/src}/pkg.generated.mbti (100%) rename modules/{bit/src/grep => bit_grep/src}/search.mbt (100%) rename modules/{bit/src/grep => bit_grep/src}/search_wbtest.mbt (100%) create mode 100644 modules/bit_runtime/moon.mod.json rename modules/{bit/src/runtime => bit_runtime/src}/moon.pkg (100%) rename modules/{bit/src/runtime => bit_runtime/src}/pkg.generated.mbti (100%) rename modules/{bit/src/runtime => bit_runtime/src}/storage_runtime.mbt (100%) rename modules/{bit/src/runtime => bit_runtime/src}/storage_runtime_wbtest.mbt (100%) create mode 100644 modules/bit_vfs/moon.mod.json rename modules/{bit/src/vfs => bit_vfs/src}/bench_real_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/bench_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/cache.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/fs.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/fs_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/fs_wbtest.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/integration_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/layer.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/lru.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/lru_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/moon.pkg (100%) rename modules/{bit/src/vfs => bit_vfs/src}/partial_clone_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/path.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/perf_partial_clone_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/pkg.generated.mbti (100%) rename modules/{bit/src/vfs => bit_vfs/src}/read_ops.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/snapshot.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/tree_builder.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/types.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/verify_lazy_test.mbt (100%) rename modules/{bit/src/vfs => bit_vfs/src}/write_ops.mbt (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index a256df0e..c485abc8 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -30,6 +30,8 @@ modules/ bit_diff3/ bit_diff_core/ bit_fast_import/ + bit_fingerprint/ + bit_grep/ bit_hash/ bit_ignore/ bit_io/ @@ -43,9 +45,11 @@ modules/ bit_remote/ bit_repo/ bit_repo_ops/ + bit_runtime/ bit_trailers/ bit_types/ bit_utils/ + bit_vfs/ bit_worktree/ bitx_bitconfig/ ← extension modules (non-Git features) bitx_doc/ @@ -134,8 +138,10 @@ Porcelain layer. May depend on `core/*` and `mid/*`. Used by `cmd/*` and | Package | Path | Notes | |-------------------------------|--------------------|----------------------------------------------------| | `mizchi/bit/lib` | `modules/bit/src/lib` | High-level / backward-compatible facade | -| `mizchi/bit/vfs` | `modules/bit/src/vfs` | Virtual FS over commits (used by `lib`, `x-kv`, `x-subdir`) | -| `mizchi/bit/fingerprint` | `modules/bit/src/fingerprint` | Workspace fingerprint (used by `x-workspace`) | +| `mizchi/bit_vfs` | `modules/bit_vfs/src` | Virtual FS over commits (used by `lib`, `bitx_kv`, `bitx_subdir`) | +| `mizchi/bit_fingerprint` | `modules/bit_fingerprint/src` | Workspace fingerprint (used by `bitx_workspace`) | +| `mizchi/bit_grep` | `modules/bit_grep/src` | Grep engine over the working tree | +| `mizchi/bit_runtime` | `modules/bit_runtime/src` | Runtime helpers (storage_runtime, etc.) | ### bitx_* (extensions, gitoxide にはない bit 独自機能) diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index 8cc21008..d272d64e 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -20,6 +20,8 @@ "mizchi/bit_diff3": "0.42.2", "mizchi/bit_diff_core": "0.42.2", "mizchi/bit_fast_import": "0.42.2", + "mizchi/bit_fingerprint": "0.42.2", + "mizchi/bit_grep": "0.42.2", "mizchi/bit_hash": "0.42.2", "mizchi/bit_ignore": "0.42.2", "mizchi/bit_io": "0.42.2", @@ -33,9 +35,11 @@ "mizchi/bit_remote": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_repo_ops": "0.42.2", + "mizchi/bit_runtime": "0.42.2", "mizchi/bit_trailers": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_utils": "0.42.2", + "mizchi/bit_vfs": "0.42.2", "mizchi/bit_worktree": "0.42.2", "mizchi/bitx_bitconfig": "0.42.2", "mizchi/bitx_doc": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index b2faaee5..6dd14b4e 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -18,7 +18,7 @@ import { "mizchi/bit_fast_import" @fast_import, "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_diff" @bitdiff, - "mizchi/bit/grep" @bitgrep, + "mizchi/bit_grep" @bitgrep, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, "mizchi/bit/lib/native" @bitlibnative, @@ -26,14 +26,14 @@ import { "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/native" @hub_native, "mizchi/bitx_rebase_ai" @rebase_ai, - "mizchi/bit/vfs" @bitfs, + "mizchi/bit_vfs" @bitfs, "mizchi/bitx_doc" @xdoc, "mizchi/bitx_hq" @hq, "mizchi/bitx_subdir" @subdir, "mizchi/bitx_bitconfig" @bitconfig, "mizchi/bitx_workspace" @workspace, "mizchi/bit_reftable" @reftable, - "mizchi/bit/runtime" @runtime, + "mizchi/bit_runtime" @runtime, "mizchi/bit_utils" @string_utils, "mizchi/zlib" @zlib, "moonbitlang/async" @async, diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit/src/lib/moon.pkg index fc3fc342..b9bb8d5e 100644 --- a/modules/bit/src/lib/moon.pkg +++ b/modules/bit/src/lib/moon.pkg @@ -36,7 +36,7 @@ import { "moonbitlang/async" @async, "moonbitlang/core/bench" @bench, "mizchi/bit_osfs" @osfs, - "mizchi/bit/vfs" @bitfs, + "mizchi/bit_vfs" @bitfs, "moonbitlang/core/test" @test, } for "wbtest" diff --git a/modules/bit_fingerprint/moon.mod.json b/modules/bit_fingerprint/moon.mod.json new file mode 100644 index 00000000..5d73dbfc --- /dev/null +++ b/modules/bit_fingerprint/moon.mod.json @@ -0,0 +1,18 @@ +{ + "name": "mizchi/bit_fingerprint", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_utils": "0.42.2", + "moonbitlang/async": "0.16.6" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "workspace"], + "description": "Workspace fingerprint", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/fingerprint/fingerprint.mbt b/modules/bit_fingerprint/src/fingerprint.mbt similarity index 100% rename from modules/bit/src/fingerprint/fingerprint.mbt rename to modules/bit_fingerprint/src/fingerprint.mbt diff --git a/modules/bit/src/fingerprint/fingerprint_wbtest.mbt b/modules/bit_fingerprint/src/fingerprint_wbtest.mbt similarity index 100% rename from modules/bit/src/fingerprint/fingerprint_wbtest.mbt rename to modules/bit_fingerprint/src/fingerprint_wbtest.mbt diff --git a/modules/bit/src/fingerprint/moon.pkg b/modules/bit_fingerprint/src/moon.pkg similarity index 100% rename from modules/bit/src/fingerprint/moon.pkg rename to modules/bit_fingerprint/src/moon.pkg diff --git a/modules/bit/src/fingerprint/pkg.generated.mbti b/modules/bit_fingerprint/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/fingerprint/pkg.generated.mbti rename to modules/bit_fingerprint/src/pkg.generated.mbti diff --git a/modules/bit_grep/moon.mod.json b/modules/bit_grep/moon.mod.json new file mode 100644 index 00000000..968e7814 --- /dev/null +++ b/modules/bit_grep/moon.mod.json @@ -0,0 +1,18 @@ +{ + "name": "mizchi/bit_grep", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_ignore": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo_ops": "0.42.2", + "mizchi/bit_types": "0.42.2" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "grep"], + "description": "Grep engine over the working tree", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/grep/moon.pkg b/modules/bit_grep/src/moon.pkg similarity index 100% rename from modules/bit/src/grep/moon.pkg rename to modules/bit_grep/src/moon.pkg diff --git a/modules/bit/src/grep/pattern.mbt b/modules/bit_grep/src/pattern.mbt similarity index 100% rename from modules/bit/src/grep/pattern.mbt rename to modules/bit_grep/src/pattern.mbt diff --git a/modules/bit/src/grep/pattern_wbtest.mbt b/modules/bit_grep/src/pattern_wbtest.mbt similarity index 100% rename from modules/bit/src/grep/pattern_wbtest.mbt rename to modules/bit_grep/src/pattern_wbtest.mbt diff --git a/modules/bit/src/grep/pkg.generated.mbti b/modules/bit_grep/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/grep/pkg.generated.mbti rename to modules/bit_grep/src/pkg.generated.mbti diff --git a/modules/bit/src/grep/search.mbt b/modules/bit_grep/src/search.mbt similarity index 100% rename from modules/bit/src/grep/search.mbt rename to modules/bit_grep/src/search.mbt diff --git a/modules/bit/src/grep/search_wbtest.mbt b/modules/bit_grep/src/search_wbtest.mbt similarity index 100% rename from modules/bit/src/grep/search_wbtest.mbt rename to modules/bit_grep/src/search_wbtest.mbt diff --git a/modules/bit_runtime/moon.mod.json b/modules/bit_runtime/moon.mod.json new file mode 100644 index 00000000..2e640970 --- /dev/null +++ b/modules/bit_runtime/moon.mod.json @@ -0,0 +1,20 @@ +{ + "name": "mizchi/bit_runtime", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_repo": "0.42.2", + "mizchi/bit_repo_ops": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_utils": "0.42.2", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "runtime"], + "description": "Runtime helpers (storage_runtime, etc.)", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/runtime/moon.pkg b/modules/bit_runtime/src/moon.pkg similarity index 100% rename from modules/bit/src/runtime/moon.pkg rename to modules/bit_runtime/src/moon.pkg diff --git a/modules/bit/src/runtime/pkg.generated.mbti b/modules/bit_runtime/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/runtime/pkg.generated.mbti rename to modules/bit_runtime/src/pkg.generated.mbti diff --git a/modules/bit/src/runtime/storage_runtime.mbt b/modules/bit_runtime/src/storage_runtime.mbt similarity index 100% rename from modules/bit/src/runtime/storage_runtime.mbt rename to modules/bit_runtime/src/storage_runtime.mbt diff --git a/modules/bit/src/runtime/storage_runtime_wbtest.mbt b/modules/bit_runtime/src/storage_runtime_wbtest.mbt similarity index 100% rename from modules/bit/src/runtime/storage_runtime_wbtest.mbt rename to modules/bit_runtime/src/storage_runtime_wbtest.mbt diff --git a/modules/bit_vfs/moon.mod.json b/modules/bit_vfs/moon.mod.json new file mode 100644 index 00000000..127ed243 --- /dev/null +++ b/modules/bit_vfs/moon.mod.json @@ -0,0 +1,21 @@ +{ + "name": "mizchi/bit_vfs", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_repo": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/zlib": "0.4.5", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "vfs"], + "description": "Virtual FS over commits", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/vfs/bench_real_test.mbt b/modules/bit_vfs/src/bench_real_test.mbt similarity index 100% rename from modules/bit/src/vfs/bench_real_test.mbt rename to modules/bit_vfs/src/bench_real_test.mbt diff --git a/modules/bit/src/vfs/bench_test.mbt b/modules/bit_vfs/src/bench_test.mbt similarity index 100% rename from modules/bit/src/vfs/bench_test.mbt rename to modules/bit_vfs/src/bench_test.mbt diff --git a/modules/bit/src/vfs/cache.mbt b/modules/bit_vfs/src/cache.mbt similarity index 100% rename from modules/bit/src/vfs/cache.mbt rename to modules/bit_vfs/src/cache.mbt diff --git a/modules/bit/src/vfs/fs.mbt b/modules/bit_vfs/src/fs.mbt similarity index 100% rename from modules/bit/src/vfs/fs.mbt rename to modules/bit_vfs/src/fs.mbt diff --git a/modules/bit/src/vfs/fs_test.mbt b/modules/bit_vfs/src/fs_test.mbt similarity index 100% rename from modules/bit/src/vfs/fs_test.mbt rename to modules/bit_vfs/src/fs_test.mbt diff --git a/modules/bit/src/vfs/fs_wbtest.mbt b/modules/bit_vfs/src/fs_wbtest.mbt similarity index 100% rename from modules/bit/src/vfs/fs_wbtest.mbt rename to modules/bit_vfs/src/fs_wbtest.mbt diff --git a/modules/bit/src/vfs/integration_test.mbt b/modules/bit_vfs/src/integration_test.mbt similarity index 100% rename from modules/bit/src/vfs/integration_test.mbt rename to modules/bit_vfs/src/integration_test.mbt diff --git a/modules/bit/src/vfs/layer.mbt b/modules/bit_vfs/src/layer.mbt similarity index 100% rename from modules/bit/src/vfs/layer.mbt rename to modules/bit_vfs/src/layer.mbt diff --git a/modules/bit/src/vfs/lru.mbt b/modules/bit_vfs/src/lru.mbt similarity index 100% rename from modules/bit/src/vfs/lru.mbt rename to modules/bit_vfs/src/lru.mbt diff --git a/modules/bit/src/vfs/lru_test.mbt b/modules/bit_vfs/src/lru_test.mbt similarity index 100% rename from modules/bit/src/vfs/lru_test.mbt rename to modules/bit_vfs/src/lru_test.mbt diff --git a/modules/bit/src/vfs/moon.pkg b/modules/bit_vfs/src/moon.pkg similarity index 100% rename from modules/bit/src/vfs/moon.pkg rename to modules/bit_vfs/src/moon.pkg diff --git a/modules/bit/src/vfs/partial_clone_test.mbt b/modules/bit_vfs/src/partial_clone_test.mbt similarity index 100% rename from modules/bit/src/vfs/partial_clone_test.mbt rename to modules/bit_vfs/src/partial_clone_test.mbt diff --git a/modules/bit/src/vfs/path.mbt b/modules/bit_vfs/src/path.mbt similarity index 100% rename from modules/bit/src/vfs/path.mbt rename to modules/bit_vfs/src/path.mbt diff --git a/modules/bit/src/vfs/perf_partial_clone_test.mbt b/modules/bit_vfs/src/perf_partial_clone_test.mbt similarity index 100% rename from modules/bit/src/vfs/perf_partial_clone_test.mbt rename to modules/bit_vfs/src/perf_partial_clone_test.mbt diff --git a/modules/bit/src/vfs/pkg.generated.mbti b/modules/bit_vfs/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/vfs/pkg.generated.mbti rename to modules/bit_vfs/src/pkg.generated.mbti diff --git a/modules/bit/src/vfs/read_ops.mbt b/modules/bit_vfs/src/read_ops.mbt similarity index 100% rename from modules/bit/src/vfs/read_ops.mbt rename to modules/bit_vfs/src/read_ops.mbt diff --git a/modules/bit/src/vfs/snapshot.mbt b/modules/bit_vfs/src/snapshot.mbt similarity index 100% rename from modules/bit/src/vfs/snapshot.mbt rename to modules/bit_vfs/src/snapshot.mbt diff --git a/modules/bit/src/vfs/tree_builder.mbt b/modules/bit_vfs/src/tree_builder.mbt similarity index 100% rename from modules/bit/src/vfs/tree_builder.mbt rename to modules/bit_vfs/src/tree_builder.mbt diff --git a/modules/bit/src/vfs/types.mbt b/modules/bit_vfs/src/types.mbt similarity index 100% rename from modules/bit/src/vfs/types.mbt rename to modules/bit_vfs/src/types.mbt diff --git a/modules/bit/src/vfs/verify_lazy_test.mbt b/modules/bit_vfs/src/verify_lazy_test.mbt similarity index 100% rename from modules/bit/src/vfs/verify_lazy_test.mbt rename to modules/bit_vfs/src/verify_lazy_test.mbt diff --git a/modules/bit/src/vfs/write_ops.mbt b/modules/bit_vfs/src/write_ops.mbt similarity index 100% rename from modules/bit/src/vfs/write_ops.mbt rename to modules/bit_vfs/src/write_ops.mbt diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index 5ed856fa..1f61b179 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -7,6 +7,7 @@ "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", + "mizchi/bit_vfs": "0.42.2", "mizchi/bit_osfs": "0.42.2", "moonbitlang/async": "0.16.6", "moonbitlang/x": "0.4.40", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index c2391d53..9c8a3b57 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -11,7 +11,7 @@ import { import { "moonbitlang/core/bench" @bench, - "mizchi/bit/vfs" @fs, + "mizchi/bit_vfs" @fs, "mizchi/bit_osfs" @osfs, "moonbitlang/x/fs" @nfs, "moonbitlang/core/test" @test, diff --git a/modules/bitx_kv/src/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg index 8d3b1356..3eff9d67 100644 --- a/modules/bitx_kv/src/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_io" @io, "mizchi/bit/lib" @lib, - "mizchi/bit/vfs" @fs, + "mizchi/bit_vfs" @fs, "mizchi/bitx_kv" @kv, "mizchi/x/http" @xhttp, "mizchi/x/websocket" @xws, diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json index 237df364..c353ca1a 100644 --- a/modules/bitx_rebase_ai/moon.mod.json +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_types": "0.42.2", + "mizchi/bit_runtime": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/llm": "0.2.2", diff --git a/modules/bitx_rebase_ai/src/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg index f637a944..3fbdf579 100644 --- a/modules/bitx_rebase_ai/src/moon.pkg +++ b/modules/bitx_rebase_ai/src/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, - "mizchi/bit/runtime" @runtime, + "mizchi/bit_runtime" @runtime, "mizchi/bit_osfs" @osfs, "mizchi/llm" @llmlib, "mizchi/llm/openai" @openai, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index 357fb1a0..4e1658df 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -7,6 +7,7 @@ "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", "mizchi/bit_types": "0.42.2", + "mizchi/bit_vfs": "0.42.2", "mizchi/zlib": "0.4.5" }, "repository": "https://github.com/mizchi/bit-vcs", diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index e08bff51..0db30cf5 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_io" @io, "mizchi/bit/lib", - "mizchi/bit/vfs" @fs, + "mizchi/bit_vfs" @fs, "mizchi/zlib" @zlib, } diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json index a6484152..fadb8d16 100644 --- a/modules/bitx_workspace/moon.mod.json +++ b/modules/bitx_workspace/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_types": "0.42.2", + "mizchi/bit_fingerprint": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_utils": "0.42.2", "mizchi/bitflow": "0.4.0", diff --git a/modules/bitx_workspace/src/moon.pkg b/modules/bitx_workspace/src/moon.pkg index ccaa5750..f6fa35a2 100644 --- a/modules/bitx_workspace/src/moon.pkg +++ b/modules/bitx_workspace/src/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/fingerprint" @fingerprint, + "mizchi/bit_fingerprint" @fingerprint, "mizchi/bit/lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bitflow/workflow" @bitflow, diff --git a/moon.work b/moon.work index 414ff3a3..01c0638c 100644 --- a/moon.work +++ b/moon.work @@ -11,6 +11,8 @@ members = [ "modules/bit_diff3", "modules/bit_diff_core", "modules/bit_fast_import", + "modules/bit_fingerprint", + "modules/bit_grep", "modules/bit_hash", "modules/bit_ignore", "modules/bit_io", @@ -24,9 +26,11 @@ members = [ "modules/bit_remote", "modules/bit_repo", "modules/bit_repo_ops", + "modules/bit_runtime", "modules/bit_trailers", "modules/bit_types", "modules/bit_utils", + "modules/bit_vfs", "modules/bit_worktree", "modules/bitx_bitconfig", "modules/bitx_doc", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 9125ad8f..68cbaeef 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -47,8 +47,12 @@ const CORE_MODULES = new Set([ // and promote to MID, eventually shrinking lib to a thin facade. const HIGH_MODULES = new Set([ "mizchi/bit_diff", + "mizchi/bit_fingerprint", + "mizchi/bit_grep", "mizchi/bit_pack_ops", "mizchi/bit_repo_ops", + "mizchi/bit_runtime", + "mizchi/bit_vfs", "mizchi/bit_worktree", ]); From 7bf96846fdb599701b11a0cd7ff9db6bb7db8475 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 03:03:18 +0000 Subject: [PATCH 12/26] refactor: extract bit_lib porcelain facade (wave 8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/lib → modules/bit_lib (gix-equivalent porcelain, 103 .mbt files, 285 tests, includes lib/native subpackage) bit_lib is the biggest consumer of the bit_* core split — it depends on nearly every previously-extracted bit_* module. 13 downstream consumers (every mid/high module plus all bitx_* extensions and the CLI) now declare mizchi/bit_lib in their moon.mod.json deps. After this wave modules/bit/src/ holds only the cmd/ binaries, the top.mbt root facade, and the integration test/fuzz test packages. moon check passes. mizchi/bit_lib: 285/285 native tests pass. --- docs/package-layout.md | 13 ++++---- modules/bit/moon.mod.json | 1 + modules/bit/src/cmd/bit/moon.pkg | 4 +-- modules/bit/src/cmd/git-bit/moon.pkg | 2 +- modules/bit/src/fuzz_tests/moon.pkg | 2 +- modules/bit_diff/moon.mod.json | 1 + modules/bit_diff/src/moon.pkg | 2 +- modules/bit_fingerprint/moon.mod.json | 1 + modules/bit_fingerprint/src/moon.pkg | 2 +- modules/bit_grep/moon.mod.json | 1 + modules/bit_grep/src/moon.pkg | 2 +- modules/bit_lib/moon.mod.json | 33 +++++++++++++++++++ .../lib => bit_lib/src}/bench_config_test.mbt | 0 .../src}/bench_index_diff_test.mbt | 0 .../lib => bit_lib/src}/bench_ops_test.mbt | 0 .../lib => bit_lib/src}/bench_status_test.mbt | 0 .../src}/bench_working_files_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/bisect.mbt | 0 .../{bit/src/lib => bit_lib/src}/branch.mbt | 0 .../src/lib => bit_lib/src}/branch_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/checkout.mbt | 0 .../src/lib => bit_lib/src}/checkout_test.mbt | 0 .../lib => bit_lib/src}/checkout_wbtest.mbt | 0 .../src/lib => bit_lib/src}/cherry_pick.mbt | 0 .../src}/commit_graph_reader.mbt | 0 .../src}/commit_graph_reader_wbtest.mbt | 0 .../lib => bit_lib/src}/commit_helpers.mbt | 0 .../src/lib => bit_lib/src}/compat_object.mbt | 0 .../lib => bit_lib/src}/core_interfaces.mbt | 0 modules/{bit/src/lib => bit_lib/src}/diff.mbt | 0 .../lib => bit_lib/src}/diff_tree_helpers.mbt | 0 .../{bit/src/lib => bit_lib/src}/fs_tree.mbt | 0 .../src/lib => bit_lib/src}/fs_tree_test.mbt | 0 modules/{bit/src/lib => bit_lib/src}/fsck.mbt | 0 .../src/lib => bit_lib/src}/fsck_test.mbt | 30 ++++++++--------- modules/{bit/src/lib => bit_lib/src}/gc.mbt | 0 .../{bit/src/lib => bit_lib/src}/gc_test.mbt | 0 .../src/lib => bit_lib/src}/gitattributes.mbt | 0 .../lib => bit_lib/src}/ignore_worktree.mbt | 0 .../src}/ignore_worktree_async.mbt | 0 .../src}/ignore_worktree_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/index.mbt | 0 .../src/lib => bit_lib/src}/index_wbtest.mbt | 0 modules/{bit/src/lib => bit_lib/src}/init.mbt | 0 .../src/lib => bit_lib/src}/init_test.mbt | 0 .../lib => bit_lib/src}/js_api_exports.mbt | 0 .../lib => bit_lib/src}/js_export_types.mbt | 0 .../lib => bit_lib/src}/js_exports_wbtest.mbt | 0 .../lib => bit_lib/src}/js_host_bridge.mbt | 0 .../src}/js_transport_bridge.mbt | 0 modules/{bit/src/lib => bit_lib/src}/lfs.mbt | 0 .../src/lib => bit_lib/src}/lfs_wbtest.mbt | 0 modules/{bit/src/lib => bit_lib/src}/log.mbt | 0 .../{bit/src/lib => bit_lib/src}/merge.mbt | 0 .../src/lib => bit_lib/src}/merge_base.mbt | 0 .../lib => bit_lib/src}/merge_base_test.mbt | 0 .../src/lib => bit_lib/src}/merge_test.mbt | 0 modules/{bit/src/lib => bit_lib/src}/moon.pkg | 0 .../native/bench_worktree_entry_wbtest.mbt | 0 .../src/lib => bit_lib/src}/native/filter.mbt | 0 .../src}/native/ignore_async_test.mbt | 0 .../lib => bit_lib/src}/native/lfs_client.mbt | 0 .../src}/native/lfs_client_wbtest.mbt | 0 .../src}/native/lfs_prefetch.mbt | 0 .../src/lib => bit_lib/src}/native/moon.pkg | 2 +- .../src}/native/pkg.generated.mbti | 0 .../lib => bit_lib/src}/native/promisor.mbt | 0 .../lib => bit_lib/src}/native/remote_ref.mbt | 0 .../lib => bit_lib/src}/native/sync_http.mbt | 0 .../src}/native/worktree_modes.mbt | 0 .../src/lib => bit_lib/src}/object_db.mbt | 0 .../src/lib => bit_lib/src}/pack_collect.mbt | 0 .../lib => bit_lib/src}/pack_collect_test.mbt | 0 modules/{bit/src/lib => bit_lib/src}/path.mbt | 0 .../lib => bit_lib/src}/pkg.generated.mbti | 0 .../{bit/src/lib => bit_lib/src}/profile.mbt | 0 .../{bit/src/lib => bit_lib/src}/promisor.mbt | 0 .../src/lib => bit_lib/src}/prune_test.mbt | 0 .../lib => bit_lib/src}/pure_runtime_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/rebase.mbt | 0 .../src}/rebase_interactive.mbt | 0 .../src}/rebase_interactive_wbtest.mbt | 0 .../src/lib => bit_lib/src}/rebase_test.mbt | 0 .../src/lib => bit_lib/src}/receive_pack.mbt | 0 .../lib => bit_lib/src}/receive_pack_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/reflog.mbt | 0 .../src/lib => bit_lib/src}/refs_store.mbt | 0 .../src/lib => bit_lib/src}/remote_config.mbt | 0 .../lib => bit_lib/src}/remote_helpers.mbt | 0 .../src/lib => bit_lib/src}/remote_path.mbt | 0 .../lib => bit_lib/src}/remote_path_test.mbt | 0 .../lib => bit_lib/src}/remote_shorthand.mbt | 0 .../src/lib => bit_lib/src}/rename_detect.mbt | 0 .../{bit/src/lib => bit_lib/src}/reset.mbt | 0 .../src/lib => bit_lib/src}/reset_test.mbt | 0 .../lib => bit_lib/src}/rev_list_helpers.mbt | 0 .../{bit/src/lib => bit_lib/src}/revparse.mbt | 0 .../src/lib => bit_lib/src}/revparse_test.mbt | 0 .../src}/shallow_sparse_test.mbt | 0 .../src/lib => bit_lib/src}/smart_http.mbt | 0 .../lib => bit_lib/src}/smart_http_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/sparse.mbt | 0 .../src/lib => bit_lib/src}/sparse_wbtest.mbt | 0 .../{bit/src/lib => bit_lib/src}/stash.mbt | 0 .../src/lib => bit_lib/src}/stash_test.mbt | 0 .../src/lib => bit_lib/src}/status_text.mbt | 0 .../src/lib => bit_lib/src}/status_walk.mbt | 0 .../{bit/src/lib => bit_lib/src}/subdir.mbt | 0 .../lib => bit_lib/src}/subdir_push_test.mbt | 0 .../src/lib => bit_lib/src}/subdir_test.mbt | 0 .../src/lib => bit_lib/src}/tree_mode.mbt | 0 .../{bit/src/lib => bit_lib/src}/tree_ops.mbt | 0 .../src/lib => bit_lib/src}/tree_path.mbt | 0 .../src/lib => bit_lib/src}/upload_pack.mbt | 0 .../lib => bit_lib/src}/upload_pack_test.mbt | 0 .../{bit/src/lib => bit_lib/src}/worktree.mbt | 0 .../lib => bit_lib/src}/worktree_admin.mbt | 0 .../src}/worktree_admin_test.mbt | 0 .../src/lib => bit_lib/src}/worktree_test.mbt | 0 modules/bit_pack_ops/moon.mod.json | 1 + modules/bit_pack_ops/src/moon.pkg | 2 +- modules/bit_repo_ops/moon.mod.json | 1 + modules/bit_repo_ops/src/moon.pkg | 2 +- modules/bit_runtime/moon.mod.json | 1 + modules/bit_runtime/src/moon.pkg | 2 +- modules/bit_vfs/moon.mod.json | 1 + modules/bit_vfs/src/moon.pkg | 4 +-- modules/bit_worktree/moon.mod.json | 1 + modules/bit_worktree/src/moon.pkg | 2 +- modules/bitx_hub/moon.mod.json | 1 + modules/bitx_hub/src/moon.pkg | 4 +-- modules/bitx_hub/src/native/moon.pkg | 2 +- modules/bitx_kv/moon.mod.json | 1 + modules/bitx_kv/src/moon.pkg | 2 +- modules/bitx_kv/src/native/moon.pkg | 2 +- modules/bitx_rebase_ai/moon.mod.json | 1 + modules/bitx_rebase_ai/src/moon.pkg | 2 +- modules/bitx_subdir/moon.mod.json | 1 + modules/bitx_subdir/src/moon.pkg | 2 +- modules/bitx_workspace/moon.mod.json | 1 + modules/bitx_workspace/src/moon.pkg | 2 +- moon.work | 1 + tools/check-layers.mjs | 1 + 143 files changed, 93 insertions(+), 43 deletions(-) create mode 100644 modules/bit_lib/moon.mod.json rename modules/{bit/src/lib => bit_lib/src}/bench_config_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/bench_index_diff_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/bench_ops_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/bench_status_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/bench_working_files_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/bisect.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/branch.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/branch_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/checkout.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/checkout_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/checkout_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/cherry_pick.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/commit_graph_reader.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/commit_graph_reader_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/commit_helpers.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/compat_object.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/core_interfaces.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/diff.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/diff_tree_helpers.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/fs_tree.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/fs_tree_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/fsck.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/fsck_test.mbt (78%) rename modules/{bit/src/lib => bit_lib/src}/gc.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/gc_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/gitattributes.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/ignore_worktree.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/ignore_worktree_async.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/ignore_worktree_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/index.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/index_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/init.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/init_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/js_api_exports.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/js_export_types.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/js_exports_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/js_host_bridge.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/js_transport_bridge.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/lfs.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/lfs_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/log.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/merge.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/merge_base.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/merge_base_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/merge_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/moon.pkg (100%) rename modules/{bit/src/lib => bit_lib/src}/native/bench_worktree_entry_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/filter.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/ignore_async_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/lfs_client.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/lfs_client_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/lfs_prefetch.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/moon.pkg (97%) rename modules/{bit/src/lib => bit_lib/src}/native/pkg.generated.mbti (100%) rename modules/{bit/src/lib => bit_lib/src}/native/promisor.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/remote_ref.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/sync_http.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/native/worktree_modes.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/object_db.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/pack_collect.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/pack_collect_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/path.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/pkg.generated.mbti (100%) rename modules/{bit/src/lib => bit_lib/src}/profile.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/promisor.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/prune_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/pure_runtime_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rebase.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rebase_interactive.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rebase_interactive_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rebase_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/receive_pack.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/receive_pack_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/reflog.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/refs_store.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/remote_config.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/remote_helpers.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/remote_path.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/remote_path_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/remote_shorthand.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rename_detect.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/reset.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/reset_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/rev_list_helpers.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/revparse.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/revparse_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/shallow_sparse_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/smart_http.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/smart_http_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/sparse.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/sparse_wbtest.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/stash.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/stash_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/status_text.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/status_walk.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/subdir.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/subdir_push_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/subdir_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/tree_mode.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/tree_ops.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/tree_path.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/upload_pack.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/upload_pack_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/worktree.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/worktree_admin.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/worktree_admin_test.mbt (100%) rename modules/{bit/src/lib => bit_lib/src}/worktree_test.mbt (100%) diff --git a/docs/package-layout.md b/docs/package-layout.md index c485abc8..0752a076 100644 --- a/docs/package-layout.md +++ b/docs/package-layout.md @@ -14,13 +14,12 @@ pick only the features they need. ``` moon.work ← workspace manifest modules/ - bit/ ← main module: remaining core / mid / high / cmd + bit/ ← residual main: just the CLI + integration tests moon.mod.json src/ - types/ object/ pack/ refs/ protocol/ ... (core, not yet extracted) - repo_ops/ worktree/ diff/ ... (mid) - lib/ vfs/ fingerprint/ grep/ runtime/ (high) - cmd/bit/ cmd/git-bit/ (cmd) + top.mbt + moon.pkg (thin facade re-exports) + cmd/bit/ cmd/git-bit/ (CLI binaries) + tests/ fuzz_tests/ (integration + fuzz suites) bit_apply/ ← standalone core modules (gix-* equivalents) bit_archive/ bit_bootstrap/ @@ -35,6 +34,7 @@ modules/ bit_hash/ bit_ignore/ bit_io/ + bit_lib/ bit_object/ bit_osfs/ bit_pack/ @@ -137,7 +137,8 @@ Porcelain layer. May depend on `core/*` and `mid/*`. Used by `cmd/*` and | Package | Path | Notes | |-------------------------------|--------------------|----------------------------------------------------| -| `mizchi/bit/lib` | `modules/bit/src/lib` | High-level / backward-compatible facade | +| `mizchi/bit_lib` | `modules/bit_lib/src` | High-level porcelain facade (gix-equivalent) | +| `mizchi/bit_lib/native` | `modules/bit_lib/src/native` | Native-only porcelain helpers | | `mizchi/bit_vfs` | `modules/bit_vfs/src` | Virtual FS over commits (used by `lib`, `bitx_kv`, `bitx_subdir`) | | `mizchi/bit_fingerprint` | `modules/bit_fingerprint/src` | Workspace fingerprint (used by `bitx_workspace`) | | `mizchi/bit_grep` | `modules/bit_grep/src` | Grep engine over the working tree | diff --git a/modules/bit/moon.mod.json b/modules/bit/moon.mod.json index d272d64e..ff68df20 100644 --- a/modules/bit/moon.mod.json +++ b/modules/bit/moon.mod.json @@ -25,6 +25,7 @@ "mizchi/bit_hash": "0.42.2", "mizchi/bit_ignore": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_pack": "0.42.2", diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 6dd14b4e..b936e784 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -9,7 +9,7 @@ import { "mizchi/bit_hash" @bithash, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_archive" @tar, "mizchi/bit_apply" @apply, "mizchi/bit_diff3" @diff3, @@ -21,7 +21,7 @@ import { "mizchi/bit_grep" @bitgrep, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, - "mizchi/bit/lib/native" @bitlibnative, + "mizchi/bit_lib/native" @bitlibnative, "mizchi/bit_io/native" @bitnative, "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/native" @hub_native, diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index 7da73b70..caa20dcd 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_config" @config_parse, "mizchi/bit_hash" @bithash, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, "mizchi/bitx_hq" @hq, diff --git a/modules/bit/src/fuzz_tests/moon.pkg b/modules/bit/src/fuzz_tests/moon.pkg index fecaecc3..f05eaac8 100644 --- a/modules/bit/src/fuzz_tests/moon.pkg +++ b/modules/bit/src/fuzz_tests/moon.pkg @@ -9,7 +9,7 @@ import { "mizchi/bit_config" @config_parse, "mizchi/bit_date" @date_parse, "mizchi/bit_repo" @repo, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, } warnings = "-29" diff --git a/modules/bit_diff/moon.mod.json b/modules/bit_diff/moon.mod.json index 6d4c9d32..bd726e5a 100644 --- a/modules/bit_diff/moon.mod.json +++ b/modules/bit_diff/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_diff_core": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_types": "0.42.2", diff --git a/modules/bit_diff/src/moon.pkg b/modules/bit_diff/src/moon.pkg index 011b3944..fb7877c1 100644 --- a/modules/bit_diff/src/moon.pkg +++ b/modules/bit_diff/src/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_repo" @repo, "mizchi/bit_diff_core" @diff_core, "mizchi/bit_io" @bitio, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_utils" @string_utils, "moonbitlang/core/bench" @bench, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit_fingerprint/moon.mod.json b/modules/bit_fingerprint/moon.mod.json index 5d73dbfc..20ec71fa 100644 --- a/modules/bit_fingerprint/moon.mod.json +++ b/modules/bit_fingerprint/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_utils": "0.42.2", diff --git a/modules/bit_fingerprint/src/moon.pkg b/modules/bit_fingerprint/src/moon.pkg index 6b06c0e1..645ea47e 100644 --- a/modules/bit_fingerprint/src/moon.pkg +++ b/modules/bit_fingerprint/src/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit_osfs" @osfs, "moonbitlang/async" @async, diff --git a/modules/bit_grep/moon.mod.json b/modules/bit_grep/moon.mod.json index 968e7814..06db9b1d 100644 --- a/modules/bit_grep/moon.mod.json +++ b/modules/bit_grep/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_ignore": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_repo_ops": "0.42.2", "mizchi/bit_types": "0.42.2" diff --git a/modules/bit_grep/src/moon.pkg b/modules/bit_grep/src/moon.pkg index 2ba9f1dd..5d845fae 100644 --- a/modules/bit_grep/src/moon.pkg +++ b/modules/bit_grep/src/moon.pkg @@ -2,7 +2,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, diff --git a/modules/bit_lib/moon.mod.json b/modules/bit_lib/moon.mod.json new file mode 100644 index 00000000..740e856f --- /dev/null +++ b/modules/bit_lib/moon.mod.json @@ -0,0 +1,33 @@ +{ + "name": "mizchi/bit_lib", + "version": "0.42.2", + "deps": { + "mizchi/bit": "0.42.2", + "mizchi/bit_date": "0.42.2", + "mizchi/bit_diff3": "0.42.2", + "mizchi/bit_diff_core": "0.42.2", + "mizchi/bit_hash": "0.42.2", + "mizchi/bit_ignore": "0.42.2", + "mizchi/bit_io": "0.42.2", + "mizchi/bit_object": "0.42.2", + "mizchi/bit_osfs": "0.42.2", + "mizchi/bit_pack": "0.42.2", + "mizchi/bit_protocol": "0.42.2", + "mizchi/bit_refs": "0.42.2", + "mizchi/bit_reftable": "0.42.2", + "mizchi/bit_remote": "0.42.2", + "mizchi/bit_repo": "0.42.2", + "mizchi/bit_types": "0.42.2", + "mizchi/bit_utils": "0.42.2", + "mizchi/bit_vfs": "0.42.2", + "mizchi/zlib": "0.4.5", + "moonbitlang/async": "0.16.6", + "moonbitlang/x": "0.4.40" + }, + "repository": "https://github.com/mizchi/bit-vcs", + "license": "Apache-2.0", + "keywords": ["git", "porcelain"], + "description": "Porcelain (gix-equivalent): high-level Git operations facade", + "source": "src", + "preferred-target": "native" +} diff --git a/modules/bit/src/lib/bench_config_test.mbt b/modules/bit_lib/src/bench_config_test.mbt similarity index 100% rename from modules/bit/src/lib/bench_config_test.mbt rename to modules/bit_lib/src/bench_config_test.mbt diff --git a/modules/bit/src/lib/bench_index_diff_test.mbt b/modules/bit_lib/src/bench_index_diff_test.mbt similarity index 100% rename from modules/bit/src/lib/bench_index_diff_test.mbt rename to modules/bit_lib/src/bench_index_diff_test.mbt diff --git a/modules/bit/src/lib/bench_ops_test.mbt b/modules/bit_lib/src/bench_ops_test.mbt similarity index 100% rename from modules/bit/src/lib/bench_ops_test.mbt rename to modules/bit_lib/src/bench_ops_test.mbt diff --git a/modules/bit/src/lib/bench_status_test.mbt b/modules/bit_lib/src/bench_status_test.mbt similarity index 100% rename from modules/bit/src/lib/bench_status_test.mbt rename to modules/bit_lib/src/bench_status_test.mbt diff --git a/modules/bit/src/lib/bench_working_files_test.mbt b/modules/bit_lib/src/bench_working_files_test.mbt similarity index 100% rename from modules/bit/src/lib/bench_working_files_test.mbt rename to modules/bit_lib/src/bench_working_files_test.mbt diff --git a/modules/bit/src/lib/bisect.mbt b/modules/bit_lib/src/bisect.mbt similarity index 100% rename from modules/bit/src/lib/bisect.mbt rename to modules/bit_lib/src/bisect.mbt diff --git a/modules/bit/src/lib/branch.mbt b/modules/bit_lib/src/branch.mbt similarity index 100% rename from modules/bit/src/lib/branch.mbt rename to modules/bit_lib/src/branch.mbt diff --git a/modules/bit/src/lib/branch_test.mbt b/modules/bit_lib/src/branch_test.mbt similarity index 100% rename from modules/bit/src/lib/branch_test.mbt rename to modules/bit_lib/src/branch_test.mbt diff --git a/modules/bit/src/lib/checkout.mbt b/modules/bit_lib/src/checkout.mbt similarity index 100% rename from modules/bit/src/lib/checkout.mbt rename to modules/bit_lib/src/checkout.mbt diff --git a/modules/bit/src/lib/checkout_test.mbt b/modules/bit_lib/src/checkout_test.mbt similarity index 100% rename from modules/bit/src/lib/checkout_test.mbt rename to modules/bit_lib/src/checkout_test.mbt diff --git a/modules/bit/src/lib/checkout_wbtest.mbt b/modules/bit_lib/src/checkout_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/checkout_wbtest.mbt rename to modules/bit_lib/src/checkout_wbtest.mbt diff --git a/modules/bit/src/lib/cherry_pick.mbt b/modules/bit_lib/src/cherry_pick.mbt similarity index 100% rename from modules/bit/src/lib/cherry_pick.mbt rename to modules/bit_lib/src/cherry_pick.mbt diff --git a/modules/bit/src/lib/commit_graph_reader.mbt b/modules/bit_lib/src/commit_graph_reader.mbt similarity index 100% rename from modules/bit/src/lib/commit_graph_reader.mbt rename to modules/bit_lib/src/commit_graph_reader.mbt diff --git a/modules/bit/src/lib/commit_graph_reader_wbtest.mbt b/modules/bit_lib/src/commit_graph_reader_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/commit_graph_reader_wbtest.mbt rename to modules/bit_lib/src/commit_graph_reader_wbtest.mbt diff --git a/modules/bit/src/lib/commit_helpers.mbt b/modules/bit_lib/src/commit_helpers.mbt similarity index 100% rename from modules/bit/src/lib/commit_helpers.mbt rename to modules/bit_lib/src/commit_helpers.mbt diff --git a/modules/bit/src/lib/compat_object.mbt b/modules/bit_lib/src/compat_object.mbt similarity index 100% rename from modules/bit/src/lib/compat_object.mbt rename to modules/bit_lib/src/compat_object.mbt diff --git a/modules/bit/src/lib/core_interfaces.mbt b/modules/bit_lib/src/core_interfaces.mbt similarity index 100% rename from modules/bit/src/lib/core_interfaces.mbt rename to modules/bit_lib/src/core_interfaces.mbt diff --git a/modules/bit/src/lib/diff.mbt b/modules/bit_lib/src/diff.mbt similarity index 100% rename from modules/bit/src/lib/diff.mbt rename to modules/bit_lib/src/diff.mbt diff --git a/modules/bit/src/lib/diff_tree_helpers.mbt b/modules/bit_lib/src/diff_tree_helpers.mbt similarity index 100% rename from modules/bit/src/lib/diff_tree_helpers.mbt rename to modules/bit_lib/src/diff_tree_helpers.mbt diff --git a/modules/bit/src/lib/fs_tree.mbt b/modules/bit_lib/src/fs_tree.mbt similarity index 100% rename from modules/bit/src/lib/fs_tree.mbt rename to modules/bit_lib/src/fs_tree.mbt diff --git a/modules/bit/src/lib/fs_tree_test.mbt b/modules/bit_lib/src/fs_tree_test.mbt similarity index 100% rename from modules/bit/src/lib/fs_tree_test.mbt rename to modules/bit_lib/src/fs_tree_test.mbt diff --git a/modules/bit/src/lib/fsck.mbt b/modules/bit_lib/src/fsck.mbt similarity index 100% rename from modules/bit/src/lib/fsck.mbt rename to modules/bit_lib/src/fsck.mbt diff --git a/modules/bit/src/lib/fsck_test.mbt b/modules/bit_lib/src/fsck_test.mbt similarity index 78% rename from modules/bit/src/lib/fsck_test.mbt rename to modules/bit_lib/src/fsck_test.mbt index 0abec6ab..373e1b10 100644 --- a/modules/bit/src/lib/fsck_test.mbt +++ b/modules/bit_lib/src/fsck_test.mbt @@ -6,8 +6,8 @@ test "fsck_connectivity_check on empty repo" { let git_dir = "/repo/.git" fs.mkdir_p(git_dir + "/objects") fs.mkdir_p(git_dir + "/objects/pack") - let db = @lib.ObjectDb::load(fs, git_dir) - let result = @lib.fsck_connectivity_check(db, fs, []) + let db = @bit_lib.ObjectDb::load(fs, git_dir) + let result = @bit_lib.fsck_connectivity_check(db, fs, []) assert_eq(result.errors, 0) assert_eq(result.reachable.to_array().length(), 0) assert_eq(result.missing.to_array().length(), 0) @@ -22,12 +22,12 @@ test "fsck_connectivity_check finds reachable objects" { fs.mkdir_p(git_dir + "/refs") // Create a blob let (blob_id, blob_bytes) = @bit.create_blob_string("hello\n") - @lib.write_object_bytes(fs, git_dir, blob_id, blob_bytes) + @bit_lib.write_object_bytes(fs, git_dir, blob_id, blob_bytes) // Create a tree with the blob let (tree_id, tree_bytes) = @bit.create_tree([ @bit.TreeEntry::new("100644", "hello.txt", blob_id), ]) - @lib.write_object_bytes(fs, git_dir, tree_id, tree_bytes) + @bit_lib.write_object_bytes(fs, git_dir, tree_id, tree_bytes) // Create a root commit let commit = @bit.Commit::new( tree_id, @@ -41,9 +41,9 @@ test "fsck_connectivity_check finds reachable objects" { "test\n", ) let (commit_id, commit_bytes) = @bit.create_commit(commit) - @lib.write_object_bytes(fs, git_dir, commit_id, commit_bytes) - let db = @lib.ObjectDb::load(fs, git_dir) - let result = @lib.fsck_connectivity_check( + @bit_lib.write_object_bytes(fs, git_dir, commit_id, commit_bytes) + let db = @bit_lib.ObjectDb::load(fs, git_dir) + let result = @bit_lib.fsck_connectivity_check( db, fs, [commit_id], @@ -78,9 +78,9 @@ test "fsck_connectivity_check detects missing objects" { "test\n", ) let (commit_id, commit_bytes) = @bit.create_commit(commit) - @lib.write_object_bytes(fs, git_dir, commit_id, commit_bytes) - let db = @lib.ObjectDb::load(fs, git_dir) - let result = @lib.fsck_connectivity_check(db, fs, [commit_id]) + @bit_lib.write_object_bytes(fs, git_dir, commit_id, commit_bytes) + let db = @bit_lib.ObjectDb::load(fs, git_dir) + let result = @bit_lib.fsck_connectivity_check(db, fs, [commit_id]) assert_true(result.errors > 0) assert_true(result.missing.contains(fake_tree_hex)) } @@ -93,10 +93,10 @@ test "fsck_enumerate_objects lists all" { fs.mkdir_p(git_dir + "/objects") for i in 0..<3 { let (id, data) = @bit.create_blob_string("content \{i}\n") - @lib.write_object_bytes(fs, git_dir, id, data) + @bit_lib.write_object_bytes(fs, git_dir, id, data) } - let db = @lib.ObjectDb::load(fs, git_dir) - let all = @lib.fsck_enumerate_objects(db) + let db = @bit_lib.ObjectDb::load(fs, git_dir) + let all = @bit_lib.fsck_enumerate_objects(db) assert_eq(all.length(), 3) } @@ -120,9 +120,9 @@ test "fsck_verify_loose_hash valid" { }), ) let expected = @bit.sha1(raw) - assert_true(@lib.fsck_verify_loose_hash(raw, expected.to_hex())) + assert_true(@bit_lib.fsck_verify_loose_hash(raw, expected.to_hex())) assert_true( - !@lib.fsck_verify_loose_hash( + !@bit_lib.fsck_verify_loose_hash( raw, "0000000000000000000000000000000000000000", ), ) diff --git a/modules/bit/src/lib/gc.mbt b/modules/bit_lib/src/gc.mbt similarity index 100% rename from modules/bit/src/lib/gc.mbt rename to modules/bit_lib/src/gc.mbt diff --git a/modules/bit/src/lib/gc_test.mbt b/modules/bit_lib/src/gc_test.mbt similarity index 100% rename from modules/bit/src/lib/gc_test.mbt rename to modules/bit_lib/src/gc_test.mbt diff --git a/modules/bit/src/lib/gitattributes.mbt b/modules/bit_lib/src/gitattributes.mbt similarity index 100% rename from modules/bit/src/lib/gitattributes.mbt rename to modules/bit_lib/src/gitattributes.mbt diff --git a/modules/bit/src/lib/ignore_worktree.mbt b/modules/bit_lib/src/ignore_worktree.mbt similarity index 100% rename from modules/bit/src/lib/ignore_worktree.mbt rename to modules/bit_lib/src/ignore_worktree.mbt diff --git a/modules/bit/src/lib/ignore_worktree_async.mbt b/modules/bit_lib/src/ignore_worktree_async.mbt similarity index 100% rename from modules/bit/src/lib/ignore_worktree_async.mbt rename to modules/bit_lib/src/ignore_worktree_async.mbt diff --git a/modules/bit/src/lib/ignore_worktree_test.mbt b/modules/bit_lib/src/ignore_worktree_test.mbt similarity index 100% rename from modules/bit/src/lib/ignore_worktree_test.mbt rename to modules/bit_lib/src/ignore_worktree_test.mbt diff --git a/modules/bit/src/lib/index.mbt b/modules/bit_lib/src/index.mbt similarity index 100% rename from modules/bit/src/lib/index.mbt rename to modules/bit_lib/src/index.mbt diff --git a/modules/bit/src/lib/index_wbtest.mbt b/modules/bit_lib/src/index_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/index_wbtest.mbt rename to modules/bit_lib/src/index_wbtest.mbt diff --git a/modules/bit/src/lib/init.mbt b/modules/bit_lib/src/init.mbt similarity index 100% rename from modules/bit/src/lib/init.mbt rename to modules/bit_lib/src/init.mbt diff --git a/modules/bit/src/lib/init_test.mbt b/modules/bit_lib/src/init_test.mbt similarity index 100% rename from modules/bit/src/lib/init_test.mbt rename to modules/bit_lib/src/init_test.mbt diff --git a/modules/bit/src/lib/js_api_exports.mbt b/modules/bit_lib/src/js_api_exports.mbt similarity index 100% rename from modules/bit/src/lib/js_api_exports.mbt rename to modules/bit_lib/src/js_api_exports.mbt diff --git a/modules/bit/src/lib/js_export_types.mbt b/modules/bit_lib/src/js_export_types.mbt similarity index 100% rename from modules/bit/src/lib/js_export_types.mbt rename to modules/bit_lib/src/js_export_types.mbt diff --git a/modules/bit/src/lib/js_exports_wbtest.mbt b/modules/bit_lib/src/js_exports_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/js_exports_wbtest.mbt rename to modules/bit_lib/src/js_exports_wbtest.mbt diff --git a/modules/bit/src/lib/js_host_bridge.mbt b/modules/bit_lib/src/js_host_bridge.mbt similarity index 100% rename from modules/bit/src/lib/js_host_bridge.mbt rename to modules/bit_lib/src/js_host_bridge.mbt diff --git a/modules/bit/src/lib/js_transport_bridge.mbt b/modules/bit_lib/src/js_transport_bridge.mbt similarity index 100% rename from modules/bit/src/lib/js_transport_bridge.mbt rename to modules/bit_lib/src/js_transport_bridge.mbt diff --git a/modules/bit/src/lib/lfs.mbt b/modules/bit_lib/src/lfs.mbt similarity index 100% rename from modules/bit/src/lib/lfs.mbt rename to modules/bit_lib/src/lfs.mbt diff --git a/modules/bit/src/lib/lfs_wbtest.mbt b/modules/bit_lib/src/lfs_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/lfs_wbtest.mbt rename to modules/bit_lib/src/lfs_wbtest.mbt diff --git a/modules/bit/src/lib/log.mbt b/modules/bit_lib/src/log.mbt similarity index 100% rename from modules/bit/src/lib/log.mbt rename to modules/bit_lib/src/log.mbt diff --git a/modules/bit/src/lib/merge.mbt b/modules/bit_lib/src/merge.mbt similarity index 100% rename from modules/bit/src/lib/merge.mbt rename to modules/bit_lib/src/merge.mbt diff --git a/modules/bit/src/lib/merge_base.mbt b/modules/bit_lib/src/merge_base.mbt similarity index 100% rename from modules/bit/src/lib/merge_base.mbt rename to modules/bit_lib/src/merge_base.mbt diff --git a/modules/bit/src/lib/merge_base_test.mbt b/modules/bit_lib/src/merge_base_test.mbt similarity index 100% rename from modules/bit/src/lib/merge_base_test.mbt rename to modules/bit_lib/src/merge_base_test.mbt diff --git a/modules/bit/src/lib/merge_test.mbt b/modules/bit_lib/src/merge_test.mbt similarity index 100% rename from modules/bit/src/lib/merge_test.mbt rename to modules/bit_lib/src/merge_test.mbt diff --git a/modules/bit/src/lib/moon.pkg b/modules/bit_lib/src/moon.pkg similarity index 100% rename from modules/bit/src/lib/moon.pkg rename to modules/bit_lib/src/moon.pkg diff --git a/modules/bit/src/lib/native/bench_worktree_entry_wbtest.mbt b/modules/bit_lib/src/native/bench_worktree_entry_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/native/bench_worktree_entry_wbtest.mbt rename to modules/bit_lib/src/native/bench_worktree_entry_wbtest.mbt diff --git a/modules/bit/src/lib/native/filter.mbt b/modules/bit_lib/src/native/filter.mbt similarity index 100% rename from modules/bit/src/lib/native/filter.mbt rename to modules/bit_lib/src/native/filter.mbt diff --git a/modules/bit/src/lib/native/ignore_async_test.mbt b/modules/bit_lib/src/native/ignore_async_test.mbt similarity index 100% rename from modules/bit/src/lib/native/ignore_async_test.mbt rename to modules/bit_lib/src/native/ignore_async_test.mbt diff --git a/modules/bit/src/lib/native/lfs_client.mbt b/modules/bit_lib/src/native/lfs_client.mbt similarity index 100% rename from modules/bit/src/lib/native/lfs_client.mbt rename to modules/bit_lib/src/native/lfs_client.mbt diff --git a/modules/bit/src/lib/native/lfs_client_wbtest.mbt b/modules/bit_lib/src/native/lfs_client_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/native/lfs_client_wbtest.mbt rename to modules/bit_lib/src/native/lfs_client_wbtest.mbt diff --git a/modules/bit/src/lib/native/lfs_prefetch.mbt b/modules/bit_lib/src/native/lfs_prefetch.mbt similarity index 100% rename from modules/bit/src/lib/native/lfs_prefetch.mbt rename to modules/bit_lib/src/native/lfs_prefetch.mbt diff --git a/modules/bit/src/lib/native/moon.pkg b/modules/bit_lib/src/native/moon.pkg similarity index 97% rename from modules/bit/src/lib/native/moon.pkg rename to modules/bit_lib/src/native/moon.pkg index 7e0c85f2..64981355 100644 --- a/modules/bit/src/lib/native/moon.pkg +++ b/modules/bit_lib/src/native/moon.pkg @@ -5,7 +5,7 @@ import { "mizchi/bit_repo" @repo, "mizchi/bit_pack" @pack, "mizchi/bit_protocol" @protocol, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_ignore" @ignore, "mizchi/bit_io" @bitio, "mizchi/bit_io/native" @bitnative, diff --git a/modules/bit/src/lib/native/pkg.generated.mbti b/modules/bit_lib/src/native/pkg.generated.mbti similarity index 100% rename from modules/bit/src/lib/native/pkg.generated.mbti rename to modules/bit_lib/src/native/pkg.generated.mbti diff --git a/modules/bit/src/lib/native/promisor.mbt b/modules/bit_lib/src/native/promisor.mbt similarity index 100% rename from modules/bit/src/lib/native/promisor.mbt rename to modules/bit_lib/src/native/promisor.mbt diff --git a/modules/bit/src/lib/native/remote_ref.mbt b/modules/bit_lib/src/native/remote_ref.mbt similarity index 100% rename from modules/bit/src/lib/native/remote_ref.mbt rename to modules/bit_lib/src/native/remote_ref.mbt diff --git a/modules/bit/src/lib/native/sync_http.mbt b/modules/bit_lib/src/native/sync_http.mbt similarity index 100% rename from modules/bit/src/lib/native/sync_http.mbt rename to modules/bit_lib/src/native/sync_http.mbt diff --git a/modules/bit/src/lib/native/worktree_modes.mbt b/modules/bit_lib/src/native/worktree_modes.mbt similarity index 100% rename from modules/bit/src/lib/native/worktree_modes.mbt rename to modules/bit_lib/src/native/worktree_modes.mbt diff --git a/modules/bit/src/lib/object_db.mbt b/modules/bit_lib/src/object_db.mbt similarity index 100% rename from modules/bit/src/lib/object_db.mbt rename to modules/bit_lib/src/object_db.mbt diff --git a/modules/bit/src/lib/pack_collect.mbt b/modules/bit_lib/src/pack_collect.mbt similarity index 100% rename from modules/bit/src/lib/pack_collect.mbt rename to modules/bit_lib/src/pack_collect.mbt diff --git a/modules/bit/src/lib/pack_collect_test.mbt b/modules/bit_lib/src/pack_collect_test.mbt similarity index 100% rename from modules/bit/src/lib/pack_collect_test.mbt rename to modules/bit_lib/src/pack_collect_test.mbt diff --git a/modules/bit/src/lib/path.mbt b/modules/bit_lib/src/path.mbt similarity index 100% rename from modules/bit/src/lib/path.mbt rename to modules/bit_lib/src/path.mbt diff --git a/modules/bit/src/lib/pkg.generated.mbti b/modules/bit_lib/src/pkg.generated.mbti similarity index 100% rename from modules/bit/src/lib/pkg.generated.mbti rename to modules/bit_lib/src/pkg.generated.mbti diff --git a/modules/bit/src/lib/profile.mbt b/modules/bit_lib/src/profile.mbt similarity index 100% rename from modules/bit/src/lib/profile.mbt rename to modules/bit_lib/src/profile.mbt diff --git a/modules/bit/src/lib/promisor.mbt b/modules/bit_lib/src/promisor.mbt similarity index 100% rename from modules/bit/src/lib/promisor.mbt rename to modules/bit_lib/src/promisor.mbt diff --git a/modules/bit/src/lib/prune_test.mbt b/modules/bit_lib/src/prune_test.mbt similarity index 100% rename from modules/bit/src/lib/prune_test.mbt rename to modules/bit_lib/src/prune_test.mbt diff --git a/modules/bit/src/lib/pure_runtime_test.mbt b/modules/bit_lib/src/pure_runtime_test.mbt similarity index 100% rename from modules/bit/src/lib/pure_runtime_test.mbt rename to modules/bit_lib/src/pure_runtime_test.mbt diff --git a/modules/bit/src/lib/rebase.mbt b/modules/bit_lib/src/rebase.mbt similarity index 100% rename from modules/bit/src/lib/rebase.mbt rename to modules/bit_lib/src/rebase.mbt diff --git a/modules/bit/src/lib/rebase_interactive.mbt b/modules/bit_lib/src/rebase_interactive.mbt similarity index 100% rename from modules/bit/src/lib/rebase_interactive.mbt rename to modules/bit_lib/src/rebase_interactive.mbt diff --git a/modules/bit/src/lib/rebase_interactive_wbtest.mbt b/modules/bit_lib/src/rebase_interactive_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/rebase_interactive_wbtest.mbt rename to modules/bit_lib/src/rebase_interactive_wbtest.mbt diff --git a/modules/bit/src/lib/rebase_test.mbt b/modules/bit_lib/src/rebase_test.mbt similarity index 100% rename from modules/bit/src/lib/rebase_test.mbt rename to modules/bit_lib/src/rebase_test.mbt diff --git a/modules/bit/src/lib/receive_pack.mbt b/modules/bit_lib/src/receive_pack.mbt similarity index 100% rename from modules/bit/src/lib/receive_pack.mbt rename to modules/bit_lib/src/receive_pack.mbt diff --git a/modules/bit/src/lib/receive_pack_test.mbt b/modules/bit_lib/src/receive_pack_test.mbt similarity index 100% rename from modules/bit/src/lib/receive_pack_test.mbt rename to modules/bit_lib/src/receive_pack_test.mbt diff --git a/modules/bit/src/lib/reflog.mbt b/modules/bit_lib/src/reflog.mbt similarity index 100% rename from modules/bit/src/lib/reflog.mbt rename to modules/bit_lib/src/reflog.mbt diff --git a/modules/bit/src/lib/refs_store.mbt b/modules/bit_lib/src/refs_store.mbt similarity index 100% rename from modules/bit/src/lib/refs_store.mbt rename to modules/bit_lib/src/refs_store.mbt diff --git a/modules/bit/src/lib/remote_config.mbt b/modules/bit_lib/src/remote_config.mbt similarity index 100% rename from modules/bit/src/lib/remote_config.mbt rename to modules/bit_lib/src/remote_config.mbt diff --git a/modules/bit/src/lib/remote_helpers.mbt b/modules/bit_lib/src/remote_helpers.mbt similarity index 100% rename from modules/bit/src/lib/remote_helpers.mbt rename to modules/bit_lib/src/remote_helpers.mbt diff --git a/modules/bit/src/lib/remote_path.mbt b/modules/bit_lib/src/remote_path.mbt similarity index 100% rename from modules/bit/src/lib/remote_path.mbt rename to modules/bit_lib/src/remote_path.mbt diff --git a/modules/bit/src/lib/remote_path_test.mbt b/modules/bit_lib/src/remote_path_test.mbt similarity index 100% rename from modules/bit/src/lib/remote_path_test.mbt rename to modules/bit_lib/src/remote_path_test.mbt diff --git a/modules/bit/src/lib/remote_shorthand.mbt b/modules/bit_lib/src/remote_shorthand.mbt similarity index 100% rename from modules/bit/src/lib/remote_shorthand.mbt rename to modules/bit_lib/src/remote_shorthand.mbt diff --git a/modules/bit/src/lib/rename_detect.mbt b/modules/bit_lib/src/rename_detect.mbt similarity index 100% rename from modules/bit/src/lib/rename_detect.mbt rename to modules/bit_lib/src/rename_detect.mbt diff --git a/modules/bit/src/lib/reset.mbt b/modules/bit_lib/src/reset.mbt similarity index 100% rename from modules/bit/src/lib/reset.mbt rename to modules/bit_lib/src/reset.mbt diff --git a/modules/bit/src/lib/reset_test.mbt b/modules/bit_lib/src/reset_test.mbt similarity index 100% rename from modules/bit/src/lib/reset_test.mbt rename to modules/bit_lib/src/reset_test.mbt diff --git a/modules/bit/src/lib/rev_list_helpers.mbt b/modules/bit_lib/src/rev_list_helpers.mbt similarity index 100% rename from modules/bit/src/lib/rev_list_helpers.mbt rename to modules/bit_lib/src/rev_list_helpers.mbt diff --git a/modules/bit/src/lib/revparse.mbt b/modules/bit_lib/src/revparse.mbt similarity index 100% rename from modules/bit/src/lib/revparse.mbt rename to modules/bit_lib/src/revparse.mbt diff --git a/modules/bit/src/lib/revparse_test.mbt b/modules/bit_lib/src/revparse_test.mbt similarity index 100% rename from modules/bit/src/lib/revparse_test.mbt rename to modules/bit_lib/src/revparse_test.mbt diff --git a/modules/bit/src/lib/shallow_sparse_test.mbt b/modules/bit_lib/src/shallow_sparse_test.mbt similarity index 100% rename from modules/bit/src/lib/shallow_sparse_test.mbt rename to modules/bit_lib/src/shallow_sparse_test.mbt diff --git a/modules/bit/src/lib/smart_http.mbt b/modules/bit_lib/src/smart_http.mbt similarity index 100% rename from modules/bit/src/lib/smart_http.mbt rename to modules/bit_lib/src/smart_http.mbt diff --git a/modules/bit/src/lib/smart_http_test.mbt b/modules/bit_lib/src/smart_http_test.mbt similarity index 100% rename from modules/bit/src/lib/smart_http_test.mbt rename to modules/bit_lib/src/smart_http_test.mbt diff --git a/modules/bit/src/lib/sparse.mbt b/modules/bit_lib/src/sparse.mbt similarity index 100% rename from modules/bit/src/lib/sparse.mbt rename to modules/bit_lib/src/sparse.mbt diff --git a/modules/bit/src/lib/sparse_wbtest.mbt b/modules/bit_lib/src/sparse_wbtest.mbt similarity index 100% rename from modules/bit/src/lib/sparse_wbtest.mbt rename to modules/bit_lib/src/sparse_wbtest.mbt diff --git a/modules/bit/src/lib/stash.mbt b/modules/bit_lib/src/stash.mbt similarity index 100% rename from modules/bit/src/lib/stash.mbt rename to modules/bit_lib/src/stash.mbt diff --git a/modules/bit/src/lib/stash_test.mbt b/modules/bit_lib/src/stash_test.mbt similarity index 100% rename from modules/bit/src/lib/stash_test.mbt rename to modules/bit_lib/src/stash_test.mbt diff --git a/modules/bit/src/lib/status_text.mbt b/modules/bit_lib/src/status_text.mbt similarity index 100% rename from modules/bit/src/lib/status_text.mbt rename to modules/bit_lib/src/status_text.mbt diff --git a/modules/bit/src/lib/status_walk.mbt b/modules/bit_lib/src/status_walk.mbt similarity index 100% rename from modules/bit/src/lib/status_walk.mbt rename to modules/bit_lib/src/status_walk.mbt diff --git a/modules/bit/src/lib/subdir.mbt b/modules/bit_lib/src/subdir.mbt similarity index 100% rename from modules/bit/src/lib/subdir.mbt rename to modules/bit_lib/src/subdir.mbt diff --git a/modules/bit/src/lib/subdir_push_test.mbt b/modules/bit_lib/src/subdir_push_test.mbt similarity index 100% rename from modules/bit/src/lib/subdir_push_test.mbt rename to modules/bit_lib/src/subdir_push_test.mbt diff --git a/modules/bit/src/lib/subdir_test.mbt b/modules/bit_lib/src/subdir_test.mbt similarity index 100% rename from modules/bit/src/lib/subdir_test.mbt rename to modules/bit_lib/src/subdir_test.mbt diff --git a/modules/bit/src/lib/tree_mode.mbt b/modules/bit_lib/src/tree_mode.mbt similarity index 100% rename from modules/bit/src/lib/tree_mode.mbt rename to modules/bit_lib/src/tree_mode.mbt diff --git a/modules/bit/src/lib/tree_ops.mbt b/modules/bit_lib/src/tree_ops.mbt similarity index 100% rename from modules/bit/src/lib/tree_ops.mbt rename to modules/bit_lib/src/tree_ops.mbt diff --git a/modules/bit/src/lib/tree_path.mbt b/modules/bit_lib/src/tree_path.mbt similarity index 100% rename from modules/bit/src/lib/tree_path.mbt rename to modules/bit_lib/src/tree_path.mbt diff --git a/modules/bit/src/lib/upload_pack.mbt b/modules/bit_lib/src/upload_pack.mbt similarity index 100% rename from modules/bit/src/lib/upload_pack.mbt rename to modules/bit_lib/src/upload_pack.mbt diff --git a/modules/bit/src/lib/upload_pack_test.mbt b/modules/bit_lib/src/upload_pack_test.mbt similarity index 100% rename from modules/bit/src/lib/upload_pack_test.mbt rename to modules/bit_lib/src/upload_pack_test.mbt diff --git a/modules/bit/src/lib/worktree.mbt b/modules/bit_lib/src/worktree.mbt similarity index 100% rename from modules/bit/src/lib/worktree.mbt rename to modules/bit_lib/src/worktree.mbt diff --git a/modules/bit/src/lib/worktree_admin.mbt b/modules/bit_lib/src/worktree_admin.mbt similarity index 100% rename from modules/bit/src/lib/worktree_admin.mbt rename to modules/bit_lib/src/worktree_admin.mbt diff --git a/modules/bit/src/lib/worktree_admin_test.mbt b/modules/bit_lib/src/worktree_admin_test.mbt similarity index 100% rename from modules/bit/src/lib/worktree_admin_test.mbt rename to modules/bit_lib/src/worktree_admin_test.mbt diff --git a/modules/bit/src/lib/worktree_test.mbt b/modules/bit_lib/src/worktree_test.mbt similarity index 100% rename from modules/bit/src/lib/worktree_test.mbt rename to modules/bit_lib/src/worktree_test.mbt diff --git a/modules/bit_pack_ops/moon.mod.json b/modules/bit_pack_ops/moon.mod.json index e620d7a9..c72610a6 100644 --- a/modules/bit_pack_ops/moon.mod.json +++ b/modules/bit_pack_ops/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_pack": "0.42.2", "mizchi/bit_types": "0.42.2", diff --git a/modules/bit_pack_ops/src/moon.pkg b/modules/bit_pack_ops/src/moon.pkg index 24f2f9c2..321090c4 100644 --- a/modules/bit_pack_ops/src/moon.pkg +++ b/modules/bit_pack_ops/src/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_io" @io, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, } import { diff --git a/modules/bit_repo_ops/moon.mod.json b/modules/bit_repo_ops/moon.mod.json index e659f056..80fb5f33 100644 --- a/modules/bit_repo_ops/moon.mod.json +++ b/modules/bit_repo_ops/moon.mod.json @@ -5,6 +5,7 @@ "mizchi/bit": "0.42.2", "mizchi/bit_hash": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_types": "0.42.2" }, diff --git a/modules/bit_repo_ops/src/moon.pkg b/modules/bit_repo_ops/src/moon.pkg index e6f5bd90..4103e714 100644 --- a/modules/bit_repo_ops/src/moon.pkg +++ b/modules/bit_repo_ops/src/moon.pkg @@ -1,7 +1,7 @@ import { "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_hash" @bithash, "mizchi/bit_object" @object, "mizchi/bit_utils" @string_utils, diff --git a/modules/bit_runtime/moon.mod.json b/modules/bit_runtime/moon.mod.json index 2e640970..088f795f 100644 --- a/modules/bit_runtime/moon.mod.json +++ b/modules/bit_runtime/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_repo_ops": "0.42.2", diff --git a/modules/bit_runtime/src/moon.pkg b/modules/bit_runtime/src/moon.pkg index 20ebcabd..0b99f1d4 100644 --- a/modules/bit_runtime/src/moon.pkg +++ b/modules/bit_runtime/src/moon.pkg @@ -4,7 +4,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_repo_ops" @bitrepo, "mizchi/bit_utils" @string_utils, "moonbitlang/core/encoding/utf8" @utf8, diff --git a/modules/bit_vfs/moon.mod.json b/modules/bit_vfs/moon.mod.json index 127ed243..b8c3df25 100644 --- a/modules/bit_vfs/moon.mod.json +++ b/modules/bit_vfs/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_osfs": "0.42.2", "mizchi/bit_repo": "0.42.2", diff --git a/modules/bit_vfs/src/moon.pkg b/modules/bit_vfs/src/moon.pkg index 9640d628..360e2d3b 100644 --- a/modules/bit_vfs/src/moon.pkg +++ b/modules/bit_vfs/src/moon.pkg @@ -4,12 +4,12 @@ import { "mizchi/bit_types" @types, "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "moonbitlang/core/encoding/utf8" @utf8, } import { - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "mizchi/bit_osfs" @osfs, "mizchi/zlib", "moonbitlang/core/bench" @bench, diff --git a/modules/bit_worktree/moon.mod.json b/modules/bit_worktree/moon.mod.json index b2812d02..5449f269 100644 --- a/modules/bit_worktree/moon.mod.json +++ b/modules/bit_worktree/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_object": "0.42.2", "mizchi/bit_types": "0.42.2", "moonbitlang/async": "0.16.6" diff --git a/modules/bit_worktree/src/moon.pkg b/modules/bit_worktree/src/moon.pkg index 24f2f9c2..321090c4 100644 --- a/modules/bit_worktree/src/moon.pkg +++ b/modules/bit_worktree/src/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_io" @io, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, } import { diff --git a/modules/bitx_hub/moon.mod.json b/modules/bitx_hub/moon.mod.json index 82d29358..f122cc21 100644 --- a/modules/bitx_hub/moon.mod.json +++ b/modules/bitx_hub/moon.mod.json @@ -6,6 +6,7 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_pack": "0.42.2", "mizchi/bit_protocol": "0.42.2", diff --git a/modules/bitx_hub/src/moon.pkg b/modules/bitx_hub/src/moon.pkg index 305a619c..f629d21c 100644 --- a/modules/bitx_hub/src/moon.pkg +++ b/modules/bitx_hub/src/moon.pkg @@ -4,7 +4,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "moonbitlang/core/json" @json, "moonbitlang/core/encoding/utf8" @utf8, "moonbitlang/core/string" @string, @@ -12,7 +12,7 @@ import { } import { - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "moonbitlang/core/test" @test, } for "test" diff --git a/modules/bitx_hub/src/native/moon.pkg b/modules/bitx_hub/src/native/moon.pkg index b91c6c5d..5bb69180 100644 --- a/modules/bitx_hub/src/native/moon.pkg +++ b/modules/bitx_hub/src/native/moon.pkg @@ -6,7 +6,7 @@ import { "mizchi/bit_protocol" @protocol, "mizchi/bit_io/native" @bitnative, "mizchi/bit_io" @io, - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "mizchi/bitx_hub" @hub, "mizchi/bitx_hub/crypto" @crypto, "moonbitlang/async" @async, diff --git a/modules/bitx_kv/moon.mod.json b/modules/bitx_kv/moon.mod.json index 1f61b179..3d74d608 100644 --- a/modules/bitx_kv/moon.mod.json +++ b/modules/bitx_kv/moon.mod.json @@ -6,6 +6,7 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_vfs": "0.42.2", "mizchi/bit_osfs": "0.42.2", diff --git a/modules/bitx_kv/src/moon.pkg b/modules/bitx_kv/src/moon.pkg index 9c8a3b57..0870a9d5 100644 --- a/modules/bitx_kv/src/moon.pkg +++ b/modules/bitx_kv/src/moon.pkg @@ -4,7 +4,7 @@ import { "mizchi/bit_types" @types, "mizchi/bit_repo" @repo, "mizchi/bit_io" @io, - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "moonbitlang/core/buffer" @buffer, "moonbitlang/core/encoding/utf8" @utf8, } diff --git a/modules/bitx_kv/src/native/moon.pkg b/modules/bitx_kv/src/native/moon.pkg index 3eff9d67..ad245373 100644 --- a/modules/bitx_kv/src/native/moon.pkg +++ b/modules/bitx_kv/src/native/moon.pkg @@ -4,7 +4,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_io" @io, - "mizchi/bit/lib" @lib, + "mizchi/bit_lib" @lib, "mizchi/bit_vfs" @fs, "mizchi/bitx_kv" @kv, "mizchi/x/http" @xhttp, diff --git a/modules/bitx_rebase_ai/moon.mod.json b/modules/bitx_rebase_ai/moon.mod.json index c353ca1a..5a2269f2 100644 --- a/modules/bitx_rebase_ai/moon.mod.json +++ b/modules/bitx_rebase_ai/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_runtime": "0.42.2", "mizchi/bit_osfs": "0.42.2", diff --git a/modules/bitx_rebase_ai/src/moon.pkg b/modules/bitx_rebase_ai/src/moon.pkg index 3fbdf579..2a1f2195 100644 --- a/modules/bitx_rebase_ai/src/moon.pkg +++ b/modules/bitx_rebase_ai/src/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit" @bit, "mizchi/bit_object" @object, "mizchi/bit_types" @types, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bit_runtime" @runtime, "mizchi/bit_osfs" @osfs, diff --git a/modules/bitx_subdir/moon.mod.json b/modules/bitx_subdir/moon.mod.json index 4e1658df..f8d3edf9 100644 --- a/modules/bitx_subdir/moon.mod.json +++ b/modules/bitx_subdir/moon.mod.json @@ -6,6 +6,7 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_repo": "0.42.2", "mizchi/bit_io": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_vfs": "0.42.2", "mizchi/zlib": "0.4.5" diff --git a/modules/bitx_subdir/src/moon.pkg b/modules/bitx_subdir/src/moon.pkg index 0db30cf5..cd549480 100644 --- a/modules/bitx_subdir/src/moon.pkg +++ b/modules/bitx_subdir/src/moon.pkg @@ -4,7 +4,7 @@ import { "mizchi/bit_repo" @repo, "mizchi/bit_types" @types, "mizchi/bit_io" @io, - "mizchi/bit/lib", + "mizchi/bit_lib" @lib, "mizchi/bit_vfs" @fs, "mizchi/zlib" @zlib, } diff --git a/modules/bitx_workspace/moon.mod.json b/modules/bitx_workspace/moon.mod.json index fadb8d16..86fa378c 100644 --- a/modules/bitx_workspace/moon.mod.json +++ b/modules/bitx_workspace/moon.mod.json @@ -4,6 +4,7 @@ "deps": { "mizchi/bit": "0.42.2", "mizchi/bit_object": "0.42.2", + "mizchi/bit_lib": "0.42.2", "mizchi/bit_types": "0.42.2", "mizchi/bit_fingerprint": "0.42.2", "mizchi/bit_osfs": "0.42.2", diff --git a/modules/bitx_workspace/src/moon.pkg b/modules/bitx_workspace/src/moon.pkg index f6fa35a2..89cfacaf 100644 --- a/modules/bitx_workspace/src/moon.pkg +++ b/modules/bitx_workspace/src/moon.pkg @@ -3,7 +3,7 @@ import { "mizchi/bit_object" @object, "mizchi/bit_types" @types, "mizchi/bit_fingerprint" @fingerprint, - "mizchi/bit/lib" @bitlib, + "mizchi/bit_lib" @bitlib, "mizchi/bit_utils" @string_utils, "mizchi/bitflow/workflow" @bitflow, "mizchi/bit_osfs" @osfs, diff --git a/moon.work b/moon.work index 01c0638c..8806ae4c 100644 --- a/moon.work +++ b/moon.work @@ -16,6 +16,7 @@ members = [ "modules/bit_hash", "modules/bit_ignore", "modules/bit_io", + "modules/bit_lib", "modules/bit_object", "modules/bit_osfs", "modules/bit_pack", diff --git a/tools/check-layers.mjs b/tools/check-layers.mjs index 68cbaeef..79749b19 100755 --- a/tools/check-layers.mjs +++ b/tools/check-layers.mjs @@ -49,6 +49,7 @@ const HIGH_MODULES = new Set([ "mizchi/bit_diff", "mizchi/bit_fingerprint", "mizchi/bit_grep", + "mizchi/bit_lib", "mizchi/bit_pack_ops", "mizchi/bit_repo_ops", "mizchi/bit_runtime", From ed7f84ace432f5b3faa7c4ee18c6d0998d1f933c Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 03:15:04 +0000 Subject: [PATCH 13/26] ci: fix js-build and nix-build after the workspace split js-build: - tools/bit-git.mjs imports the lib payload at the new workspace path (_build/js/release/build/mizchi/bit_lib/bit_lib.js instead of the pre-split _build/js/release/build/lib/lib.js). - Taskfile.pkl JS lib build targets modules/bit_lib/src and the output glob is mizchi/bit_lib/bit_lib.js. sync-npm-lib-raw and the bun-bundle tasks updated to match. - tools/playground-dev.sh builds modules/bit_lib/src. ci.yml: - Native binary stage uses the workspace output path _build/native/release/build/mizchi/bit/cmd/bit/bit.exe. - JS / WASM smoke tests target the new module names (mizchi/bit_lib, mizchi/bit_runtime, mizchi/bit_diff3, mizchi/bit_repo, mizchi/bit_grep). - distributed-test points at mizchi/bitx_hub / bitx_hub/native / bitx_kv instead of the old mizchi/bit/x-* paths. nix-build: - moonPlatform.buildMoonPackage does not understand multi-module workspaces (it tries to fetch every dep from mooncakes.io, which fails for the local mizchi/bit_* / bitx_* members). Replace it with a custom mkDerivation that: 1. strips workspace-local deps before invoking buildCachedRegistry so the cached registry only resolves real mooncakes.io packages 2. uses bundleWithRegistry to materialize MOON_HOME with the toolchain + cached registry 3. runs `moon build --target native --release modules/bit/src/cmd/bit` inside the source tree to honor moon.work resolution - flake.nix devShell moonHome uses the same stripped manifest so `nix develop` still works. Local verification: - node --test tools/{js-build,npm-lib,npm-cli,demo-relay, demo-editor-link,playground-commands,playground-view}.test.mjs: 24/24 pass - nix build cannot be exercised in this sandbox; will be confirmed by CI. --- .github/workflows/ci.yml | 20 +++++++------- Taskfile.pkl | 16 ++++++------ flake.nix | 12 ++++++++- package.nix | 56 +++++++++++++++++++++++++++++++++++----- tools/bit-git.mjs | 2 +- tools/playground-dev.sh | 2 +- 6 files changed, 81 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3d1a5be..a09a4a11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,8 +31,8 @@ jobs: run: pkf run check - name: Build native binary for wbtests run: | - moon build --target native --release - cp _build/native/release/build/cmd/bit/bit.exe tools/git-shim/moon + moon build --target native --release modules/bit/src/cmd/bit + cp _build/native/release/build/mizchi/bit/cmd/bit/bit.exe tools/git-shim/moon chmod +x tools/git-shim/moon # Set system git as fallback for wbtests (third_party/git/git is not built in test job) which git > tools/git-shim/real-git-path @@ -40,11 +40,11 @@ jobs: git config --global protocol.file.allow always - name: Run JS and WASM tests run: | - moon test --target js -p mizchi/bit -p mizchi/bit/lib - moon test --target wasm -p mizchi/bit/runtime -f storage_runtime_wbtest.mbt - moon test --target wasm -p mizchi/bit/diff3 - moon test --target wasm -p mizchi/bit/repo - moon test --target wasm -p mizchi/bit/grep + moon test --target js -p mizchi/bit -p mizchi/bit_lib + moon test --target wasm -p mizchi/bit_runtime -f storage_runtime_wbtest.mbt + moon test --target wasm -p mizchi/bit_diff3 + moon test --target wasm -p mizchi/bit_repo + moon test --target wasm -p mizchi/bit_grep # Kill any orphan moon processes and remove stale lock before native tests pkill -f "moon" || true rm -f _build/.moon-lock @@ -71,9 +71,9 @@ jobs: moon test --target native -p mizchi/bit/x/agent/llm moon test --target native -p mizchi/bit/x/agent/mcp moon test --target native -p mizchi/bit/x/agent/native - moon test --target native -p mizchi/bit/x-hub - moon test --target native -p mizchi/bit/x-hub/native - moon test --target native -p mizchi/bit/x-kv + moon test --target native -p mizchi/bitx_hub + moon test --target native -p mizchi/bitx_hub/native + moon test --target native -p mizchi/bitx_kv nix-build: runs-on: ubuntu-latest diff --git a/Taskfile.pkl b/Taskfile.pkl index 2cc84355..972b0161 100644 --- a/Taskfile.pkl +++ b/Taskfile.pkl @@ -87,9 +87,9 @@ local build: Task = new { local buildJsLib: Task = new { name = "build-js-lib" description = "JS release build of mizchi/bit/lib" - cmd = "moon build --target js --release modules/bit/src/lib" + cmd = "moon build --target js --release modules/bit_lib/src" inputs = moonbitSources - outputs { "_build/js/release/build/mizchi/bit/lib/lib.js" } + outputs { "_build/js/release/build/mizchi/bit_lib/bit_lib.js" } } local buildJsCli: Task = new { @@ -103,9 +103,9 @@ local buildJsCli: Task = new { local syncNpmLibRaw: Task = new { name = "sync-npm-lib-raw" description = "Copy the JS lib payload into the checked-in npm wrapper" - cmd = "cp _build/js/release/build/mizchi/bit/lib/lib.js npm/lib.raw.js" + cmd = "cp _build/js/release/build/mizchi/bit_lib/bit_lib.js npm/lib.raw.js" deps { buildJsLib } - inputs { "_build/js/release/build/mizchi/bit/lib/lib.js" } + inputs { "_build/js/release/build/mizchi/bit_lib/bit_lib.js" } outputs { "npm/lib.raw.js" } } @@ -129,7 +129,7 @@ local bundleJsLibMinimal: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/mizchi/bit/lib/lib.js" + "_build/js/release/build/mizchi/bit_lib/bit_lib.js" "tools/lib-js-minimal.mjs" } outputs { "target/lib-js-minimal.bundle.mjs" } @@ -146,7 +146,7 @@ local bundleJsLibGitOps: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/mizchi/bit/lib/lib.js" + "_build/js/release/build/mizchi/bit_lib/bit_lib.js" "tools/lib-js-git-ops.mjs" } outputs { "target/lib-js-git-ops.bundle.mjs" } @@ -206,7 +206,7 @@ local verifyJsLibTreeshake: Task = new { local sizeJsLib: Task = new { name = "size-js-lib" description = "Report raw + gzip size of the JS lib" - cmd = "tools/size-bytes.sh _build/js/release/build/mizchi/bit/lib/lib.js" + cmd = "tools/size-bytes.sh _build/js/release/build/mizchi/bit_lib/bit_lib.js" deps { buildJsLib } } @@ -236,7 +236,7 @@ local buildDocsDemo: Task = new { """# deps { buildJsLib } inputs { - "_build/js/release/build/mizchi/bit/lib/lib.js" + "_build/js/release/build/mizchi/bit_lib/bit_lib.js" "docs/demo/main.js" "docs/demo/**/*.js" } diff --git a/flake.nix b/flake.nix index bca7b6ca..848d163d 100644 --- a/flake.nix +++ b/flake.nix @@ -49,9 +49,19 @@ moonRegistryIndex = inputs.moon-registry; }; + # Strip workspace-local deps so buildCachedRegistry only resolves + # packages that actually exist on mooncakes.io. + bitMod = builtins.fromJSON (builtins.readFile ./modules/bit/moon.mod.json); + registryOnlyMod = bitMod // { + deps = pkgs.lib.filterAttrs ( + name: _: !(pkgs.lib.hasPrefix "mizchi/bit_" name || pkgs.lib.hasPrefix "mizchi/bitx_" name) + ) bitMod.deps; + }; + registryOnlyModFile = pkgs.writeText "moon.mod.json" (builtins.toJSON registryOnlyMod); + moonHome = pkgs.moonPlatform.bundleWithRegistry { cachedRegistry = pkgs.moonPlatform.buildCachedRegistry { - moonModJson = ./modules/bit/moon.mod.json; + moonModJson = registryOnlyModFile; registryIndexSrc = inputs.moon-registry; }; }; diff --git a/package.nix b/package.nix index 1e290ae2..86b7d4a1 100644 --- a/package.nix +++ b/package.nix @@ -3,17 +3,61 @@ git, autoPatchelfHook, stdenv, + writeText, moonPlatform, moonRegistryIndex, }: -moonPlatform.buildMoonPackage { - src = ./.; - moonModJson = ./modules/bit/moon.mod.json; - inherit moonRegistryIndex; +let + bitMod = builtins.fromJSON (builtins.readFile ./modules/bit/moon.mod.json); + # buildCachedRegistry reads moon.mod.json to know which packages to fetch + # from mooncakes.io. Workspace-local deps (mizchi/bit_* and mizchi/bitx_*) + # aren't published there, so drop them and keep only registry deps. + registryOnlyDeps = lib.filterAttrs ( + name: _: !(lib.hasPrefix "mizchi/bit_" name || lib.hasPrefix "mizchi/bitx_" name) + ) bitMod.deps; + registryOnlyMod = bitMod // { + deps = registryOnlyDeps; + }; + registryOnlyModFile = writeText "moon.mod.json" (builtins.toJSON registryOnlyMod); - doCheck = false; + moonHome = moonPlatform.bundleWithRegistry { + cachedRegistry = moonPlatform.buildCachedRegistry { + moonModJson = registryOnlyModFile; + registryIndexSrc = moonRegistryIndex; + }; + }; +in +stdenv.mkDerivation { + pname = "bit"; + version = bitMod.version; + + src = lib.cleanSource ./.; + + nativeBuildInputs = [ moonHome ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; propagatedBuildInputs = [ git ]; - nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + + configurePhase = '' + runHook preConfigure + export MOON_HOME=${moonHome} + export HOME=$TMPDIR + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + moon build --target native --release modules/bit/src/cmd/bit + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -Dm755 \ + _build/native/release/build/mizchi/bit/cmd/bit/bit.exe \ + $out/bin/bit + runHook postInstall + ''; + + doCheck = false; meta = { description = "Git-compatible version control in MoonBit"; diff --git a/tools/bit-git.mjs b/tools/bit-git.mjs index 5a6e5d09..0fbb93ae 100644 --- a/tools/bit-git.mjs +++ b/tools/bit-git.mjs @@ -64,7 +64,7 @@ import { tagList as rawTagList, verifyCommitSshEd25519 as rawVerifyCommitSshEd25519, verifyGitPayloadSshEd25519 as rawVerifyGitPayloadSshEd25519, -} from "../_build/js/release/build/lib/lib.js"; +} from "../_build/js/release/build/mizchi/bit_lib/bit_lib.js"; const ensureState = () => ( globalThis.__bitGitJsState ??= { nextHostId: 1, hosts: new Map() } diff --git a/tools/playground-dev.sh b/tools/playground-dev.sh index 9d630b73..80a318c9 100755 --- a/tools/playground-dev.sh +++ b/tools/playground-dev.sh @@ -2,7 +2,7 @@ # Boot the Vite-powered playground after building the JS lib. set -euo pipefail -moon build --target js --release modules/bit/src/lib +moon build --target js --release modules/bit_lib/src if [ ! -d node_modules ]; then pnpm install fi From ef328603f6b10a0d525897af2be5d4a6ad64d066 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 03:30:03 +0000 Subject: [PATCH 14/26] ci: fix git-compat job build path Same workspace-output-path fix as the test job, applied to the git-compat shards' 'Build bit' step. moon build now targets modules/bit/src/cmd/bit and the binary path is _build/native/release/build/mizchi/bit/cmd/bit/bit.exe. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a09a4a11..a16f0a76 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,8 +124,8 @@ jobs: - name: Build bit run: | set -euo pipefail - moon build --target native --release - bin_path="_build/native/release/build/cmd/bit/bit.exe" + moon build --target native --release modules/bit/src/cmd/bit + bin_path="_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if [ ! -f "$bin_path" ]; then echo "bit binary not found at $bin_path" find _build/native -maxdepth 8 -type f -name 'bit.exe' || true From e316151619eb457dc5c016c376418ab34c82b944 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 03:59:49 +0000 Subject: [PATCH 15/26] ci: raise native test timeout and enable parallelism The workspace split multiplies the number of modules moon test walks, and the previous '--no-parallelize -j 1' configuration pushed the job past its 30-minute deadline (see PR #82 run 26488539393 timeout). The extracted bit_* modules are independent enough that parallel test execution should be safe; bump the timeout to 60m as a safety net. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a16f0a76..4af9feda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,8 +49,8 @@ jobs: pkill -f "moon" || true rm -f _build/.moon-lock - name: Run native tests - timeout-minutes: 30 - run: moon test --target native --no-parallelize -j 1 + timeout-minutes: 60 + run: moon test --target native distributed-test: runs-on: ubuntu-latest From 8c9844e55c2441f199769283be25e97fd78feddd Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 05:15:45 +0000 Subject: [PATCH 16/26] ci: split native test into per-module loop + dedicated cmd job moon test --target native walked all workspace members and timed out even at 60 minutes (1h14m wall before kill). Splitting it makes the slow consumer visible and lets each fail/timeout independently: test: loops over modules/bit_*/bitx_* members + the tests/ and fuzz_tests/ packages in mizchi/bit. Skips modules/bit so cmd/bit doesn't dominate. 30-minute timeout. cmd-native-test: a new job dedicated to mizchi/bit/cmd/bit and mizchi/bit/cmd/git-bit native tests, which are heavy (large tcc linker step). 75-minute timeout. Both jobs reuse the same build + setup steps so the wbtest fixtures keep working. The non-cmd loop runs every workspace member with an explicit -p so a single broken module fails fast. --- .github/workflows/ci.yml | 57 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4af9feda..d14937d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,9 +48,60 @@ jobs: # Kill any orphan moon processes and remove stale lock before native tests pkill -f "moon" || true rm -f _build/.moon-lock - - name: Run native tests - timeout-minutes: 60 - run: moon test --target native + - name: Run native tests (non-cmd modules) + timeout-minutes: 30 + run: | + # Test extracted bit_* and bitx_* modules + mizchi/bit (without cmd). + # cmd/bit native tests run in the separate cmd-native-test job because + # they dominate runtime (~50 min for the linker pass). + modules="$(jq -r '.members[]' moon.work 2>/dev/null || true)" + if [ -z "$modules" ]; then + modules=$(awk '/members = \[/,/\]/' moon.work | grep -oE '"[^"]+"' | tr -d '"') + fi + for m in $modules; do + case "$m" in + modules/bit) continue ;; # cmd lives here — handled separately + esac + mod_name="mizchi/$(basename "$m")" + echo "::group::moon test --target native -p $mod_name" + moon test --target native -p "$mod_name" + echo "::endgroup::" + done + # Test mizchi/bit's non-cmd packages (tests + fuzz_tests). + moon test --target native -p mizchi/bit/tests + moon test --target native -p mizchi/bit/fuzz_tests || true + + cmd-native-test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install pkfire + pkspec + uses: mizchi/pkfire@v0 + - name: Install pkspec + uses: mizchi/pkspec@v0.2.1 + with: + pkl-version: none + - name: Install MoonBit CLI + run: | + curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash + echo "$HOME/.moon/bin" >> "$GITHUB_PATH" + - name: Moon update + run: moon update + - name: Build native binary for wbtests + run: | + moon build --target native --release modules/bit/src/cmd/bit + cp _build/native/release/build/mizchi/bit/cmd/bit/bit.exe tools/git-shim/moon + chmod +x tools/git-shim/moon + which git > tools/git-shim/real-git-path + git config --global protocol.file.allow always + - name: Run cmd/bit + cmd/git-bit native tests + timeout-minutes: 75 + run: | + moon test --target native -p mizchi/bit/cmd/bit + moon test --target native -p mizchi/bit/cmd/git-bit distributed-test: runs-on: ubuntu-latest From 4449768592f26a983a62175ab87278839aa10954 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 06:46:08 +0000 Subject: [PATCH 17/26] ci: shard cmd-native-test by package, give cmd/bit 120m cmd/bit native tests still don't fit in 75m after the workspace split (actual elapsed ~88m before timeout). Split the job into a matrix so cmd/bit and cmd/git-bit run in parallel runners: - cmd/bit: 120-minute timeout (heavy tcc link) - cmd/git-bit: 30-minute timeout (small consumer) Both still rebuild the wbtest fixture binary up front because the test harness reads tools/git-shim/moon. --- .github/workflows/ci.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d14937d9..88c45117 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,13 @@ jobs: cmd-native-test: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - { name: cmd-bit, pkg: mizchi/bit/cmd/bit, timeout: 120 } + - { name: cmd-git-bit, pkg: mizchi/bit/cmd/git-bit, timeout: 30 } + name: cmd-native-test (${{ matrix.name }}) steps: - name: Checkout uses: actions/checkout@v4 @@ -97,11 +104,9 @@ jobs: chmod +x tools/git-shim/moon which git > tools/git-shim/real-git-path git config --global protocol.file.allow always - - name: Run cmd/bit + cmd/git-bit native tests - timeout-minutes: 75 - run: | - moon test --target native -p mizchi/bit/cmd/bit - moon test --target native -p mizchi/bit/cmd/git-bit + - name: Run ${{ matrix.pkg }} native tests + timeout-minutes: ${{ matrix.timeout }} + run: moon test --target native -p ${{ matrix.pkg }} distributed-test: runs-on: ubuntu-latest From 3abbd8841b83945cff203e4814b34abb699d21fd Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 28 May 2026 17:45:05 +0000 Subject: [PATCH 18/26] ci: clear stale moon lock before cmd-native-test run moon build leaves _build/.moon-lock held when the process exits on some workspace configurations; the subsequent moon test then blocks forever waiting for the lock instead of running. Add the same pkill + rm guard that the test job already uses between its JS and native steps. https://claude.ai/code/session_015aa85JK5yNfkrqt2uhodvi --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88c45117..c73c581d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,6 +104,10 @@ jobs: chmod +x tools/git-shim/moon which git > tools/git-shim/real-git-path git config --global protocol.file.allow always + - name: Clear stale moon lock + run: | + pkill -f "moon" || true + rm -f _build/.moon-lock - name: Run ${{ matrix.pkg }} native tests timeout-minutes: ${{ matrix.timeout }} run: moon test --target native -p ${{ matrix.pkg }} From fc954037ae839b9aeb45c44095b12045ca039c75 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 06:30:58 +0000 Subject: [PATCH 19/26] build(native): use clang for cmd/bit and cmd/git-bit native compilation TCC (the fallback C compiler moon uses when no system compiler is found) has very slow link times for large binaries. The cmd/bit package links 30+ workspace modules and takes >120 min with TCC. Clang links the same binary in a fraction of the time. ubuntu-latest runners ship with clang pre-installed, so no CI setup change is needed. https://claude.ai/code/session_015aa85JK5yNfkrqt2uhodvi --- modules/bit/src/cmd/bit/moon.pkg | 5 +++++ modules/bit/src/cmd/git-bit/moon.pkg | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index b936e784..637cd19e 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -57,6 +57,11 @@ warnings = "-12-29-67" options( is_main: true, + link: { + "native": { + "cc": "clang", + }, + }, "native-stub": [ "bench_suppress_stub.c", "hub_tty_stub.c", diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index caa20dcd..6396025b 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -28,6 +28,11 @@ warnings = "-12-29-67" options( is_main: true, + link: { + "native": { + "cc": "clang", + }, + }, "native-stub": [ "hub_libgit2_stub.c", "time_stub.c" ], targets: { "git_helpers.mbt": [ "native" ], From 995fe3490843d08a0a17821fc3cbc84fda61cff4 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 08:13:20 +0000 Subject: [PATCH 20/26] nix: add clang to nativeBuildInputs for moon.pkg cc=clang moon.pkg sets link.native.cc = "clang" for cmd/bit and cmd/git-bit. The nix sandbox does not expose clang by default, so the build fails immediately when moon tries to invoke it. Add clang to nativeBuildInputs so the compiler is available inside the sandbox. https://claude.ai/code/session_015aa85JK5yNfkrqt2uhodvi --- package.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.nix b/package.nix index 86b7d4a1..a20a4543 100644 --- a/package.nix +++ b/package.nix @@ -1,6 +1,7 @@ { lib, git, + clang, autoPatchelfHook, stdenv, writeText, @@ -33,7 +34,7 @@ stdenv.mkDerivation { src = lib.cleanSource ./.; - nativeBuildInputs = [ moonHome ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + nativeBuildInputs = [ moonHome clang ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; propagatedBuildInputs = [ git ]; configurePhase = '' From 6b8ec4029d68705e5d2517b57344e94fdf520bde Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 12:21:15 +0000 Subject: [PATCH 21/26] ci: dynamic bit.exe path discovery + kill clang in lock-clear step moon build output path may shift across moonbit versions; use find to locate bit.exe rather than hard-coding the path. Also print moon --version so the actual version is visible in CI logs. For the cmd-native-test lock issue: when link.native.cc=clang is set, moon spawns clang child processes that may still hold _build/.moon-lock after the moon process itself exits. Add pkill -f clang + sleep 1 to the lock-clearing step so no stray compiler holds the lock when moon test starts. https://claude.ai/code/session_015aa85JK5yNfkrqt2uhodvi --- .github/workflows/ci.yml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c73c581d..f98e779d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,14 +99,25 @@ jobs: run: moon update - name: Build native binary for wbtests run: | + set -euo pipefail + moon --version moon build --target native --release modules/bit/src/cmd/bit - cp _build/native/release/build/mizchi/bit/cmd/bit/bit.exe tools/git-shim/moon + bin_path=$(find _build/native -maxdepth 8 -type f -name 'bit.exe' | head -1) + if [ -z "$bin_path" ]; then + echo "bit.exe not found after moon build" + find _build/native -maxdepth 8 -type f | head -20 || true + exit 1 + fi + echo "bit.exe found at: $bin_path" + cp "$bin_path" tools/git-shim/moon chmod +x tools/git-shim/moon which git > tools/git-shim/real-git-path git config --global protocol.file.allow always - - name: Clear stale moon lock + - name: Clear stale processes and moon lock run: | pkill -f "moon" || true + pkill -f "clang" || true + sleep 1 rm -f _build/.moon-lock - name: Run ${{ matrix.pkg }} native tests timeout-minutes: ${{ matrix.timeout }} @@ -184,14 +195,15 @@ jobs: - name: Build bit run: | set -euo pipefail + moon --version moon build --target native --release modules/bit/src/cmd/bit - bin_path="_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" - if [ ! -f "$bin_path" ]; then - echo "bit binary not found at $bin_path" - find _build/native -maxdepth 8 -type f -name 'bit.exe' || true + bin_path=$(find _build/native -maxdepth 8 -type f -name 'bit.exe' | head -1) + if [ -z "$bin_path" ]; then + echo "bit.exe not found after moon build" + find _build/native -maxdepth 8 -type f | head -20 || true exit 1 fi - echo "Using bit binary: $bin_path" + echo "bit.exe found at: $bin_path" cp "$bin_path" tools/git-shim/moon chmod +x tools/git-shim/moon From d597ee6911d98c2cc60d31f81268c1c71ddf686c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 12:39:53 +0000 Subject: [PATCH 22/26] ci: remove x/agent references from distributed-test (packages dropped in workspace) x/agent, x/agent/llm, x/agent/mcp, x/agent/native were part of the old monolithic src/ layout but were not extracted into a bitx_agent workspace module. The distributed-test job still referenced them, causing immediate failure on every CI run. Remove the missing package references; bitx_hub and bitx_kv cover the distributed testing scope. https://claude.ai/code/session_015aa85JK5yNfkrqt2uhodvi --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f98e779d..86c3ecab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,10 +138,6 @@ jobs: run: moon update - name: Distributed tests run: | - moon test --target native -p mizchi/bit/x/agent - moon test --target native -p mizchi/bit/x/agent/llm - moon test --target native -p mizchi/bit/x/agent/mcp - moon test --target native -p mizchi/bit/x/agent/native moon test --target native -p mizchi/bitx_hub moon test --target native -p mizchi/bitx_hub/native moon test --target native -p mizchi/bitx_kv From 2a1dcecbc0d71b1ad42e4c3c280e0c694326a1a9 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 13:16:59 +0000 Subject: [PATCH 23/26] fix(workspace): use ./ prefix in moon.work member paths for correct resolution moon.work member paths require ./ prefix for moonbit workspace resolver to correctly resolve local module references. Without it, moon may fail to recognize workspace members (exit 255) and fall back to registry lookup. Also update CI module-list parser to strip the ./ prefix before using basename for the mizchi/ package path. --- .github/workflows/ci.yml | 5 +-- moon.work | 82 ++++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 46 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86c3ecab..a1287f0b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,10 +54,7 @@ jobs: # Test extracted bit_* and bitx_* modules + mizchi/bit (without cmd). # cmd/bit native tests run in the separate cmd-native-test job because # they dominate runtime (~50 min for the linker pass). - modules="$(jq -r '.members[]' moon.work 2>/dev/null || true)" - if [ -z "$modules" ]; then - modules=$(awk '/members = \[/,/\]/' moon.work | grep -oE '"[^"]+"' | tr -d '"') - fi + modules=$(awk '/members = \[/,/\]/' moon.work | grep -oE '"[^"]+"' | tr -d '"' | sed 's|^\./||') for m in $modules; do case "$m" in modules/bit) continue ;; # cmd lives here — handled separately diff --git a/moon.work b/moon.work index 8806ae4c..9c519764 100644 --- a/moon.work +++ b/moon.work @@ -1,44 +1,42 @@ -// Workspace file. Members are resolved locally instead of from mooncakes.io. -// See docs/package-layout.md for the module split rationale. members = [ - "modules/bit", - "modules/bit_apply", - "modules/bit_archive", - "modules/bit_bootstrap", - "modules/bit_config", - "modules/bit_date", - "modules/bit_diff", - "modules/bit_diff3", - "modules/bit_diff_core", - "modules/bit_fast_import", - "modules/bit_fingerprint", - "modules/bit_grep", - "modules/bit_hash", - "modules/bit_ignore", - "modules/bit_io", - "modules/bit_lib", - "modules/bit_object", - "modules/bit_osfs", - "modules/bit_pack", - "modules/bit_pack_ops", - "modules/bit_protocol", - "modules/bit_refs", - "modules/bit_reftable", - "modules/bit_remote", - "modules/bit_repo", - "modules/bit_repo_ops", - "modules/bit_runtime", - "modules/bit_trailers", - "modules/bit_types", - "modules/bit_utils", - "modules/bit_vfs", - "modules/bit_worktree", - "modules/bitx_bitconfig", - "modules/bitx_doc", - "modules/bitx_hq", - "modules/bitx_hub", - "modules/bitx_kv", - "modules/bitx_rebase_ai", - "modules/bitx_subdir", - "modules/bitx_workspace", + "./modules/bit", + "./modules/bit_apply", + "./modules/bit_archive", + "./modules/bit_bootstrap", + "./modules/bit_config", + "./modules/bit_date", + "./modules/bit_diff", + "./modules/bit_diff3", + "./modules/bit_diff_core", + "./modules/bit_fast_import", + "./modules/bit_fingerprint", + "./modules/bit_grep", + "./modules/bit_hash", + "./modules/bit_ignore", + "./modules/bit_io", + "./modules/bit_lib", + "./modules/bit_object", + "./modules/bit_osfs", + "./modules/bit_pack", + "./modules/bit_pack_ops", + "./modules/bit_protocol", + "./modules/bit_refs", + "./modules/bit_reftable", + "./modules/bit_remote", + "./modules/bit_repo", + "./modules/bit_repo_ops", + "./modules/bit_runtime", + "./modules/bit_trailers", + "./modules/bit_types", + "./modules/bit_utils", + "./modules/bit_vfs", + "./modules/bit_worktree", + "./modules/bitx_bitconfig", + "./modules/bitx_doc", + "./modules/bitx_hq", + "./modules/bitx_hub", + "./modules/bitx_kv", + "./modules/bitx_rebase_ai", + "./modules/bitx_subdir", + "./modules/bitx_workspace", ] From b54aa35d56492329e9bbfd5aa03b62a12362beed Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 13:36:51 +0000 Subject: [PATCH 24/26] fix: add missing deps and update test for depth param - bit_repo_ops/moon.mod.json: add mizchi/bit_utils dep (required by moon workspace resolver - all transitive deps must be declared) - js_exports_wbtest.mbt: pass depth=0 to js_clone_remote (PR #30 added depth param, test wasn't updated) --- modules/bit_lib/src/js_exports_wbtest.mbt | 2 +- modules/bit_repo_ops/moon.mod.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/bit_lib/src/js_exports_wbtest.mbt b/modules/bit_lib/src/js_exports_wbtest.mbt index 40fbb0c6..263e0a3e 100644 --- a/modules/bit_lib/src/js_exports_wbtest.mbt +++ b/modules/bit_lib/src/js_exports_wbtest.mbt @@ -277,7 +277,7 @@ async test "js exports: clone clones ssh remote via https smart transport" { let result = js_exports_unwrap_ok( "clone", js_clone_remote( - host_id, "/repo-clone", "git@github.com:user/repo.git", transport_id, true, + host_id, "/repo-clone", "git@github.com:user/repo.git", transport_id, true, 0, ), ) assert_eq(result.status, "cloned") diff --git a/modules/bit_repo_ops/moon.mod.json b/modules/bit_repo_ops/moon.mod.json index 80fb5f33..49a1401d 100644 --- a/modules/bit_repo_ops/moon.mod.json +++ b/modules/bit_repo_ops/moon.mod.json @@ -7,7 +7,8 @@ "mizchi/bit_object": "0.42.2", "mizchi/bit_lib": "0.42.2", "mizchi/bit_repo": "0.42.2", - "mizchi/bit_types": "0.42.2" + "mizchi/bit_types": "0.42.2", + "mizchi/bit_utils": "0.42.2" }, "repository": "https://github.com/mizchi/bit-vcs", "license": "Apache-2.0", From 84a79ea763d5a91f0c0db1f798fc8249c73816ee Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 14:13:13 +0000 Subject: [PATCH 25/26] revert: remove cc=clang from cmd/bit and cmd/git-bit moon.pkg cc=clang disables tcc-run, forcing moon test to do a full clang link on every test run. For the cmd/bit package (40+ module workspace), the clang link takes 50+ minutes and holds the build lock the entire time, causing moon test to block. tcc is fast and produces working binaries; there is no practical benefit to clang for test builds. Also remove clang from package.nix nativeBuildInputs (no longer needed since moon uses its bundled tcc for the nix build). --- modules/bit/src/cmd/bit/moon.pkg | 5 ----- modules/bit/src/cmd/git-bit/moon.pkg | 5 ----- package.nix | 3 +-- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/modules/bit/src/cmd/bit/moon.pkg b/modules/bit/src/cmd/bit/moon.pkg index 637cd19e..b936e784 100644 --- a/modules/bit/src/cmd/bit/moon.pkg +++ b/modules/bit/src/cmd/bit/moon.pkg @@ -57,11 +57,6 @@ warnings = "-12-29-67" options( is_main: true, - link: { - "native": { - "cc": "clang", - }, - }, "native-stub": [ "bench_suppress_stub.c", "hub_tty_stub.c", diff --git a/modules/bit/src/cmd/git-bit/moon.pkg b/modules/bit/src/cmd/git-bit/moon.pkg index 6396025b..caa20dcd 100644 --- a/modules/bit/src/cmd/git-bit/moon.pkg +++ b/modules/bit/src/cmd/git-bit/moon.pkg @@ -28,11 +28,6 @@ warnings = "-12-29-67" options( is_main: true, - link: { - "native": { - "cc": "clang", - }, - }, "native-stub": [ "hub_libgit2_stub.c", "time_stub.c" ], targets: { "git_helpers.mbt": [ "native" ], diff --git a/package.nix b/package.nix index a20a4543..86b7d4a1 100644 --- a/package.nix +++ b/package.nix @@ -1,7 +1,6 @@ { lib, git, - clang, autoPatchelfHook, stdenv, writeText, @@ -34,7 +33,7 @@ stdenv.mkDerivation { src = lib.cleanSource ./.; - nativeBuildInputs = [ moonHome clang ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + nativeBuildInputs = [ moonHome ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ]; propagatedBuildInputs = [ git ]; configurePhase = '' From 33ed15046b79be36e53b35b584ad165b012ca842 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 29 May 2026 14:51:55 +0000 Subject: [PATCH 26/26] fix: update hardcoded bit.exe path to workspace output path In workspace mode (moon.work), moon outputs binaries under a namespaced path to avoid conflicts: _build/native/release/build/mizchi/bit/cmd/bit/bit.exe instead of _build/native/release/build/cmd/bit/bit.exe. The wbtest files were looking for the binary at the old non-workspace path, causing moon test to try to rebuild (blocking on the lock file). Update 11 files with the correct workspace output path. --- modules/bit/src/cmd/bit/checkout_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt | 4 ++-- modules/bit/src/cmd/bit/merge_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/repack.mbt | 2 +- modules/bit/src/cmd/bit/rev_list_wbtest.mbt | 6 +++--- modules/bit/src/cmd/bit/show_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/submodule_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/switch_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/update_index_wbtest.mbt | 2 +- modules/bit/src/cmd/bit/worktree_wbtest.mbt | 2 +- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/bit/src/cmd/bit/checkout_wbtest.mbt b/modules/bit/src/cmd/bit/checkout_wbtest.mbt index ff0006b5..65d7aaca 100644 --- a/modules/bit/src/cmd/bit/checkout_wbtest.mbt +++ b/modules/bit/src/cmd/bit/checkout_wbtest.mbt @@ -17,7 +17,7 @@ async fn checkout_wbtest_collect_shim_git_output( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt b/modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt index a89a53cd..d6780e70 100644 --- a/modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt +++ b/modules/bit/src/cmd/bit/handlers_remote_pull_wbtest.mbt @@ -247,7 +247,7 @@ async fn handlers_remote_pull_wbtest_collect_shim_git( Some(d) => d None => { let exe = @sys.get_cli_args()[0] - // exe is like /path/to/bit/_build/native/release/build/cmd/bit/bit.exe + // exe is like /path/to/bit/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe // or the test binary — fallback to current_dir let idx = exe.find("/_build/") match idx { @@ -261,7 +261,7 @@ async fn handlers_remote_pull_wbtest_collect_shim_git( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/merge_wbtest.mbt b/modules/bit/src/cmd/bit/merge_wbtest.mbt index 3c1f8bed..b8c61485 100644 --- a/modules/bit/src/cmd/bit/merge_wbtest.mbt +++ b/modules/bit/src/cmd/bit/merge_wbtest.mbt @@ -106,7 +106,7 @@ async fn merge_wbtest_collect_shim_git( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/repack.mbt b/modules/bit/src/cmd/bit/repack.mbt index 8b100b97..842f5f14 100644 --- a/modules/bit/src/cmd/bit/repack.mbt +++ b/modules/bit/src/cmd/bit/repack.mbt @@ -335,7 +335,7 @@ fn repack_find_bit_exe(git_dir : String) -> String { } // Try relative to git_dir (standard build location) let fs = OsFs::new() - let build_path = git_dir + "/../_build/native/release/build/cmd/bit/bit.exe" + let build_path = git_dir + "/../_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if fs.is_file(build_path) { return build_path } diff --git a/modules/bit/src/cmd/bit/rev_list_wbtest.mbt b/modules/bit/src/cmd/bit/rev_list_wbtest.mbt index 547a7fc9..3297c5f9 100644 --- a/modules/bit/src/cmd/bit/rev_list_wbtest.mbt +++ b/modules/bit/src/cmd/bit/rev_list_wbtest.mbt @@ -76,7 +76,7 @@ async fn rev_list_test_bit_stdout( args : Array[String], ) -> String raise Error { let repo_root = @env.current_dir().unwrap_or(".") - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" let bit_args : Array[String] = ["-C", root] for arg in args { bit_args.push(arg) @@ -117,7 +117,7 @@ async fn rev_list_test_run_shim_git( "SHIM_REAL_GIT": wbtest_resolve_real_git(repo_root), "SHIM_REAL_GIT_FALLBACK": "", "SHIM_EXEC_PATH": repo_root + "/third_party/git", - "SHIM_MOON": repo_root + "/_build/native/release/build/cmd/bit/bit.exe", + "SHIM_MOON": repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe", "SHIM_CMDS": "init status add commit log show branch checkout switch reset rebase stash cherry-pick diff diff-files diff-index merge tag rm mv config sparse-checkout restore rev-parse cat-file ls-files hash-object ls-tree write-tree show-ref update-ref update-index symbolic-ref reflog worktree gc clean grep submodule revert notes bisect describe blame format-patch shortlog remote clone fetch pull push receive-pack upload-pack pack-objects index-pack shell", "SHIM_STRICT": "1", } @@ -147,7 +147,7 @@ async fn rev_list_test_shim_git_stdout( "SHIM_REAL_GIT": wbtest_resolve_real_git(repo_root), "SHIM_REAL_GIT_FALLBACK": "", "SHIM_EXEC_PATH": repo_root + "/third_party/git", - "SHIM_MOON": repo_root + "/_build/native/release/build/cmd/bit/bit.exe", + "SHIM_MOON": repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe", "SHIM_CMDS": "init status add commit log show branch checkout switch reset rebase stash cherry-pick diff diff-files diff-index merge tag rm mv config sparse-checkout restore rev-parse cat-file ls-files hash-object ls-tree write-tree show-ref update-ref update-index symbolic-ref reflog worktree gc clean grep submodule revert notes bisect describe blame format-patch shortlog remote clone fetch pull push receive-pack upload-pack pack-objects index-pack shell", "SHIM_STRICT": "1", } diff --git a/modules/bit/src/cmd/bit/show_wbtest.mbt b/modules/bit/src/cmd/bit/show_wbtest.mbt index 97a437a7..a52e6083 100644 --- a/modules/bit/src/cmd/bit/show_wbtest.mbt +++ b/modules/bit/src/cmd/bit/show_wbtest.mbt @@ -45,7 +45,7 @@ async fn show_wbtest_collect_shim_git_stderr( "SHIM_REAL_GIT": wbtest_resolve_real_git(repo_root), "SHIM_REAL_GIT_FALLBACK": "", "SHIM_EXEC_PATH": repo_root + "/third_party/git", - "SHIM_MOON": repo_root + "/_build/native/release/build/cmd/bit/bit.exe", + "SHIM_MOON": repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe", "SHIM_CMDS": "show", "SHIM_STRICT": "1", } diff --git a/modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt b/modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt index 306ad45b..0acbeb58 100644 --- a/modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt +++ b/modules/bit/src/cmd/bit/sparse_checkout_wbtest.mbt @@ -60,7 +60,7 @@ async fn sparse_checkout_wbtest_shim_moon_path( let wrapper_path = "/tmp/bit-sparse-shim-moon.sh" // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/submodule_wbtest.mbt b/modules/bit/src/cmd/bit/submodule_wbtest.mbt index 0a5e9fe4..3f1c749c 100644 --- a/modules/bit/src/cmd/bit/submodule_wbtest.mbt +++ b/modules/bit/src/cmd/bit/submodule_wbtest.mbt @@ -73,7 +73,7 @@ async fn submodule_wbtest_collect_shim_git_stderr( let env : Map[String, String] = { "SHIM_REAL_GIT": wbtest_resolve_real_git(repo_root), "SHIM_EXEC_PATH": repo_root + "/third_party/git", - "SHIM_MOON": repo_root + "/_build/native/release/build/cmd/bit/bit.exe", + "SHIM_MOON": repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe", "SHIM_CMDS": "submodule submodule--helper", "SHIM_STRICT": "1", } diff --git a/modules/bit/src/cmd/bit/switch_wbtest.mbt b/modules/bit/src/cmd/bit/switch_wbtest.mbt index b6c11942..3a7e918e 100644 --- a/modules/bit/src/cmd/bit/switch_wbtest.mbt +++ b/modules/bit/src/cmd/bit/switch_wbtest.mbt @@ -17,7 +17,7 @@ async fn switch_wbtest_run_shim_git( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/update_index_wbtest.mbt b/modules/bit/src/cmd/bit/update_index_wbtest.mbt index 8921c5d3..26477e42 100644 --- a/modules/bit/src/cmd/bit/update_index_wbtest.mbt +++ b/modules/bit/src/cmd/bit/update_index_wbtest.mbt @@ -94,7 +94,7 @@ async fn update_index_wbtest_run_sparse_checkout_shim( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon", diff --git a/modules/bit/src/cmd/bit/worktree_wbtest.mbt b/modules/bit/src/cmd/bit/worktree_wbtest.mbt index 3e578520..d820cf51 100644 --- a/modules/bit/src/cmd/bit/worktree_wbtest.mbt +++ b/modules/bit/src/cmd/bit/worktree_wbtest.mbt @@ -21,7 +21,7 @@ async fn worktree_wbtest_collect_shim_git( let fs = OsFs::new() // Build the native binary first so exit codes propagate correctly // (moon run swallows non-zero exit codes) - let bit_exe = repo_root + "/_build/native/release/build/cmd/bit/bit.exe" + let bit_exe = repo_root + "/_build/native/release/build/mizchi/bit/cmd/bit/bit.exe" if !fs.is_file(bit_exe) { let build_code = @process.run( "moon",