{"record":{"id":"2cc50a286fc5e7bf","repo":"affaan-m/ECC","slug":"merge-worktree-does-not-accept-a-session-id-when","errorCode":null,"errorMessage":"merge-worktree does not accept a session ID when --all is set","messagePattern":"merge-worktree does not accept a session ID when --all is set","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"ecc2/src/main.rs","lineNumber":2072,"sourceCode":"                    println!(\"{}\", serde_json::to_string_pretty(&reports)?);\n                } else {\n                    println!(\"{}\", serde_json::to_string_pretty(&reports[0])?);\n                }\n            } else {\n                println!(\"{}\", format_worktree_resolution_reports_human(&reports));\n            }\n            if check {\n                std::process::exit(worktree_resolution_reports_exit_code(&reports));\n            }\n        }\n        Some(Commands::MergeWorktree {\n            session_id,\n            all,\n            json,\n            keep_worktree,\n        }) => {\n            if all && session_id.is_some() {\n                return Err(anyhow::anyhow!(\n                    \"merge-worktree does not accept a session ID when --all is set\"\n                ));\n            }\n            if all {\n                let outcome = session::manager::merge_ready_worktrees(&db, !keep_worktree).await?;\n                if json {\n                    println!(\"{}\", serde_json::to_string_pretty(&outcome)?);\n                } else {\n                    println!(\"{}\", format_bulk_worktree_merge_human(&outcome));\n                }\n            } else {\n                let id = session_id.unwrap_or_else(|| \"latest\".to_string());\n                let resolved_id = resolve_session_id(&db, &id)?;\n                let outcome =\n                    session::manager::merge_session_worktree(&db, &resolved_id, !keep_worktree)\n                        .await?;\n                if json {\n                    println!(\"{}\", serde_json::to_string_pretty(&outcome)?);","sourceCodeStart":2054,"sourceCodeEnd":2090,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/ecc2/src/main.rs#L2054-L2090","documentation":"The `merge-worktree` subcommand accepts either `--all` (merge every ready worktree) or a single session ID, but not both. Supplying both fails this up-front validation, since the merge target must be unambiguous.","triggerScenarios":"Running `ecc2 merge-worktree --all <session-id>` (or `-s <id>` together with `--all`).","commonSituations":"Scripted invocations that hardcode `--all` while also forwarding a positional/flagged session argument; shell completions or docs mixing the two usage forms.","solutions":["Use `--all` alone to merge all ready worktrees.","Use the session ID alone to merge just that session's worktree.","Adjust wrapper scripts to conditionally pass one or the other.","Verify usage with `ecc2 merge-worktree --help`."],"exampleFix":"// before (shell)\necc2 merge-worktree --all sess-42\n\n// after\necc2 merge-worktree --all      # merge all ready worktrees\necc2 merge-worktree sess-42    # merge one","handlingStrategy":"validation","validationCode":"// shell: pick one merge scope\nif $ALL_MODE && [ -n \"$SESSION_ID\" ]; then echo \"use --all or a session ID, not both\"; exit 1; fi","typeGuard":"fn merge_args_ok(all: bool, session_id: &Option<String>) -> bool {\n    !(all && session_id.is_some())\n}","tryCatchPattern":"// wrap merge calls with explicit failure handling\nif ! ecc2 merge-worktree \"$@\"; then echo \"merge-worktree argument error\" >&2; exit 1; fi","preventionTips":["Explicitly choose bulk vs. single-session merge in scripts.","Never hardcode --all in shared aliases or wrappers.","Check `--help` output when upgrading ecc2, as flag semantics may tighten.","Review generated command lines in CI for both flag and ID."],"tags":["cli","worktree","git","rust"],"backgroundTag":"mutually-exclusive-flags","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}