feat(git-workflow): Add automatic git branch-tag integration

- Implement automatic tag creation when switching to new git branches

- Add branch-tag mapping system for seamless context switching

- Enable auto-switch of task contexts based on current git branch

- Provide isolated task contexts per branch to prevent merge conflicts

- Add configuration support for enabling/disabling git workflow features

- Fix ES module compatibility issues in git-utils module

- Maintain zero migration impact with automatic 'master' tag creation

- Support parallel development with branch-specific task contexts

The git workflow system automatically detects branch changes and creates corresponding empty task tags, enabling developers to maintain separate task contexts for different features/branches while preventing task-related merge conflicts during collaborative development.

Resolves git workflow integration requirements for multi-context development.
This commit is contained in:
Eyal Toledano
2025-06-13 18:27:51 -04:00
parent a047886910
commit 32236a0bc5
16 changed files with 127 additions and 41 deletions

View File

@@ -9,6 +9,7 @@ import chalk from 'chalk';
import dotenv from 'dotenv';
// Import specific config getters needed here
import { getLogLevel, getDebugFlag } from './config-manager.js';
import * as gitUtils from './utils/git-utils.js';
import {
COMPLEXITY_REPORT_FILE,
LEGACY_COMPLEXITY_REPORT_FILE,
@@ -302,8 +303,6 @@ function readJSON(filepath, projectRoot = null, tag = null) {
// This needs to run synchronously BEFORE tag resolution
if (projectRoot) {
try {
// Import git utilities synchronously
const gitUtils = require('./utils/git-utils.js');
// Run git integration synchronously
gitUtils.checkAndAutoSwitchGitTagSync(projectRoot, filepath);
} catch (error) {
@@ -361,8 +360,6 @@ function readJSON(filepath, projectRoot = null, tag = null) {
// This needs to run synchronously BEFORE tag resolution
if (projectRoot) {
try {
// Import git utilities synchronously
const gitUtils = require('./utils/git-utils.js');
// Run git integration synchronously
gitUtils.checkAndAutoSwitchGitTagSync(projectRoot, filepath);
} catch (error) {