@ibgib/vcs-gib 0.0.30 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  2. package/dist/AUTO-GENERATED-version.mjs +1 -1
  3. package/dist/bootstrap/node-bootstrap.mjs +1 -1
  4. package/dist/bootstrap/node-bootstrap.mjs.map +1 -1
  5. package/dist/cli/commands/add-cmd.d.mts +2 -3
  6. package/dist/cli/commands/add-cmd.d.mts.map +1 -1
  7. package/dist/cli/commands/add-cmd.mjs +30 -283
  8. package/dist/cli/commands/add-cmd.mjs.map +1 -1
  9. package/dist/cli/commands/branch-cmd.d.mts +8 -8
  10. package/dist/cli/commands/branch-cmd.d.mts.map +1 -1
  11. package/dist/cli/commands/branch-cmd.mjs +45 -176
  12. package/dist/cli/commands/branch-cmd.mjs.map +1 -1
  13. package/dist/cli/commands/checkout-cmd.d.mts +2 -4
  14. package/dist/cli/commands/checkout-cmd.d.mts.map +1 -1
  15. package/dist/cli/commands/checkout-cmd.mjs +31 -110
  16. package/dist/cli/commands/checkout-cmd.mjs.map +1 -1
  17. package/dist/cli/commands/commit-cmd.d.mts +7 -8
  18. package/dist/cli/commands/commit-cmd.d.mts.map +1 -1
  19. package/dist/cli/commands/commit-cmd.mjs +40 -390
  20. package/dist/cli/commands/commit-cmd.mjs.map +1 -1
  21. package/dist/cli/commands/generate-comment-cmd.d.mts.map +1 -1
  22. package/dist/cli/commands/generate-comment-cmd.mjs +5 -2
  23. package/dist/cli/commands/generate-comment-cmd.mjs.map +1 -1
  24. package/dist/cli/commands/init-cmd.d.mts +2 -2
  25. package/dist/cli/commands/init-cmd.d.mts.map +1 -1
  26. package/dist/cli/commands/init-cmd.mjs +20 -70
  27. package/dist/cli/commands/init-cmd.mjs.map +1 -1
  28. package/dist/cli/commands/log-cmd.d.mts +2 -3
  29. package/dist/cli/commands/log-cmd.d.mts.map +1 -1
  30. package/dist/cli/commands/log-cmd.mjs +42 -271
  31. package/dist/cli/commands/log-cmd.mjs.map +1 -1
  32. package/dist/cli/commands/merge-cmd.d.mts +3 -17
  33. package/dist/cli/commands/merge-cmd.d.mts.map +1 -1
  34. package/dist/cli/commands/merge-cmd.mjs +32 -218
  35. package/dist/cli/commands/merge-cmd.mjs.map +1 -1
  36. package/dist/cli/commands/reset-cmd.d.mts +1 -1
  37. package/dist/cli/commands/reset-cmd.d.mts.map +1 -1
  38. package/dist/cli/commands/reset-cmd.mjs +17 -19
  39. package/dist/cli/commands/reset-cmd.mjs.map +1 -1
  40. package/dist/cli/commands/restore-cmd.d.mts +8 -7
  41. package/dist/cli/commands/restore-cmd.d.mts.map +1 -1
  42. package/dist/cli/commands/restore-cmd.mjs +44 -62
  43. package/dist/cli/commands/restore-cmd.mjs.map +1 -1
  44. package/dist/cli/commands/status-cmd.d.mts +2 -2
  45. package/dist/cli/commands/status-cmd.d.mts.map +1 -1
  46. package/dist/cli/commands/status-cmd.mjs +63 -62
  47. package/dist/cli/commands/status-cmd.mjs.map +1 -1
  48. package/dist/cli/vcs-projection-helper.d.mts +23 -0
  49. package/dist/cli/vcs-projection-helper.d.mts.map +1 -0
  50. package/dist/cli/vcs-projection-helper.mjs +91 -0
  51. package/dist/cli/vcs-projection-helper.mjs.map +1 -0
  52. package/dist/test/test-helpers.d.mts +2 -2
  53. package/dist/test/test-helpers.d.mts.map +1 -1
  54. package/package.json +3 -3
  55. package/src/AUTO-GENERATED-version.mts +1 -1
  56. package/src/bootstrap/node-bootstrap.mts +1 -1
  57. package/src/cli/cli-e2e.respec.mts +4 -4
  58. package/src/cli/commands/add-cmd.mts +32 -347
  59. package/src/cli/commands/branch-cmd.mts +56 -225
  60. package/src/cli/commands/checkout-cmd.mts +34 -138
  61. package/src/cli/commands/commit-cmd.mts +46 -473
  62. package/src/cli/commands/commit-log-cmd.respec.mts +11 -7
  63. package/src/cli/commands/generate-comment-cmd.mts +6 -2
  64. package/src/cli/commands/init-cmd.mts +20 -73
  65. package/src/cli/commands/log-cmd.mts +41 -331
  66. package/src/cli/commands/merge-cmd.mts +32 -252
  67. package/src/cli/commands/reset-cmd.mts +17 -19
  68. package/src/cli/commands/restore-cmd.mts +52 -72
  69. package/src/cli/commands/status-add-cmd.respec.mts +3 -3
  70. package/src/cli/commands/status-cmd.mts +68 -63
  71. package/src/cli/vcs-projection-helper.mts +112 -0
  72. package/src/engine/branch/branch-space.respec.mts +5 -5
  73. package/src/engine/merge/b2tfs-sync-comments.respec.mts +4 -4
  74. package/src/test/test-helpers.mts +2 -2
  75. package/src/vcs-gib.respec.mts +11 -8
  76. package/tsconfig.test.tsbuildinfo +1 -1
  77. package/tsconfig.tsbuildinfo +1 -1
  78. package/dist/engine/branch/branch-graph-helper.d.mts +0 -28
  79. package/dist/engine/branch/branch-graph-helper.d.mts.map +0 -1
  80. package/dist/engine/branch/branch-graph-helper.mjs +0 -81
  81. package/dist/engine/branch/branch-graph-helper.mjs.map +0 -1
  82. package/dist/engine/branch/branch-helper.d.mts +0 -40
  83. package/dist/engine/branch/branch-helper.d.mts.map +0 -1
  84. package/dist/engine/branch/branch-helper.mjs +0 -78
  85. package/dist/engine/branch/branch-helper.mjs.map +0 -1
  86. package/dist/engine/branch/branch-space-helper.d.mts +0 -23
  87. package/dist/engine/branch/branch-space-helper.d.mts.map +0 -1
  88. package/dist/engine/branch/branch-space-helper.mjs +0 -78
  89. package/dist/engine/branch/branch-space-helper.mjs.map +0 -1
  90. package/dist/engine/branch/branch-types.d.mts +0 -26
  91. package/dist/engine/branch/branch-types.d.mts.map +0 -1
  92. package/dist/engine/branch/branch-types.mjs +0 -7
  93. package/dist/engine/branch/branch-types.mjs.map +0 -1
  94. package/dist/engine/diff/line-diff-helper.d.mts +0 -76
  95. package/dist/engine/diff/line-diff-helper.d.mts.map +0 -1
  96. package/dist/engine/diff/line-diff-helper.mjs +0 -144
  97. package/dist/engine/diff/line-diff-helper.mjs.map +0 -1
  98. package/dist/engine/filter/glob-helper.d.mts +0 -51
  99. package/dist/engine/filter/glob-helper.d.mts.map +0 -1
  100. package/dist/engine/filter/glob-helper.mjs +0 -132
  101. package/dist/engine/filter/glob-helper.mjs.map +0 -1
  102. package/dist/engine/index/index-helper.d.mts +0 -113
  103. package/dist/engine/index/index-helper.d.mts.map +0 -1
  104. package/dist/engine/index/index-helper.mjs +0 -533
  105. package/dist/engine/index/index-helper.mjs.map +0 -1
  106. package/dist/engine/index/index-types.d.mts +0 -63
  107. package/dist/engine/index/index-types.d.mts.map +0 -1
  108. package/dist/engine/index/index-types.mjs +0 -7
  109. package/dist/engine/index/index-types.mjs.map +0 -1
  110. package/dist/engine/item/item-atom-helper.d.mts +0 -20
  111. package/dist/engine/item/item-atom-helper.d.mts.map +0 -1
  112. package/dist/engine/item/item-atom-helper.mjs +0 -30
  113. package/dist/engine/item/item-atom-helper.mjs.map +0 -1
  114. package/dist/engine/item/item-helper.d.mts +0 -94
  115. package/dist/engine/item/item-helper.d.mts.map +0 -1
  116. package/dist/engine/item/item-helper.mjs +0 -424
  117. package/dist/engine/item/item-helper.mjs.map +0 -1
  118. package/dist/engine/item/item-types.d.mts +0 -128
  119. package/dist/engine/item/item-types.d.mts.map +0 -1
  120. package/dist/engine/item/item-types.mjs +0 -16
  121. package/dist/engine/item/item-types.mjs.map +0 -1
  122. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts +0 -74
  123. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts.map +0 -1
  124. package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs +0 -570
  125. package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs.map +0 -1
  126. package/dist/engine/merge/b2tfs-3way-graft-types.d.mts +0 -34
  127. package/dist/engine/merge/b2tfs-3way-graft-types.d.mts.map +0 -1
  128. package/dist/engine/merge/b2tfs-3way-graft-types.mjs +0 -2
  129. package/dist/engine/merge/b2tfs-3way-graft-types.mjs.map +0 -1
  130. package/dist/engine/status/status-helper.d.mts +0 -90
  131. package/dist/engine/status/status-helper.d.mts.map +0 -1
  132. package/dist/engine/status/status-helper.mjs +0 -286
  133. package/dist/engine/status/status-helper.mjs.map +0 -1
  134. package/src/engine/branch/branch-graph-helper.mts +0 -117
  135. package/src/engine/branch/branch-helper.mts +0 -112
  136. package/src/engine/branch/branch-space-helper.mts +0 -110
  137. package/src/engine/branch/branch-types.mts +0 -29
  138. package/src/engine/diff/line-diff-helper.mts +0 -210
  139. package/src/engine/diff/line-diff-helper.respec.mts +0 -84
  140. package/src/engine/filter/glob-helper.mts +0 -165
  141. package/src/engine/filter/glob-helper.respec.mts +0 -94
  142. package/src/engine/index/index-helper.mts +0 -705
  143. package/src/engine/index/index-types.mts +0 -66
  144. package/src/engine/item/item-atom-helper.mts +0 -30
  145. package/src/engine/item/item-helper.mts +0 -544
  146. package/src/engine/item/item-types.mts +0 -137
  147. package/src/engine/item/item.respec.mts +0 -92
  148. package/src/engine/merge/b2tfs-3way-graft-strategy.mts +0 -630
  149. package/src/engine/merge/b2tfs-3way-graft-strategy.respec.mts +0 -346
  150. package/src/engine/merge/b2tfs-3way-graft-types.mts +0 -34
  151. package/src/engine/status/status-helper.mts +0 -383
