@ibgib/vcs-gib 0.0.6
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.
- package/README.md +94 -0
- package/VCS_CLI_USER_GUIDE.md +198 -0
- package/dist/AUTO-GENERATED-version.d.mts +6 -0
- package/dist/AUTO-GENERATED-version.d.mts.map +1 -0
- package/dist/AUTO-GENERATED-version.mjs +6 -0
- package/dist/AUTO-GENERATED-version.mjs.map +1 -0
- package/dist/assumptions.respec.d.mts +2 -0
- package/dist/assumptions.respec.d.mts.map +1 -0
- package/dist/assumptions.respec.mjs +41 -0
- package/dist/assumptions.respec.mjs.map +1 -0
- package/dist/bootstrap/node-bootstrap.d.mts +35 -0
- package/dist/bootstrap/node-bootstrap.d.mts.map +1 -0
- package/dist/bootstrap/node-bootstrap.mjs +165 -0
- package/dist/bootstrap/node-bootstrap.mjs.map +1 -0
- package/dist/bootstrap/node-bootstrap.respec.node.d.mts +7 -0
- package/dist/bootstrap/node-bootstrap.respec.node.d.mts.map +1 -0
- package/dist/bootstrap/node-bootstrap.respec.node.mjs +28 -0
- package/dist/bootstrap/node-bootstrap.respec.node.mjs.map +1 -0
- package/dist/cli/cli-arg-parser.d.mts +27 -0
- package/dist/cli/cli-arg-parser.d.mts.map +1 -0
- package/dist/cli/cli-arg-parser.mjs +96 -0
- package/dist/cli/cli-arg-parser.mjs.map +1 -0
- package/dist/cli/cli-arg-parser.respec.node.d.mts +7 -0
- package/dist/cli/cli-arg-parser.respec.node.d.mts.map +1 -0
- package/dist/cli/cli-arg-parser.respec.node.mjs +35 -0
- package/dist/cli/cli-arg-parser.respec.node.mjs.map +1 -0
- package/dist/cli/cli-constants.d.mts +26 -0
- package/dist/cli/cli-constants.d.mts.map +1 -0
- package/dist/cli/cli-constants.mjs +67 -0
- package/dist/cli/cli-constants.mjs.map +1 -0
- package/dist/cli/cli-e2e.respec.node.d.mts +8 -0
- package/dist/cli/cli-e2e.respec.node.d.mts.map +1 -0
- package/dist/cli/cli-e2e.respec.node.mjs +263 -0
- package/dist/cli/cli-e2e.respec.node.mjs.map +1 -0
- package/dist/cli/commands/add-cmd.d.mts +20 -0
- package/dist/cli/commands/add-cmd.d.mts.map +1 -0
- package/dist/cli/commands/add-cmd.mjs +333 -0
- package/dist/cli/commands/add-cmd.mjs.map +1 -0
- package/dist/cli/commands/branch-checkout-cmd.respec.node.d.mts +7 -0
- package/dist/cli/commands/branch-checkout-cmd.respec.node.d.mts.map +1 -0
- package/dist/cli/commands/branch-checkout-cmd.respec.node.mjs +288 -0
- package/dist/cli/commands/branch-checkout-cmd.respec.node.mjs.map +1 -0
- package/dist/cli/commands/branch-cmd.d.mts +25 -0
- package/dist/cli/commands/branch-cmd.d.mts.map +1 -0
- package/dist/cli/commands/branch-cmd.mjs +187 -0
- package/dist/cli/commands/branch-cmd.mjs.map +1 -0
- package/dist/cli/commands/checkout-cmd.d.mts +21 -0
- package/dist/cli/commands/checkout-cmd.d.mts.map +1 -0
- package/dist/cli/commands/checkout-cmd.mjs +154 -0
- package/dist/cli/commands/checkout-cmd.mjs.map +1 -0
- package/dist/cli/commands/commit-cmd.d.mts +23 -0
- package/dist/cli/commands/commit-cmd.d.mts.map +1 -0
- package/dist/cli/commands/commit-cmd.mjs +326 -0
- package/dist/cli/commands/commit-cmd.mjs.map +1 -0
- package/dist/cli/commands/commit-log-cmd.respec.node.d.mts +7 -0
- package/dist/cli/commands/commit-log-cmd.respec.node.d.mts.map +1 -0
- package/dist/cli/commands/commit-log-cmd.respec.node.mjs +251 -0
- package/dist/cli/commands/commit-log-cmd.respec.node.mjs.map +1 -0
- package/dist/cli/commands/init-cmd.d.mts +20 -0
- package/dist/cli/commands/init-cmd.d.mts.map +1 -0
- package/dist/cli/commands/init-cmd.mjs +119 -0
- package/dist/cli/commands/init-cmd.mjs.map +1 -0
- package/dist/cli/commands/init-cmd.respec.node.d.mts +7 -0
- package/dist/cli/commands/init-cmd.respec.node.d.mts.map +1 -0
- package/dist/cli/commands/init-cmd.respec.node.mjs +40 -0
- package/dist/cli/commands/init-cmd.respec.node.mjs.map +1 -0
- package/dist/cli/commands/log-cmd.d.mts +27 -0
- package/dist/cli/commands/log-cmd.d.mts.map +1 -0
- package/dist/cli/commands/log-cmd.mjs +146 -0
- package/dist/cli/commands/log-cmd.mjs.map +1 -0
- package/dist/cli/commands/status-add-cmd.respec.node.d.mts +7 -0
- package/dist/cli/commands/status-add-cmd.respec.node.d.mts.map +1 -0
- package/dist/cli/commands/status-add-cmd.respec.node.mjs +215 -0
- package/dist/cli/commands/status-add-cmd.respec.node.mjs.map +1 -0
- package/dist/cli/commands/status-cmd.d.mts +25 -0
- package/dist/cli/commands/status-cmd.d.mts.map +1 -0
- package/dist/cli/commands/status-cmd.mjs +286 -0
- package/dist/cli/commands/status-cmd.mjs.map +1 -0
- package/dist/cli/vcs-cli-main.d.mts +14 -0
- package/dist/cli/vcs-cli-main.d.mts.map +1 -0
- package/dist/cli/vcs-cli-main.mjs +136 -0
- package/dist/cli/vcs-cli-main.mjs.map +1 -0
- package/dist/engine/branch/branch-graph-helper.d.mts +19 -0
- package/dist/engine/branch/branch-graph-helper.d.mts.map +1 -0
- package/dist/engine/branch/branch-graph-helper.mjs +49 -0
- package/dist/engine/branch/branch-graph-helper.mjs.map +1 -0
- package/dist/engine/branch/branch-helper.d.mts +26 -0
- package/dist/engine/branch/branch-helper.d.mts.map +1 -0
- package/dist/engine/branch/branch-helper.mjs +57 -0
- package/dist/engine/branch/branch-helper.mjs.map +1 -0
- package/dist/engine/branch/branch-space-helper.d.mts +22 -0
- package/dist/engine/branch/branch-space-helper.d.mts.map +1 -0
- package/dist/engine/branch/branch-space-helper.mjs +77 -0
- package/dist/engine/branch/branch-space-helper.mjs.map +1 -0
- package/dist/engine/branch/branch-space.respec.node.d.mts +8 -0
- package/dist/engine/branch/branch-space.respec.node.d.mts.map +1 -0
- package/dist/engine/branch/branch-space.respec.node.mjs +138 -0
- package/dist/engine/branch/branch-space.respec.node.mjs.map +1 -0
- package/dist/engine/branch/branch-types.d.mts +26 -0
- package/dist/engine/branch/branch-types.d.mts.map +1 -0
- package/dist/engine/branch/branch-types.mjs +7 -0
- package/dist/engine/branch/branch-types.mjs.map +1 -0
- package/dist/engine/diff/line-diff-helper.d.mts +76 -0
- package/dist/engine/diff/line-diff-helper.d.mts.map +1 -0
- package/dist/engine/diff/line-diff-helper.mjs +144 -0
- package/dist/engine/diff/line-diff-helper.mjs.map +1 -0
- package/dist/engine/diff/line-diff-helper.respec.node.d.mts +7 -0
- package/dist/engine/diff/line-diff-helper.respec.node.d.mts.map +1 -0
- package/dist/engine/diff/line-diff-helper.respec.node.mjs +66 -0
- package/dist/engine/diff/line-diff-helper.respec.node.mjs.map +1 -0
- package/dist/engine/filter/glob-helper.d.mts +51 -0
- package/dist/engine/filter/glob-helper.d.mts.map +1 -0
- package/dist/engine/filter/glob-helper.mjs +132 -0
- package/dist/engine/filter/glob-helper.mjs.map +1 -0
- package/dist/engine/filter/glob-helper.respec.node.d.mts +7 -0
- package/dist/engine/filter/glob-helper.respec.node.d.mts.map +1 -0
- package/dist/engine/filter/glob-helper.respec.node.mjs +78 -0
- package/dist/engine/filter/glob-helper.respec.node.mjs.map +1 -0
- package/dist/engine/index/index-helper.d.mts +78 -0
- package/dist/engine/index/index-helper.d.mts.map +1 -0
- package/dist/engine/index/index-helper.mjs +289 -0
- package/dist/engine/index/index-helper.mjs.map +1 -0
- package/dist/engine/index/index-types.d.mts +63 -0
- package/dist/engine/index/index-types.d.mts.map +1 -0
- package/dist/engine/index/index-types.mjs +7 -0
- package/dist/engine/index/index-types.mjs.map +1 -0
- package/dist/engine/item/item-atom-helper.d.mts +20 -0
- package/dist/engine/item/item-atom-helper.d.mts.map +1 -0
- package/dist/engine/item/item-atom-helper.mjs +30 -0
- package/dist/engine/item/item-atom-helper.mjs.map +1 -0
- package/dist/engine/item/item-helper.d.mts +37 -0
- package/dist/engine/item/item-helper.d.mts.map +1 -0
- package/dist/engine/item/item-helper.mjs +194 -0
- package/dist/engine/item/item-helper.mjs.map +1 -0
- package/dist/engine/item/item-types.d.mts +127 -0
- package/dist/engine/item/item-types.d.mts.map +1 -0
- package/dist/engine/item/item-types.mjs +16 -0
- package/dist/engine/item/item-types.mjs.map +1 -0
- package/dist/index.d.mts +7 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +7 -0
- package/dist/index.mjs.map +1 -0
- package/dist/respec-gib.node.d.mts +7 -0
- package/dist/respec-gib.node.d.mts.map +1 -0
- package/dist/respec-gib.node.mjs +11 -0
- package/dist/respec-gib.node.mjs.map +1 -0
- package/dist/vcs-gib-constants.d.mts +7 -0
- package/dist/vcs-gib-constants.d.mts.map +1 -0
- package/dist/vcs-gib-constants.mjs +7 -0
- package/dist/vcs-gib-constants.mjs.map +1 -0
- package/dist/vcs-gib.respec.node.d.mts +8 -0
- package/dist/vcs-gib.respec.node.d.mts.map +1 -0
- package/dist/vcs-gib.respec.node.mjs +82 -0
- package/dist/vcs-gib.respec.node.mjs.map +1 -0
- package/generate-version-file.js +20 -0
- package/package.json +28 -0
- package/src/AUTO-GENERATED-version.mts +5 -0
- package/src/assumptions.respec.mts +50 -0
- package/src/bootstrap/node-bootstrap.mts +198 -0
- package/src/bootstrap/node-bootstrap.respec.node.mts +35 -0
- package/src/cli/cli-arg-parser.mts +119 -0
- package/src/cli/cli-arg-parser.respec.node.mts +45 -0
- package/src/cli/cli-constants.mts +77 -0
- package/src/cli/cli-e2e.respec.node.mts +318 -0
- package/src/cli/commands/add-cmd.mts +415 -0
- package/src/cli/commands/branch-checkout-cmd.respec.node.mts +322 -0
- package/src/cli/commands/branch-cmd.mts +243 -0
- package/src/cli/commands/checkout-cmd.mts +202 -0
- package/src/cli/commands/commit-cmd.mts +421 -0
- package/src/cli/commands/commit-log-cmd.respec.node.mts +276 -0
- package/src/cli/commands/init-cmd.mts +152 -0
- package/src/cli/commands/init-cmd.respec.node.mts +49 -0
- package/src/cli/commands/log-cmd.mts +197 -0
- package/src/cli/commands/status-add-cmd.respec.node.mts +246 -0
- package/src/cli/commands/status-cmd.mts +366 -0
- package/src/cli/vcs-cli-main.mts +153 -0
- package/src/engine/branch/branch-graph-helper.mts +69 -0
- package/src/engine/branch/branch-helper.mts +79 -0
- package/src/engine/branch/branch-space-helper.mts +104 -0
- package/src/engine/branch/branch-space.respec.node.mts +158 -0
- package/src/engine/branch/branch-types.mts +29 -0
- package/src/engine/diff/line-diff-helper.mts +210 -0
- package/src/engine/diff/line-diff-helper.respec.node.mts +84 -0
- package/src/engine/filter/glob-helper.mts +165 -0
- package/src/engine/filter/glob-helper.respec.node.mts +94 -0
- package/src/engine/index/index-helper.mts +378 -0
- package/src/engine/index/index-types.mts +66 -0
- package/src/engine/item/item-atom-helper.mts +30 -0
- package/src/engine/item/item-helper.mts +239 -0
- package/src/engine/item/item-types.mts +136 -0
- package/src/index.mts +7 -0
- package/src/respec-gib.node.mts +12 -0
- package/src/vcs-gib-constants.mts +7 -0
- package/src/vcs-gib.respec.node.mts +96 -0
- package/test_runs/001-hello-node/20260728_090100_0001-flow-core-main.md +39 -0
- package/test_runs/001-hello-node/20260728_090200_0003-flow-branching-worktree.md +54 -0
- package/test_runs/001-hello-node/20260728_090300_0002-flow-selective-add.md +45 -0
- package/test_runs/001-hello-node/20260728_142100_0007-flow-edge-cases.md +44 -0
- package/test_runs/001-hello-node/20260728_142400_0005-flow-hardcoded-ignores.md +36 -0
- package/tools/pack-for-test.mjs +73 -0
- package/tsconfig.json +18 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module status-cmd
|
|
3
|
+
*
|
|
4
|
+
* Command handler for `vcs status`.
|
|
5
|
+
* Compares physical workspace state against active branch snapshot tip and in-band index staging area.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import fs from 'node:fs/promises';
|
|
9
|
+
import crypto from 'node:crypto';
|
|
10
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
11
|
+
import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
|
|
12
|
+
import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
|
|
13
|
+
import { B2TFS_CHILD_ITEM_REL8N_NAME } from '../../engine/item/item-types.mjs';
|
|
14
|
+
import { getIbGibWithMetaspaceFallback } from '../../engine/item/item-helper.mjs';
|
|
15
|
+
import { isPathFiltered, parseFilterFileContent } from '../../engine/filter/glob-helper.mjs';
|
|
16
|
+
import { getB2tFSIndexIbGib } from '../../engine/index/index-helper.mjs';
|
|
17
|
+
import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
|
|
18
|
+
const lcFile = `[status-cmd]`;
|
|
19
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
20
|
+
export async function executeStatusCmd({ targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, } = {}) {
|
|
21
|
+
const lc = `${lcFile}[${executeStatusCmd.name}]`;
|
|
22
|
+
try {
|
|
23
|
+
if (logalot) {
|
|
24
|
+
console.log(`${lc} starting executeStatusCmd (I: 7a8b9c10d11e12f13a14b15c16d17e18)`);
|
|
25
|
+
}
|
|
26
|
+
const absTargetDir = path.resolve(targetDir);
|
|
27
|
+
const { metaspace, localSpace, vcsPath, repoRoot } = await bootstrapVcsMetaspace({
|
|
28
|
+
repoPath: absTargetDir,
|
|
29
|
+
vcsFolderName,
|
|
30
|
+
});
|
|
31
|
+
// Verify repo exists
|
|
32
|
+
try {
|
|
33
|
+
await fs.access(vcsPath);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 4d5e6f7a8b9c10d11e12f13a14b15c6d)`);
|
|
37
|
+
}
|
|
38
|
+
// 1. Fetch authoritative B2tFSIndexIbGib_V1 directly from localSpace
|
|
39
|
+
const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
|
|
40
|
+
const branchName = indexIbGib?.data?.activeBranch || 'main';
|
|
41
|
+
const activeWorktreeDir = branchName === 'main' ? repoRoot : path.join(repoRoot, 'b', branchName);
|
|
42
|
+
// Target active branch space b2s_<activeBranch>
|
|
43
|
+
const { space: activeBranchSpace } = await getOrCreateBranchSpace({
|
|
44
|
+
metaspace,
|
|
45
|
+
vcsPath,
|
|
46
|
+
branchName,
|
|
47
|
+
});
|
|
48
|
+
// 2. Extract staged items directly from in-band B2tFSIndexIbGib_V1 data
|
|
49
|
+
const stagedMap = new Map();
|
|
50
|
+
const indexStagedPaths = indexIbGib?.data?.stagedPaths || {};
|
|
51
|
+
for (const [relPath, itemRec] of Object.entries(indexStagedPaths)) {
|
|
52
|
+
stagedMap.set(relPath, itemRec);
|
|
53
|
+
}
|
|
54
|
+
// 3. Find active branch root item address from in-band branch graph node
|
|
55
|
+
let rootItemAddr;
|
|
56
|
+
const branchAddrs = [
|
|
57
|
+
...(indexIbGib?.rel8ns?.branch || []),
|
|
58
|
+
...(indexIbGib?.rel8ns?.branch_tjp || []),
|
|
59
|
+
];
|
|
60
|
+
if (branchAddrs.length > 0) {
|
|
61
|
+
let branchIbGibs = [];
|
|
62
|
+
for (const bAddr of branchAddrs) {
|
|
63
|
+
const bIbGib = await getIbGibWithMetaspaceFallback({
|
|
64
|
+
addr: bAddr,
|
|
65
|
+
space: activeBranchSpace,
|
|
66
|
+
metaspace,
|
|
67
|
+
});
|
|
68
|
+
if (bIbGib) {
|
|
69
|
+
branchIbGibs.push(bIbGib);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const activeBranchIbGib = branchIbGibs.find((b) => b?.data?.name === branchName) || branchIbGibs.at(0);
|
|
73
|
+
rootItemAddr = activeBranchIbGib?.rel8ns?.b2tfs_item?.at(0);
|
|
74
|
+
}
|
|
75
|
+
// Read .ibgibignore patterns
|
|
76
|
+
let filterPatterns = [];
|
|
77
|
+
const ignorePath = path.join(activeWorktreeDir, '.ibgibignore');
|
|
78
|
+
try {
|
|
79
|
+
const ignoreContent = await fs.readFile(ignorePath, 'utf8');
|
|
80
|
+
filterPatterns = parseFilterFileContent(ignoreContent);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore file missing is fine
|
|
84
|
+
}
|
|
85
|
+
// 4. Walk active branch graph items
|
|
86
|
+
const branchItemsMap = new Map();
|
|
87
|
+
if (rootItemAddr) {
|
|
88
|
+
const rootItem = await getIbGibWithMetaspaceFallback({
|
|
89
|
+
addr: rootItemAddr,
|
|
90
|
+
space: activeBranchSpace,
|
|
91
|
+
metaspace,
|
|
92
|
+
});
|
|
93
|
+
if (rootItem) {
|
|
94
|
+
await statusCmd_walkBranchGraph({
|
|
95
|
+
item: rootItem,
|
|
96
|
+
space: activeBranchSpace,
|
|
97
|
+
metaspace,
|
|
98
|
+
currentRelPath: '',
|
|
99
|
+
outMap: branchItemsMap,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// 5. Scan physical workspace
|
|
104
|
+
const physicalItemsMap = new Map();
|
|
105
|
+
await statusCmd_scanPhysicalWorkspace({
|
|
106
|
+
dirPath: activeWorktreeDir,
|
|
107
|
+
baseDir: activeWorktreeDir,
|
|
108
|
+
vcsFolderName,
|
|
109
|
+
filterPatterns,
|
|
110
|
+
outMap: physicalItemsMap,
|
|
111
|
+
});
|
|
112
|
+
// 6. Categorize items into staged, modified, deleted, untracked
|
|
113
|
+
const staged = [];
|
|
114
|
+
const modified = [];
|
|
115
|
+
const deleted = [];
|
|
116
|
+
const untracked = [];
|
|
117
|
+
// Add staged items
|
|
118
|
+
for (const [relPath, stagedRec] of stagedMap.entries()) {
|
|
119
|
+
staged.push({
|
|
120
|
+
path: relPath,
|
|
121
|
+
fsType: stagedRec.fsType || 'file',
|
|
122
|
+
status: 'staged',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Compare physical items against branch items and staged
|
|
126
|
+
for (const [relPath, physItem] of physicalItemsMap.entries()) {
|
|
127
|
+
if (stagedMap.has(relPath)) {
|
|
128
|
+
continue; // Staged item already reported
|
|
129
|
+
}
|
|
130
|
+
const branchItem = branchItemsMap.get(relPath);
|
|
131
|
+
if (!branchItem) {
|
|
132
|
+
// Not in active branch snapshot and not staged => untracked
|
|
133
|
+
untracked.push({
|
|
134
|
+
path: relPath,
|
|
135
|
+
fsType: physItem.isDirectory ? 'folder' : 'file',
|
|
136
|
+
status: 'untracked',
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// Tracked in branch -> check if modified
|
|
141
|
+
if (!physItem.isDirectory && physItem.fileHash && branchItem.fileHash && physItem.fileHash !== branchItem.fileHash) {
|
|
142
|
+
modified.push({
|
|
143
|
+
path: relPath,
|
|
144
|
+
fsType: 'file',
|
|
145
|
+
status: 'modified',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Check for deleted items (in branch snapshot, but not in physical workspace and not staged)
|
|
151
|
+
for (const [relPath, branchItem] of branchItemsMap.entries()) {
|
|
152
|
+
if (!relPath || relPath === '.' || relPath === '') {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (!physicalItemsMap.has(relPath) && !stagedMap.has(relPath)) {
|
|
156
|
+
deleted.push({
|
|
157
|
+
path: relPath,
|
|
158
|
+
fsType: branchItem.fsType,
|
|
159
|
+
status: 'deleted',
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!quiet) {
|
|
164
|
+
console.log(`On branch ${branchName} (I: 9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b)`);
|
|
165
|
+
if (staged.length > 0) {
|
|
166
|
+
console.log('\nChanges to be committed:');
|
|
167
|
+
for (const item of staged) {
|
|
168
|
+
console.log(` staged: ${item.path}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (modified.length > 0 || deleted.length > 0) {
|
|
172
|
+
console.log('\nChanges not staged for commit:');
|
|
173
|
+
for (const item of modified) {
|
|
174
|
+
console.log(` modified: ${item.path}`);
|
|
175
|
+
}
|
|
176
|
+
for (const item of deleted) {
|
|
177
|
+
console.log(` deleted: ${item.path}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (untracked.length > 0) {
|
|
181
|
+
console.log('\nUntracked files:');
|
|
182
|
+
for (const item of untracked) {
|
|
183
|
+
console.log(` untracked:${item.path}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (staged.length === 0 && modified.length === 0 && deleted.length === 0 && untracked.length === 0) {
|
|
187
|
+
console.log('nothing to commit, working tree clean');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
branchName,
|
|
192
|
+
staged,
|
|
193
|
+
modified,
|
|
194
|
+
deleted,
|
|
195
|
+
untracked,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: 5e6f7a8b9c10d11e12f13a14b15c6d7e)`);
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
finally {
|
|
203
|
+
if (logalot) {
|
|
204
|
+
console.log(`${lc} complete. (I: 6f7a8b9c10d11e12f13a14b15c6d7e8f)`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// #region statusCmd_walkBranchGraph
|
|
209
|
+
async function statusCmd_walkBranchGraph({ item, space, metaspace, currentRelPath, outMap, }) {
|
|
210
|
+
if (!item || !item.data) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const { fsType, fileHash } = item.data;
|
|
214
|
+
if (currentRelPath) {
|
|
215
|
+
outMap.set(currentRelPath, { relPath: currentRelPath, fileHash, fsType });
|
|
216
|
+
}
|
|
217
|
+
if (fsType === 'folder') {
|
|
218
|
+
const childAddrs = item.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
|
|
219
|
+
for (const childAddr of childAddrs) {
|
|
220
|
+
const childItem = await getIbGibWithMetaspaceFallback({
|
|
221
|
+
addr: childAddr,
|
|
222
|
+
space,
|
|
223
|
+
metaspace,
|
|
224
|
+
});
|
|
225
|
+
if (childItem && childItem.data) {
|
|
226
|
+
const childRelPath = currentRelPath
|
|
227
|
+
? `${currentRelPath}/${childItem.data.name}`
|
|
228
|
+
: childItem.data.name;
|
|
229
|
+
await statusCmd_walkBranchGraph({
|
|
230
|
+
item: childItem,
|
|
231
|
+
space,
|
|
232
|
+
metaspace,
|
|
233
|
+
currentRelPath: childRelPath,
|
|
234
|
+
outMap,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// #endregion statusCmd_walkBranchGraph
|
|
241
|
+
// #region statusCmd_scanPhysicalWorkspace
|
|
242
|
+
async function statusCmd_scanPhysicalWorkspace({ dirPath, baseDir, vcsFolderName, filterPatterns, outMap, }) {
|
|
243
|
+
let entries = [];
|
|
244
|
+
try {
|
|
245
|
+
entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
for (const entry of entries) {
|
|
251
|
+
const fullEntryPath = path.join(dirPath, entry.name);
|
|
252
|
+
const relPath = path.relative(baseDir, fullEntryPath).replace(/\\/g, '/');
|
|
253
|
+
// Ignore vcs storage folder, .git, and worktrees folder b
|
|
254
|
+
if (relPath === vcsFolderName || relPath.startsWith(vcsFolderName + '/') ||
|
|
255
|
+
relPath === '.git' || relPath.startsWith('.git/') ||
|
|
256
|
+
relPath === 'b' || relPath.startsWith('b/')) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
if (isPathFiltered({ relativePath: relPath, isDirectory: entry.isDirectory(), filterPatterns })) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (entry.isDirectory()) {
|
|
263
|
+
outMap.set(relPath, { relPath, fullPath: fullEntryPath, isDirectory: true });
|
|
264
|
+
await statusCmd_scanPhysicalWorkspace({
|
|
265
|
+
dirPath: fullEntryPath,
|
|
266
|
+
baseDir,
|
|
267
|
+
vcsFolderName,
|
|
268
|
+
filterPatterns,
|
|
269
|
+
outMap,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
else if (entry.isFile()) {
|
|
273
|
+
let fileHash;
|
|
274
|
+
try {
|
|
275
|
+
const fileData = await fs.readFile(fullEntryPath);
|
|
276
|
+
fileHash = crypto.createHash('sha256').update(fileData).digest('hex');
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// File unreadable
|
|
280
|
+
}
|
|
281
|
+
outMap.set(relPath, { relPath, fullPath: fullEntryPath, isDirectory: false, fileHash });
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// #endregion statusCmd_scanPhysicalWorkspace
|
|
286
|
+
//# sourceMappingURL=status-cmd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/status-cmd.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @module vcs-cli-main
|
|
4
|
+
*
|
|
5
|
+
* Executable CLI entry point for the `vcs` command line interface.
|
|
6
|
+
* Parses command line arguments and dispatches execution to subcommand handlers.
|
|
7
|
+
*/
|
|
8
|
+
export interface MainOptions {
|
|
9
|
+
argv?: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function showHelp(): void;
|
|
12
|
+
export declare function showVersion(): void;
|
|
13
|
+
export declare function main({ argv, }?: MainOptions): Promise<number>;
|
|
14
|
+
//# sourceMappingURL=vcs-cli-main.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcs-cli-main.d.mts","sourceRoot":"","sources":["../../src/cli/vcs-cli-main.mts"],"names":[],"mappings":";AACA;;;;;GAKG;AAmBH,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAyB/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAsB,IAAI,CAAC,EACvB,IAA4B,GAC/B,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyEpC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @module vcs-cli-main
|
|
4
|
+
*
|
|
5
|
+
* Executable CLI entry point for the `vcs` command line interface.
|
|
6
|
+
* Parses command line arguments and dispatches execution to subcommand handlers.
|
|
7
|
+
*/
|
|
8
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
9
|
+
import { parseVcsArgs } from './cli-arg-parser.mjs';
|
|
10
|
+
import { VCS_SUBCOMMANDS } from './cli-constants.mjs';
|
|
11
|
+
import { executeInitCmd } from './commands/init-cmd.mjs';
|
|
12
|
+
import { executeStatusCmd } from './commands/status-cmd.mjs';
|
|
13
|
+
import { executeAddCmd } from './commands/add-cmd.mjs';
|
|
14
|
+
import { executeCommitCmd } from './commands/commit-cmd.mjs';
|
|
15
|
+
import { executeLogCmd } from './commands/log-cmd.mjs';
|
|
16
|
+
import { executeBranchCmd } from './commands/branch-cmd.mjs';
|
|
17
|
+
import { executeCheckoutCmd } from './commands/checkout-cmd.mjs';
|
|
18
|
+
import { AUTO_GENERATED_VERSION } from '../AUTO-GENERATED-version.mjs';
|
|
19
|
+
import { GLOBAL_LOG_A_LOT } from '../vcs-gib-constants.mjs';
|
|
20
|
+
const lcFile = `[vcs-cli-main]`;
|
|
21
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
22
|
+
export function showHelp() {
|
|
23
|
+
const helpText = `
|
|
24
|
+
vcs - Decentralized Version Control System (ibgib)
|
|
25
|
+
|
|
26
|
+
Usage:
|
|
27
|
+
vcs <command> [options] [arguments]
|
|
28
|
+
|
|
29
|
+
Commands:
|
|
30
|
+
init [dir] Initialize a new ibgib repository
|
|
31
|
+
status Show repository working tree status
|
|
32
|
+
add <path...> Stage file/folder changes (-a, --all to stage all)
|
|
33
|
+
commit -m "message" Record snapshot changes to the repository
|
|
34
|
+
log Show commit logs
|
|
35
|
+
branch [name] List or create branches
|
|
36
|
+
checkout <branch> Switch to a specified branch and project worktree
|
|
37
|
+
|
|
38
|
+
Flags:
|
|
39
|
+
-h, --help Show help information
|
|
40
|
+
-v, --version Show version information
|
|
41
|
+
-m <message> Commit message
|
|
42
|
+
-b <branch> Target branch name
|
|
43
|
+
-a, --all Stage all tracked/untracked files (for add)
|
|
44
|
+
-f, --force Force operation execution
|
|
45
|
+
`;
|
|
46
|
+
console.log(helpText.trim());
|
|
47
|
+
}
|
|
48
|
+
export function showVersion() {
|
|
49
|
+
console.log(`@ibgib/vcs-gib v${AUTO_GENERATED_VERSION}`);
|
|
50
|
+
}
|
|
51
|
+
export async function main({ argv = process.argv.slice(2), } = {}) {
|
|
52
|
+
const lc = `${lcFile}[${main.name}]`;
|
|
53
|
+
try {
|
|
54
|
+
if (logalot) {
|
|
55
|
+
console.log(`${lc} starting... (I: 4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d)`);
|
|
56
|
+
}
|
|
57
|
+
const parsed = parseVcsArgs(argv);
|
|
58
|
+
if (parsed.flags.help) {
|
|
59
|
+
showHelp();
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
switch (parsed.command) {
|
|
63
|
+
case VCS_SUBCOMMANDS.INIT: {
|
|
64
|
+
const targetDir = parsed.positionals[0] || process.cwd();
|
|
65
|
+
await executeInitCmd({ targetDir });
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case VCS_SUBCOMMANDS.STATUS: {
|
|
69
|
+
const targetDir = parsed.positionals[0] || process.cwd();
|
|
70
|
+
await executeStatusCmd({ targetDir });
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case VCS_SUBCOMMANDS.ADD: {
|
|
74
|
+
await executeAddCmd({
|
|
75
|
+
paths: parsed.positionals,
|
|
76
|
+
all: parsed.flags.all,
|
|
77
|
+
});
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case VCS_SUBCOMMANDS.COMMIT: {
|
|
81
|
+
await executeCommitCmd({
|
|
82
|
+
message: parsed.flags.message,
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case VCS_SUBCOMMANDS.LOG: {
|
|
87
|
+
const targetDir = parsed.positionals[0] || process.cwd();
|
|
88
|
+
await executeLogCmd({ targetDir });
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case VCS_SUBCOMMANDS.BRANCH: {
|
|
92
|
+
const branchName = parsed.positionals[0] || parsed.flags.branchName;
|
|
93
|
+
await executeBranchCmd({ branchName });
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case VCS_SUBCOMMANDS.CHECKOUT: {
|
|
97
|
+
const branchName = parsed.positionals[0] || parsed.flags.branchName;
|
|
98
|
+
await executeCheckoutCmd({ branchName });
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case VCS_SUBCOMMANDS.VERSION: {
|
|
102
|
+
showVersion();
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case VCS_SUBCOMMANDS.HELP:
|
|
106
|
+
default: {
|
|
107
|
+
showHelp();
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error(`Error: ${extractErrorMsg(error)} (E: 8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c)`);
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
if (logalot) {
|
|
119
|
+
console.log(`${lc} complete. (I: 9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c)`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Auto-run if executed directly as entry script
|
|
124
|
+
const isMainScript = process.argv[1] && (process.argv[1].endsWith('vcs-cli-main.mjs') ||
|
|
125
|
+
process.argv[1].endsWith('vcs-cli-main.mts') ||
|
|
126
|
+
process.argv[1].endsWith('vcs'));
|
|
127
|
+
if (isMainScript) {
|
|
128
|
+
main().then((code) => {
|
|
129
|
+
if (code !== 0) {
|
|
130
|
+
process.exit(code);
|
|
131
|
+
}
|
|
132
|
+
}).catch(() => {
|
|
133
|
+
process.exit(1);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=vcs-cli-main.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcs-cli-main.mjs","sourceRoot":"","sources":["../../src/cli/vcs-cli-main.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module branch-graph-helper
|
|
3
|
+
*
|
|
4
|
+
* Helper for extracting dependency graphs and populating branch spaces.
|
|
5
|
+
*/
|
|
6
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
7
|
+
import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
8
|
+
import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
|
|
9
|
+
export interface PopulateBranchSpaceFromGraphOpts {
|
|
10
|
+
sourceSpace: IbGibSpaceAny;
|
|
11
|
+
targetBranchSpace: IbGibSpaceAny;
|
|
12
|
+
rootItemIbGib: IbGib_V1;
|
|
13
|
+
metaspace?: MetaspaceService;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extracts the live dependency graph of rootItemIbGib from sourceSpace and persists all ibgibs into targetBranchSpace.
|
|
17
|
+
*/
|
|
18
|
+
export declare function populateBranchSpaceFromGraph({ sourceSpace, targetBranchSpace, rootItemIbGib, metaspace, }: PopulateBranchSpaceFromGraphOpts): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=branch-graph-helper.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-graph-helper.d.mts","sourceRoot":"","sources":["../../../src/engine/branch/branch-graph-helper.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AAOpG,MAAM,WAAW,gCAAgC;IAC7C,WAAW,EAAE,aAAa,CAAC;IAC3B,iBAAiB,EAAE,aAAa,CAAC;IACjC,aAAa,EAAE,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,EAC/C,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,GACZ,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module branch-graph-helper
|
|
3
|
+
*
|
|
4
|
+
* Helper for extracting dependency graphs and populating branch spaces.
|
|
5
|
+
*/
|
|
6
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
7
|
+
import { getDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
|
|
8
|
+
import { putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
|
|
9
|
+
import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
|
|
10
|
+
const lcFile = `[branch-graph-helper]`;
|
|
11
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
12
|
+
/**
|
|
13
|
+
* Extracts the live dependency graph of rootItemIbGib from sourceSpace and persists all ibgibs into targetBranchSpace.
|
|
14
|
+
*/
|
|
15
|
+
export async function populateBranchSpaceFromGraph({ sourceSpace, targetBranchSpace, rootItemIbGib, metaspace, }) {
|
|
16
|
+
const lc = `${lcFile}[${populateBranchSpaceFromGraph.name}]`;
|
|
17
|
+
try {
|
|
18
|
+
if (logalot) {
|
|
19
|
+
console.log(`${lc} starting... (I: 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d)`);
|
|
20
|
+
}
|
|
21
|
+
if (!sourceSpace || !targetBranchSpace || !rootItemIbGib) {
|
|
22
|
+
throw new Error(`sourceSpace, targetBranchSpace, and rootItemIbGib are required (E: 2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e)`);
|
|
23
|
+
}
|
|
24
|
+
const graph = await getDependencyGraph({
|
|
25
|
+
ibGib: rootItemIbGib,
|
|
26
|
+
space: sourceSpace,
|
|
27
|
+
live: true,
|
|
28
|
+
});
|
|
29
|
+
for (const [addr, ibGib] of Object.entries(graph)) {
|
|
30
|
+
await putInSpace({ space: targetBranchSpace, ibGib });
|
|
31
|
+
if (metaspace) {
|
|
32
|
+
await metaspace.registerNewIbGib({ ibGib, space: targetBranchSpace });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (logalot) {
|
|
36
|
+
console.log(`${lc} Populated target branch space with ${Object.keys(graph).length} ibgibs (I: 3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f)`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: 4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a)`);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
if (logalot) {
|
|
45
|
+
console.log(`${lc} complete. (I: 5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b)`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=branch-graph-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-graph-helper.mjs","sourceRoot":"","sources":["../../../src/engine/branch/branch-graph-helper.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,GAAG,uBAAuB,CAAC;AACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AASjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EAC/C,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,GACsB;IAC/B,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,4BAA4B,CAAC,IAAI,GAAG,CAAC;IAC7D,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAiB,IAAI,CAAC,aAAa,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;QAC5H,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;YACnC,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,uCAAuC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,+CAA+C,CAAC,CAAC;QACtI,CAAC;IACL,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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module branch-helper
|
|
3
|
+
*
|
|
4
|
+
* B2tFS Branch Helper functions: dedicated branch spaces (`b2s_...`), branch creation,
|
|
5
|
+
* and branch timeline tracking.
|
|
6
|
+
*/
|
|
7
|
+
import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
|
|
8
|
+
import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
9
|
+
import { B2tFSBranchIbGib_V1 } from './branch-types.mjs';
|
|
10
|
+
import { B2tFSItemIbGib_V1 } from '../item/item-types.mjs';
|
|
11
|
+
export declare const B2TFS_BRANCH_SPACE_PREFIX = "b2s_";
|
|
12
|
+
/**
|
|
13
|
+
* Generates a dedicated branch space name.
|
|
14
|
+
* Example: 'main' -> 'b2s_main'
|
|
15
|
+
*/
|
|
16
|
+
export declare function getB2tFSBranchSpaceName(branchName: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new B2tFSBranchIbGib pointing to a root folder item.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createB2tFSBranchIbGib(opts: {
|
|
21
|
+
branchName: string;
|
|
22
|
+
rootItem: B2tFSItemIbGib_V1;
|
|
23
|
+
space: IbGibSpaceAny;
|
|
24
|
+
metaspace: MetaspaceService;
|
|
25
|
+
}): Promise<B2tFSBranchIbGib_V1>;
|
|
26
|
+
//# sourceMappingURL=branch-helper.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-helper.d.mts","sourceRoot":"","sources":["../../../src/engine/branch/branch-helper.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAIrF,OAAO,EAAE,mBAAmB,EAA4C,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqC/B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module branch-helper
|
|
3
|
+
*
|
|
4
|
+
* B2tFS Branch Helper functions: dedicated branch spaces (`b2s_...`), branch creation,
|
|
5
|
+
* and branch timeline tracking.
|
|
6
|
+
*/
|
|
7
|
+
import { getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
8
|
+
import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
|
|
9
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
10
|
+
import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
|
|
11
|
+
import { persistTransformResult } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
|
|
12
|
+
import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
|
|
13
|
+
const lcFile = `[branch-helper]`;
|
|
14
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
15
|
+
export const B2TFS_BRANCH_SPACE_PREFIX = 'b2s_';
|
|
16
|
+
/**
|
|
17
|
+
* Generates a dedicated branch space name.
|
|
18
|
+
* Example: 'main' -> 'b2s_main'
|
|
19
|
+
*/
|
|
20
|
+
export function getB2tFSBranchSpaceName(branchName) {
|
|
21
|
+
const safeName = branchName.replace(/[^a-zA-Z0-9_\-]/g, '_');
|
|
22
|
+
return `${B2TFS_BRANCH_SPACE_PREFIX}${safeName}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new B2tFSBranchIbGib pointing to a root folder item.
|
|
26
|
+
*/
|
|
27
|
+
export async function createB2tFSBranchIbGib(opts) {
|
|
28
|
+
const lc = `${lcFile}[${createB2tFSBranchIbGib.name}]`;
|
|
29
|
+
const { branchName, rootItem, space, metaspace } = opts;
|
|
30
|
+
if (!branchName || !rootItem) {
|
|
31
|
+
throw new Error(`branchName and rootItem required (E: 9012a472c9104b2d)`);
|
|
32
|
+
}
|
|
33
|
+
const uuid = await getUUID();
|
|
34
|
+
const rootAddr = getIbGibAddr({ ibGib: rootItem });
|
|
35
|
+
const data = {
|
|
36
|
+
name: branchName,
|
|
37
|
+
uuid,
|
|
38
|
+
classname: 'B2tFSBranchIbGib_V1',
|
|
39
|
+
};
|
|
40
|
+
const rel8ns = {
|
|
41
|
+
b2tfs_item: [rootAddr],
|
|
42
|
+
};
|
|
43
|
+
const res = await Factory_V1.firstGen({
|
|
44
|
+
parentIbGib: ROOT,
|
|
45
|
+
ib: `b2tfs_branch ${branchName} v1 ${uuid}`,
|
|
46
|
+
data,
|
|
47
|
+
rel8ns,
|
|
48
|
+
});
|
|
49
|
+
const branchIbGib = res.newIbGib;
|
|
50
|
+
await persistTransformResult({ resTransform: res, space });
|
|
51
|
+
await metaspace.registerNewIbGib({ ibGib: branchIbGib });
|
|
52
|
+
if (logalot) {
|
|
53
|
+
console.log(`${lc} Created branch IbGib: ${branchIbGib.ib}`);
|
|
54
|
+
}
|
|
55
|
+
return branchIbGib;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=branch-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-helper.mjs","sourceRoot":"","sources":["../../../src/engine/branch/branch-helper.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iDAAiD,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D,OAAO,EAAc,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAEzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI/D,MAAM,MAAM,GAAG,iBAAiB,CAAC;AACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,yBAAyB,GAAG,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAK5C;IACG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC;IACvD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAExD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAuB;QAC7B,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,SAAS,EAAE,qBAAqB;KACnC,CAAC;IAEF,MAAM,MAAM,GAAyB;QACjC,UAAU,EAAE,CAAC,QAAQ,CAAC;KACzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;QAClC,WAAW,EAAE,IAAI;QACjB,EAAE,EAAE,gBAAgB,UAAU,OAAO,IAAI,EAAE;QAC3C,IAAI;QACJ,MAAM;KACT,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,GAAG,CAAC,QAA+B,CAAC;IACxD,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}
|