## Implementation Complete
Merge mode has been implemented with the following features:
### New CLI Options
- `--merge` - Merge with existing directory (skip existing files by default)
- `--include=PATTERN` - Glob patterns to overwrite matching files
- `--exclude=PATTERN` - Glob patterns to protect files from overwriting
- `--interactive` - Prompt for each conflicting file
- `--no-backup` - Disable backup creation when overwriting
### New Classes
- **MergeOptions** - Configuration record for merge settings
- **MergeStrategy** - Conflict resolution logic with interactive prompts
- **FileDiffer** - Unified diff generation for conflict preview
### Behavior
1. With `--merge` alone: existing files are skipped, new files are created
2. With `--merge --include=*.java`: Java files are overwritten, others skipped
3. With `--merge --interactive`: Prompts for each conflict with diff view option
4. Backups created with timestamp before overwriting (unless `--no-backup`)
### Tests
Added 26 new tests covering all merge functionality.
Commit: abc118d
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #12
User Story
As a qctl user, I want a
--mergemode so that I can regenerate specific files from a template without overwriting my customizations.Design
Use Cases
Command Interface
Merge Strategy
--merge--merge --include <glob>--merge --exclude <glob>--merge --interactiveInteractive Prompt
Backup Strategy
Before overwriting, create backup:
Or with timestamp:
Files to Create/Modify
MergeOptions.javaMergeStrategy.javaFileDiffer.javaInitCommand.javaTemplateEngine.javaConsoleUI.javaImplementation Tasks
--mergeflag toInitCommand--includeand--excludeglob options--interactiveflagMergeOptionsrecordMergeStrategyclass with conflict detectionFileDifferusing diff algorithmConsoleUI--no-backupflag to disable backupsAcceptance Criteria
--mergeskips existing files by default--includeselectively regenerates matching files--excludeprotects matching files--interactiveprompts for each conflict--dry-runto preview mergeImplementation Complete
Merge mode has been implemented with the following features:
New CLI Options
--merge- Merge with existing directory (skip existing files by default)--include=PATTERN- Glob patterns to overwrite matching files--exclude=PATTERN- Glob patterns to protect files from overwriting--interactive- Prompt for each conflicting file--no-backup- Disable backup creation when overwritingNew Classes
Behavior
--mergealone: existing files are skipped, new files are created--merge --include=*.java: Java files are overwritten, others skipped--merge --interactive: Prompts for each conflict with diff view option--no-backup)Tests
Added 26 new tests covering all merge functionality.
Commit:
abc118d