@@ -1,42 +1,22 @@
1
1
  /**
2
2
  * @module merge-cmd
3
3
  *
4
- * Command handler for `vcs merge <branchName>`.
5
- * Merges the incoming branch into the base (active/current) branch using
6
- * SyncSagaCoordinator sync and 3-way graft merge strategy.
7
- * Projects merged branch snapshot onto the base branch physical worktree path.
8
- *
9
- * ## Terminology (matches standard git usage)
10
- *
11
- * * **base** branch / space — the branch currently checked out, the one being
12
- * merged INTO (analogous to `ours` / `HEAD` in git)
13
- * * **incoming** branch / space — the branch whose changes are being merged IN
14
- * (analogous to `theirs` / the topic branch in git)
4
+ * CLI command handler for `vcs merge <branchName>`.
5
+ * Merges incoming branch into base branch and delegates to executeVcsMerge.
15
6
  */
16
7
  import path from 'node:path';
17
8
  import fs from 'node:fs/promises';
18
- import { clone, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
19
- import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
20
- import { putInSpace, getLatestAddrs, persistTransformResult, registerNewIbGib } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
21
- import { rel8 } from '@ibgib/ts-gib/dist/V1/transforms/rel8.mjs';
22
- import { SyncSagaCoordinator } from '@ibgib/core-gib/dist/sync/sync-saga-coordinator.mjs';
23
- import { SyncPeerInnerspace_V1 } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs';
24
- import { SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1 } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs';
25
- import { SyncConflictStrategy } from '@ibgib/core-gib/dist/sync/sync-constants.mjs';
26
- import { GraftPreference } from '@ibgib/core-gib/dist/sync/graft-info/graft-info-types.mjs';
9
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
+ import { executeVcsMerge } from '@ibgib/core-gib/dist/vcs/commands/merge-cmd.mjs';
27
11
  import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
28
- import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
29
- import { B2TFS_CHILD_ITEM_REL8N_NAME } from '../../engine/item/item-types.mjs';
30
- import { writeB2tFSItemToFS, getIbGibWithMetaspaceFallback, reifyB2tFSHierarchy } from '../../engine/item/item-helper.mjs';
31
- import { getB2tFSIndexIbGib, updateB2tFSIndexIbGib } from '../../engine/index/index-helper.mjs';
12
+ import { getOrCreateBranchSpace } from '@ibgib/node-gib/dist/vcs/branch-space-helper.mjs';
13
+ import { getOrCreateWorkspaceProjectionSpace } from '@ibgib/node-gib/dist/vcs/workspace-space-helper.mjs';
14
+ import { readVcsIndexProjectionFromDisk, writeVcsIndexProjectionToDisk } from '../vcs-projection-helper.mjs';
32
15
  import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
33
- import { logBranchState, logItemState, logCheckpoint, logAddr } from '../../test/test-helpers.mjs';
34
16
  const lcFile = `[merge-cmd]`;
35
17
  const logalot = GLOBAL_LOG_A_LOT;
36
- export async function executeMergeCmd({ incomingBranchName, targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, diagLog = false, } = {}) {
18
+ export async function executeMergeCmd({ incomingBranchName, targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, } = {}) {
37
19
  const lc = `${lcFile}[${executeMergeCmd.name}]`;
38
- const diag = (label) => { if (diagLog)
39
- logCheckpoint(`merge-cmd: ${label}`); };
40
20
  try {
41
21
  if (logalot) {
42
22
  console.log(`${lc} starting... (I: 4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f)`);
@@ -58,42 +38,12 @@ export async function executeMergeCmd({ incomingBranchName, targetDir = process.
58
38
  throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b)`);
59
39
  }
60
40
  // 1. Fetch authoritative repository index from localSpace
61
- const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
41
+ const indexIbGib = await readVcsIndexProjectionFromDisk({ vcsPath, space: localSpace });
62
42
  if (!indexIbGib) {
63
43
  throw new Error(`Repository index B2tFSIndexIbGib_V1 not found in localSpace (E: 7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c)`);
64
44
  }
65
45
  const baseBranchName = indexIbGib.data?.activeBranch || 'main';
66
- if (baseBranchName === trimmedIncomingBranch) {
67
- throw new Error(`Cannot merge branch '${trimmedIncomingBranch}' into itself (E: 8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d)`);
68
- }
69
- // 2. Fetch all registered branch ibgibs
70
- const branchAddrs = [
71
- ...(indexIbGib.rel8ns?.branch || []),
72
- ...(indexIbGib.rel8ns?.branch_tjp || []),
73
- ];
74
- let branchIbGibs = [];
75
- if (branchAddrs.length > 0) {
76
- for (const bAddr of branchAddrs) {
77
- const bIbGib = await getIbGibWithMetaspaceFallback({
78
- addr: bAddr,
79
- space: localSpace,
80
- metaspace,
81
- });
82
- if (bIbGib) {
83
- branchIbGibs.push(bIbGib);
84
- }
85
- }
86
- }
87
- // Resolve base branch node & incoming branch node
88
- const baseBranchIbGib = branchIbGibs.findLast((b) => b?.data?.name === baseBranchName);
89
- if (!baseBranchIbGib) {
90
- throw new Error(`Base branch '${baseBranchName}' not found in repository (E: 9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e)`);
91
- }
92
- const incomingBranchIbGib = branchIbGibs.findLast((b) => b?.data?.name === trimmedIncomingBranch);
93
- if (!incomingBranchIbGib) {
94
- throw new Error(`Branch '${trimmedIncomingBranch}' does not exist (E: 0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f)`);
95
- }
96
- // 3. Resolve base branch space & incoming branch space
46
+ // 2. Resolve base branch space & incoming branch space
97
47
  const baseSpaceRes = await getOrCreateBranchSpace({
98
48
  metaspace,
99
49
  vcsPath,
@@ -106,176 +56,40 @@ export async function executeMergeCmd({ incomingBranchName, targetDir = process.
106
56
  branchName: trimmedIncomingBranch,
107
57
  });
108
58
  const incomingSpace = incomingSpaceRes.space;
109
- await putInSpace({ space: baseSpace, ibGib: baseBranchIbGib });
110
- await putInSpace({ space: incomingSpace, ibGib: incomingBranchIbGib });
111
- // Resolve latest branch tip inside incomingSpace (in case commits occurred on incoming branch)
112
- const incomingBranchTjpAddr = incomingBranchIbGib.rel8ns?.tjp?.at(0) || getIbGibAddr({ ibGib: incomingBranchIbGib });
113
- const latestIncomingBranchRes = await getLatestAddrs({ space: incomingSpace, addrs: [incomingBranchTjpAddr] });
114
- const latestIncomingBranchAddr = latestIncomingBranchRes?.data?.latestAddrs?.[0] || getIbGibAddr({ ibGib: incomingBranchIbGib });
115
- const latestIncomingBranchIbGib = (await getIbGibWithMetaspaceFallback({
116
- addr: latestIncomingBranchAddr,
117
- space: incomingSpace,
118
- metaspace,
119
- })) || incomingBranchIbGib;
120
- const incomingRootAddr = latestIncomingBranchIbGib.rel8ns?.b2tfs_item?.at(-1);
121
- if (!incomingRootAddr) {
122
- throw new Error(`Incoming branch '${trimmedIncomingBranch}' has no valid root item address (E: 3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e)`);
123
- }
124
- const incomingRootItem = await getIbGibWithMetaspaceFallback({
125
- addr: incomingRootAddr,
126
- space: incomingSpace,
127
- metaspace,
128
- });
129
- if (!incomingRootItem) {
130
- throw new Error(`Incoming root item '${incomingRootAddr}' not found in incoming space (E: 4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f)`);
131
- }
132
- if (diagLog) {
133
- diag('resolving branches & spaces');
134
- await logBranchState({ label: 'baseBranch (main)', branchIbGib: baseBranchIbGib, space: baseSpace });
135
- await logBranchState({ label: 'incomingBranch (feature-merge)', branchIbGib: incomingBranchIbGib, space: incomingSpace });
136
- await logItemState({ label: 'incomingRootItem', itemIbGib: incomingRootItem, space: incomingSpace });
137
- }
138
- // 4. Setup SyncPeerInnerspace and SyncSagaCoordinator syncing incoming branch space into base branch space
139
- const peer = new SyncPeerInnerspace_V1(clone(SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1));
140
- await peer.initialized;
141
- await peer.initializeOpts({
142
- localMetaspace: metaspace,
143
- localSpace: incomingSpace,
144
- receiverSpace: baseSpace,
145
- receiverCoordinator: new SyncSagaCoordinator(),
146
- receiverMetaspace: metaspace,
147
- });
148
- const senderCoordinator = new SyncSagaCoordinator();
149
- const syncSaga = await senderCoordinator.sync({
150
- peer,
151
- localSpace: incomingSpace,
152
- metaspace,
153
- domainIbGibs: [incomingRootItem],
154
- conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
155
- graftPreference: GraftPreference.receiver,
156
- });
157
- await syncSaga.done;
158
- // 5. Reify the base branch filesystem hierarchy.
159
- // After sync, any child timelines (files or subfolders) that were merged/advanced
160
- // in baseSpace will have newer tips. reifyB2tFSHierarchy bubbles all updated child tips
161
- // up through the folder DAG, evolving parents in-place and returning the newly reified root item.
162
- const currentBaseRootItemAddr = baseBranchIbGib.rel8ns?.b2tfs_item?.at(-1);
163
- if (!currentBaseRootItemAddr) {
164
- throw new Error(`Base branch '${baseBranchName}' has no root item address (E: 6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d)`);
165
- }
166
- const reifyRes = await reifyB2tFSHierarchy({
167
- rootItemAddr: currentBaseRootItemAddr,
168
- space: baseSpace,
169
- metaspace,
170
- });
171
- const reifiedRootItem = reifyRes.reifiedRootItem;
172
- const reifiedRootAddr = getIbGibAddr({ ibGib: reifiedRootItem });
173
- if (diagLog) {
174
- diag('after reification');
175
- logAddr('currentBaseRootItemAddr', currentBaseRootItemAddr);
176
- logAddr('reifiedRootAddr', reifiedRootAddr);
177
- console.log(`[merge-cmd] reification hasChanges:`, reifyRes.hasChanges);
178
- console.log(`[merge-cmd] reifiedAddrsMap:`, JSON.stringify(reifyRes.reifiedAddrsMap));
179
- }
180
- // 5b. Evolve the base branch ibgib to point at the reified root item tip.
181
- // The sync engine does not update branch ibgibs — branches live in
182
- // their own space and are never domain ibgibs in the sync. We advance
183
- // the branch pointer to the reified root item.
184
- let mergedBranchAddr = getIbGibAddr({ ibGib: baseBranchIbGib });
185
- if (reifyRes.hasChanges && reifiedRootAddr !== currentBaseRootItemAddr) {
186
- if (diagLog) {
187
- console.log(`[merge-cmd] Evolving base branch: root item changing from ${currentBaseRootItemAddr} -> ${reifiedRootAddr}`);
188
- }
189
- const resRel8Branch = await rel8({
190
- src: baseBranchIbGib,
191
- rel8nsToReplaceByAddr: {
192
- b2tfs_item: [{ oldAddr: currentBaseRootItemAddr, newAddr: reifiedRootAddr }],
193
- },
194
- dna: true,
195
- nCounter: true,
196
- });
197
- const evolvedBranchIbGib = resRel8Branch.newIbGib;
198
- await persistTransformResult({ resTransform: resRel8Branch, space: baseSpace });
199
- await registerNewIbGib({ ibGib: evolvedBranchIbGib, space: baseSpace });
200
- mergedBranchAddr = getIbGibAddr({ ibGib: evolvedBranchIbGib });
201
- if (diagLog) {
202
- console.log(`[merge-cmd] Base branch evolved to addr: ${mergedBranchAddr}`);
203
- }
204
- }
205
- else {
206
- if (diagLog) {
207
- console.log(`[merge-cmd] Base branch root item unchanged (${currentBaseRootItemAddr})`);
208
- }
209
- }
210
- // Update indexIbGib to reference new merged branch node
211
- await updateB2tFSIndexIbGib({
212
- space: baseSpace,
213
- metaspace,
214
- indexIbGib,
215
- rel8nsToUpdate: {
216
- branch: [mergedBranchAddr],
217
- },
218
- vcsPath,
219
- });
220
- const mergedRootItemAddr = reifiedRootAddr;
221
- if (diagLog) {
222
- diag('projecting onto disk');
223
- logAddr('mergedRootItemAddr', mergedRootItemAddr);
224
- }
225
- // 6. Project merged branch snapshot files onto physical worktree disk
226
59
  const isDefaultBranch = baseBranchName === 'main';
227
60
  const worktreePath = isDefaultBranch
228
61
  ? repoRoot
229
62
  : path.join(repoRoot, 'b', baseBranchName);
230
63
  await fs.mkdir(worktreePath, { recursive: true });
231
- if (mergedRootItemAddr) {
232
- const mergedRootItem = await getIbGibWithMetaspaceFallback({
233
- addr: mergedRootItemAddr,
234
- space: baseSpace,
235
- metaspace,
236
- });
237
- if (diagLog) {
238
- await logItemState({ label: 'mergedRootItem to write', itemIbGib: mergedRootItem, space: baseSpace });
239
- }
240
- if (mergedRootItem) {
241
- if (mergedRootItem.data?.fsType === 'file') {
242
- await writeB2tFSItemToFS({
243
- item: mergedRootItem,
244
- destPath: worktreePath,
245
- space: baseSpace,
246
- metaspace,
247
- });
248
- }
249
- else {
250
- const childAddrs = mergedRootItem.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
251
- for (const childAddr of childAddrs) {
252
- const childItem = await getIbGibWithMetaspaceFallback({
253
- addr: childAddr,
254
- space: baseSpace,
255
- metaspace,
256
- });
257
- if (childItem) {
258
- await writeB2tFSItemToFS({
259
- item: childItem,
260
- destPath: worktreePath,
261
- space: baseSpace,
262
- metaspace,
263
- });
264
- }
265
- }
266
- }
267
- }
268
- }
64
+ const { space: workspaceSpace } = await getOrCreateWorkspaceProjectionSpace({
65
+ metaspace,
66
+ workspaceRoot: worktreePath,
67
+ vcsFolderName,
68
+ backingSpace: baseSpace,
69
+ });
70
+ const mergeRes = await executeVcsMerge({
71
+ metaspace,
72
+ localSpace,
73
+ baseBranchSpace: baseSpace,
74
+ incomingBranchSpace: incomingSpace,
75
+ workspaceSpace,
76
+ indexIbGib,
77
+ incomingBranchName: trimmedIncomingBranch,
78
+ repoRoot,
79
+ targetDir: absTargetDir,
80
+ vcsFolderName,
81
+ });
82
+ await writeVcsIndexProjectionToDisk({ vcsPath, indexIbGib: mergeRes.updatedIndex });
269
83
  if (!quiet) {
270
84
  console.log(`Successfully merged branch '${trimmedIncomingBranch}' into '${baseBranchName}' (I: 1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a)`);
271
85
  console.log(` Worktree projection: ${worktreePath}`);
272
86
  }
273
87
  return {
274
- baseBranch: baseBranchName,
275
- incomingBranch: trimmedIncomingBranch,
88
+ baseBranch: mergeRes.baseBranch,
89
+ incomingBranch: mergeRes.incomingBranch,
276
90
  baseSpaceId: baseSpaceRes.spaceId,
277
91
  incomingSpaceId: incomingSpaceRes.spaceId,
278
- mergedBranchAddr,
92
+ mergedBranchAddr: mergeRes.mergeCommitAddr,
279
93
  worktreePath,
280
94
  };
281
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/merge-cmd.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/merge-cmd.mts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module reset-cmd
3
3
  *
4
- * Command handler for `vcs reset [path...]`.
4
+ * CLI command handler for `vcs reset [path...]`.
5
5
  * Unstages specified files (or all files) from active branch index in localSpace.
6
6
  */
7
7
  export interface ResetCmdOpts {
@@ -1 +1 @@
1
- {"version":3,"file":"reset-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/reset-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,eAAe,CAAC,EAClC,KAAU,EACV,SAAyB,EACzB,aAAyB,EACzB,GAAW,EACX,GAAW,EACX,KAAa,EACb,KAAa,GAChB,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkF7C"}
1
+ {"version":3,"file":"reset-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/reset-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,eAAe,CAAC,EAClC,KAAU,EACV,SAAyB,EACzB,aAAyB,EACzB,GAAW,EACX,GAAW,EACX,KAAa,EACb,KAAa,GAChB,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+E7C"}
@@ -1,17 +1,18 @@
1
1
  /**
2
2
  * @module reset-cmd
3
3
  *
4
- * Command handler for `vcs reset [path...]`.
4
+ * CLI command handler for `vcs reset [path...]`.
5
5
  * Unstages specified files (or all files) from active branch index in localSpace.
6
6
  */
7
7
  import path from 'node:path';
8
8
  import fs from 'node:fs/promises';
9
9
  import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
10
  import { promptForConfirm } from '@ibgib/helper-gib/dist/helpers/node-helper.mjs';
11
- import { putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
11
+ import { executeVcsReset } from '@ibgib/core-gib/dist/vcs/commands/reset-cmd.mjs';
12
+ import { resolveContextualBranchName } from '@ibgib/core-gib/dist/vcs/branch/branch-helper.mjs';
12
13
  import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
13
- import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
14
- import { getB2tFSIndexIbGib, unstagePathsFromIndex } from '../../engine/index/index-helper.mjs';
14
+ import { getOrCreateBranchSpace } from '@ibgib/node-gib/dist/vcs/branch-space-helper.mjs';
15
+ import { readVcsIndexProjectionFromDisk, writeVcsIndexProjectionToDisk } from '../vcs-projection-helper.mjs';
15
16
  import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
16
17
  const lcFile = `[reset-cmd]`;
17
18
  const logalot = GLOBAL_LOG_A_LOT;
@@ -34,11 +35,11 @@ export async function executeResetCmd({ paths = [], targetDir = process.cwd(), v
34
35
  throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b)`);
35
36
  }
36
37
  // Retrieve authoritative B2tFSIndexIbGib_V1 from space
37
- const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
38
+ const indexIbGib = await readVcsIndexProjectionFromDisk({ vcsPath, space: localSpace });
38
39
  if (!indexIbGib) {
39
40
  throw new Error(`Repository not initialized. Run 'vcs init' first. (E: 3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b)`);
40
41
  }
41
- const activeBranch = indexIbGib.data?.activeBranch || 'main';
42
+ const activeBranch = resolveContextualBranchName({ targetDir: absTargetDir, repoRoot, indexIbGib });
42
43
  const activeWorktreeDir = activeBranch === 'main' ? repoRoot : path.join(repoRoot, 'b', activeBranch);
43
44
  const { space: activeSpace } = await getOrCreateBranchSpace({
44
45
  metaspace,
@@ -56,28 +57,25 @@ export async function executeResetCmd({ paths = [], targetDir = process.cwd(), v
56
57
  return { unstagedPaths: [], stagedCount };
57
58
  }
58
59
  }
59
- const unstageRes = await unstagePathsFromIndex({
60
+ const resetRes = await executeVcsReset({
61
+ metaspace,
62
+ localSpace,
63
+ activeBranchSpace: activeSpace,
60
64
  indexIbGib,
61
65
  paths,
62
- targetDir,
63
- activeWorktreeDir,
64
- vcsPath,
65
- space: activeSpace,
66
- metaspace,
67
66
  all,
67
+ targetDir: absTargetDir,
68
+ activeWorktreeDir,
68
69
  });
69
- if (localSpace !== activeSpace) {
70
- await putInSpace({ space: localSpace, ibGib: unstageRes.updatedIndex });
71
- }
70
+ await writeVcsIndexProjectionToDisk({ vcsPath, indexIbGib: resetRes.updatedIndex });
72
71
  if (!quiet) {
73
- for (const unstagedPath of unstageRes.unstagedPaths) {
72
+ for (const unstagedPath of resetRes.unstagedPaths) {
74
73
  console.log(`unstaged: ${unstagedPath}`);
75
74
  }
76
75
  }
77
- const finalStagedCount = Object.keys(unstageRes.updatedIndex.data?.stagedPaths || {}).length;
78
76
  return {
79
- unstagedPaths: unstageRes.unstagedPaths,
80
- stagedCount: finalStagedCount,
77
+ unstagedPaths: resetRes.unstagedPaths,
78
+ stagedCount: resetRes.stagedCount,
81
79
  };
82
80
  }
83
81
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"reset-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/reset-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAiBjC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAClC,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EACzB,aAAa,GAAG,SAAS,EACzB,GAAG,GAAG,KAAK,EACX,GAAG,GAAG,KAAK,EACX,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,GAChB,GAAiB,EAAE;IAChB,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC;IAChD,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,qBAAqB,CAAC;YAC7E,QAAQ,EAAE,YAAY;YACtB,aAAa;SAChB,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,wDAAwD,CAAC,CAAC;QAC3H,CAAC;QAED,uDAAuD;QACvD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;QAC/G,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,IAAI,MAAM,CAAC;QAC7D,MAAM,iBAAiB,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QAEtG,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,sBAAsB,CAAC;YACxD,SAAS;YACT,OAAO;YACP,UAAU,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,EAAE,GAAG,EAAE,qCAAqC,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC3E,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;YAC9C,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC;YAC3C,UAAU;YACV,KAAK;YACL,SAAS;YACT,iBAAiB;YACjB,OAAO;YACP,KAAK,EAAE,WAAW;YAClB,SAAS;YACT,GAAG;SACN,CAAC,CAAC;QAEH,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,KAAK,MAAM,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7F,OAAO;YACH,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,WAAW,EAAE,gBAAgB;SAChC,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"reset-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/reset-cmd.mts"],"names":[],"mappings":"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"}
@@ -1,22 +1,23 @@
1
1
  /**
2
2
  * @module restore-cmd
3
3
  *
4
- * Command handler for `vcs restore [path...]`.
5
- * Restores working tree files from committed branch snapshot, or unstages files if `--staged` is set.
4
+ * CLI command handler for `vcs restore [path...]`.
5
+ * Delegates to executeVcsRestore and formats terminal output.
6
6
  */
7
7
  export interface RestoreCmdOpts {
8
8
  paths?: string[];
9
- targetDir?: string;
10
- vcsFolderName?: string;
11
9
  staged?: boolean;
12
10
  worktree?: boolean;
11
+ all?: boolean;
13
12
  yes?: boolean;
14
13
  force?: boolean;
14
+ targetDir?: string;
15
+ vcsFolderName?: string;
15
16
  quiet?: boolean;
16
17
  }
17
18
  export interface RestoreCmdResult {
18
- unstagedPaths?: string[];
19
- restoredPaths?: string[];
19
+ restoredPaths: string[];
20
+ unstagedPaths: string[];
20
21
  }
21
- export declare function executeRestoreCmd({ paths, targetDir, vcsFolderName, staged, worktree, yes, force, quiet, }?: RestoreCmdOpts): Promise<RestoreCmdResult>;
22
+ export declare function executeRestoreCmd({ paths, staged, worktree, all, yes, force, targetDir, vcsFolderName, quiet, }?: RestoreCmdOpts): Promise<RestoreCmdResult>;
22
23
  //# sourceMappingURL=restore-cmd.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"restore-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/restore-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAsB,iBAAiB,CAAC,EACpC,KAAU,EACV,SAAyB,EACzB,aAAyB,EACzB,MAAc,EACd,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,KAAa,GAChB,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2GjD"}
1
+ {"version":3,"file":"restore-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/restore-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CAAC,EACpC,KAAU,EACV,MAAc,EACd,QAAgB,EAChB,GAAW,EACX,GAAW,EACX,KAAa,EACb,SAAyB,EACzB,aAAyB,EACzB,KAAa,GAChB,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFjD"}
@@ -1,25 +1,26 @@
1
1
  /**
2
2
  * @module restore-cmd
3
3
  *
4
- * Command handler for `vcs restore [path...]`.
5
- * Restores working tree files from committed branch snapshot, or unstages files if `--staged` is set.
4
+ * CLI command handler for `vcs restore [path...]`.
5
+ * Delegates to executeVcsRestore and formats terminal output.
6
6
  */
7
7
  import path from 'node:path';
8
8
  import fs from 'node:fs/promises';
9
9
  import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
- import { promptForConfirm } from '@ibgib/helper-gib/dist/helpers/node-helper.mjs';
11
- import { putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
10
+ import { executeVcsRestore } from '@ibgib/core-gib/dist/vcs/commands/restore-cmd.mjs';
11
+ import { resolveContextualBranchName } from '@ibgib/core-gib/dist/vcs/branch/branch-helper.mjs';
12
12
  import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
13
- import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
14
- import { getB2tFSIndexIbGib, unstagePathsFromIndex, restoreWorktreePathsFromSnapshot } from '../../engine/index/index-helper.mjs';
13
+ import { getOrCreateBranchSpace } from '@ibgib/node-gib/dist/vcs/branch-space-helper.mjs';
14
+ import { getOrCreateWorkspaceProjectionSpace } from '@ibgib/node-gib/dist/vcs/workspace-space-helper.mjs';
15
+ import { readVcsIndexProjectionFromDisk, writeVcsIndexProjectionToDisk } from '../vcs-projection-helper.mjs';
15
16
  import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
16
17
  const lcFile = `[restore-cmd]`;
17
18
  const logalot = GLOBAL_LOG_A_LOT;
18
- export async function executeRestoreCmd({ paths = [], targetDir = process.cwd(), vcsFolderName = '.vcsgib', staged = false, worktree = false, yes = false, force = false, quiet = false, } = {}) {
19
+ export async function executeRestoreCmd({ paths = [], staged = false, worktree = false, all = false, yes = false, force = false, targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, } = {}) {
19
20
  const lc = `${lcFile}[${executeRestoreCmd.name}]`;
20
21
  try {
21
22
  if (logalot) {
22
- console.log(`${lc} starting... (I: 6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1e)`);
23
+ console.log(`${lc} starting... (I: 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d)`);
23
24
  }
24
25
  const absTargetDir = path.resolve(targetDir);
25
26
  const { metaspace, localSpace, vcsPath, repoRoot } = await bootstrapVcsMetaspace({
@@ -31,75 +32,56 @@ export async function executeRestoreCmd({ paths = [], targetDir = process.cwd(),
31
32
  await fs.access(vcsPath);
32
33
  }
33
34
  catch {
34
- throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2e)`);
35
+ throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d)`);
35
36
  }
36
37
  // Retrieve authoritative B2tFSIndexIbGib_V1 from space
37
- const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
38
+ const indexIbGib = await readVcsIndexProjectionFromDisk({ vcsPath, space: localSpace });
38
39
  if (!indexIbGib) {
39
- throw new Error(`Repository not initialized. Run 'vcs init' first. (E: 8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3e)`);
40
+ throw new Error(`Repository not initialized. Run 'vcs init' first. (E: 3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d)`);
40
41
  }
41
- const activeBranch = indexIbGib.data?.activeBranch || 'main';
42
+ const activeBranch = resolveContextualBranchName({ targetDir: absTargetDir, repoRoot, indexIbGib });
42
43
  const activeWorktreeDir = activeBranch === 'main' ? repoRoot : path.join(repoRoot, 'b', activeBranch);
43
- const { space: activeSpace } = await getOrCreateBranchSpace({
44
+ const { space: activeBranchSpace } = await getOrCreateBranchSpace({
44
45
  metaspace,
45
46
  vcsPath,
46
47
  branchName: activeBranch,
47
48
  });
48
- const skipPrompt = yes || force || quiet || !process.stdin.isTTY;
49
- if (!skipPrompt) {
50
- const msg = staged
51
- ? 'Unstage specified files from index?'
52
- : 'Revert working tree files to committed snapshot?';
53
- const confirmed = await promptForConfirm({ msg });
54
- if (!confirmed) {
55
- if (!quiet) {
56
- console.log('Operation cancelled.');
57
- }
58
- return { unstagedPaths: [], restoredPaths: [] };
59
- }
49
+ const { space: workspaceSpace } = await getOrCreateWorkspaceProjectionSpace({
50
+ metaspace,
51
+ workspaceRoot: activeWorktreeDir,
52
+ vcsFolderName,
53
+ backingSpace: activeBranchSpace,
54
+ });
55
+ const restoreRes = await executeVcsRestore({
56
+ metaspace,
57
+ localSpace,
58
+ activeBranchSpace,
59
+ workspaceSpace,
60
+ indexIbGib,
61
+ paths,
62
+ staged,
63
+ all,
64
+ targetDir: absTargetDir,
65
+ activeWorktreeDir,
66
+ });
67
+ if (staged && restoreRes.updatedIndex) {
68
+ await writeVcsIndexProjectionToDisk({ vcsPath, indexIbGib: restoreRes.updatedIndex });
60
69
  }
61
- let unstagedPaths;
62
- let restoredPaths;
63
- if (staged) {
64
- const unstageRes = await unstagePathsFromIndex({
65
- indexIbGib,
66
- paths,
67
- targetDir,
68
- activeWorktreeDir,
69
- vcsPath,
70
- space: activeSpace,
71
- metaspace,
72
- });
73
- if (localSpace !== activeSpace) {
74
- await putInSpace({ space: localSpace, ibGib: unstageRes.updatedIndex });
75
- }
76
- unstagedPaths = unstageRes.unstagedPaths;
77
- if (!quiet) {
78
- for (const p of unstagedPaths) {
79
- console.log(`unstaged: ${p}`);
70
+ if (!quiet) {
71
+ if (staged) {
72
+ for (const unstagedPath of restoreRes.unstagedPaths) {
73
+ console.log(`unstaged: ${unstagedPath}`);
80
74
  }
81
75
  }
82
- }
83
- if (!staged || worktree) {
84
- const restoreRes = await restoreWorktreePathsFromSnapshot({
85
- paths,
86
- targetDir,
87
- activeWorktreeDir,
88
- activeBranchSpace: activeSpace,
89
- metaspace,
90
- indexIbGib,
91
- vcsPath,
92
- });
93
- restoredPaths = restoreRes.restoredPaths;
94
- if (!quiet) {
95
- for (const p of restoredPaths) {
96
- console.log(`restored: ${p}`);
76
+ else {
77
+ for (const restoredPath of restoreRes.restoredPaths) {
78
+ console.log(`restored: ${restoredPath}`);
97
79
  }
98
80
  }
99
81
  }
100
82
  return {
101
- unstagedPaths,
102
- restoredPaths,
83
+ restoredPaths: restoreRes.restoredPaths,
84
+ unstagedPaths: restoreRes.unstagedPaths,
103
85
  };
104
86
  }
105
87
  catch (error) {
@@ -108,7 +90,7 @@ export async function executeRestoreCmd({ paths = [], targetDir = process.cwd(),
108
90
  }
109
91
  finally {
110
92
  if (logalot) {
111
- console.log(`${lc} complete. (I: 0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5e)`);
93
+ console.log(`${lc} complete. (I: 0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5f)`);
112
94
  }
113
95
  }
114
96
  }