Lines 3633-3673javascript
3636 description: "Overwrite existing configuration",
3641 handler: async (_args, options) => {
3642 console.log("\n🔧 Configuring SMRT JSON merge driver...\n");
3643 if (!isGitRepository()) {
3644 console.error("❌ Not a git repository. Run `git init` first.");
3647 const gitRoot = getGitRoot();
3648 const patterns = (options.patterns || DEFAULT_DATA_PATTERNS.join(",")).split(",").map((p) => p.trim()).filter(Boolean);
3649 const configScope = options.global ? "--global" : "--local";
3651 console.log("📝 Configuring git merge driver...");
3653 execSync(`git config ${configScope} merge.smrt-json.name "SMRT JSON merge driver"`, { stdio: "inherit" });
3654 execSync(`git config ${configScope} merge.smrt-json.driver "npx smrt merge-json %O %A %B"`, { stdio: "inherit" });
3655 changes.push(`Git merge driver configured (${options.global ? "global" : "local"})`);
HighRuntime Package Install
Package source invokes a package manager install command at runtime.
dist/commands-mHvAZYmi.jsView on unpkg · L3653 3656 console.log(` ✓ Merge driver "smrt-json" configured`);
3658 console.error("❌ Failed to configure git merge driver");
3659 if (error instanceof Error) console.error(` ${error.message}`);
3662 console.log("\n📄 Updating .gitattributes...");
3663 const gitattributesPath = resolve(gitRoot, ".gitattributes");
3664 let gitattributesContent = "";
3665 if (existsSync(gitattributesPath)) gitattributesContent = readFileSync(gitattributesPath, "utf-8");
3666 const existingPatterns = [];
3667 const lines = gitattributesContent.split("\n");
3668 for (const line of lines) if (line.includes("merge=smrt-json")) {
3669 const pattern = line.split(/\s+/)[0];
3670 if (pattern) existingPatterns.push(pattern);
3672 const newPatterns = [];
3673 for (const pattern of patterns) if (!existingPatterns.includes(pattern)) newPatterns.push(pattern);