{"record":{"id":"54dbfaa955abfab3","repo":"GitoxideLabs/gitoxide","slug":"the-hidden-and-visible-revisions-have-no-editable","errorCode":null,"errorMessage":"the hidden and visible revisions have no editable fork point","messagePattern":"the hidden and visible revisions have no editable fork point","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"gix-tix/src/command/rebase.rs","lineNumber":143,"sourceCode":"        &authors,\n        &AtomicBool::new(false),\n        |event| {\n            match event {\n                Event::Decorations(value) => decorations = value,\n                Event::Commits(commits) => app.extend_commits(commits),\n                Event::HiddenCommits(commits) => app.extend_hidden_commits(commits),\n                Event::Complete(value) => graph = Some(value),\n                Event::VisibleComplete | Event::Cancelled => {}\n            }\n            true\n        },\n    )?;\n    let graph = graph.context(\"history traversal did not produce a graph\")?;\n    crate::update_hidden_branch_updates(&mut app, Some(&graph), &refs);\n    let mut candidates = app.hidden_rebase_candidates();\n    if candidates.len() != 1 {\n        if candidates.is_empty() {\n            anyhow::bail!(\"the hidden and visible revisions have no editable fork point\");\n        }\n        candidates.sort_by_key(|(id, _)| *id);\n        anyhow::bail!(\n            \"the revisions have multiple editable fork points: {}\",\n            candidates\n                .iter()\n                .map(|(id, _)| id.to_string())\n                .collect::<Vec<_>>()\n                .join(\", \")\n        );\n    }\n    let (base, scope) = candidates.pop().context(\"one rebase candidate was expected\")?;\n    let (onto, onto_kind) = if args.update_base {\n        let onto = app\n            .hidden_branch_update(base)\n            .context(\"--update-base found no newer hidden local branch tip for the derived base\")?;\n        (onto, todo::OntoKind::UpdatedBase)\n    } else {","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gix-tix/src/command/rebase.rs#L125-L161","documentation":"After traversing history, `gix_tix::command::rebase::prepare` collects `hidden_rebase_candidates()` — possible fork points between the hidden and visible revisions. Exactly one candidate is required to define the rebase base; when there are zero, it bails with this error because the hidden and visible histories do not intersect at an editable point.","triggerScenarios":"Calling rebase prepare where the hidden revision(s) and the visible revisions share no candidate fork point — e.g. the hidden branch is fully disjoint from the visible history, so `candidates.is_empty()`.","commonSituations":"Hiding a branch that diverged completely from the visible commits; rebasing after history was rewritten so the old base no longer relates; specifying `-x` revisions unrelated to the commits being rebased.","solutions":["Choose a `-x/--hide` revision that is an actual ancestor/fork point of the visible commits.","Verify the relationship with `gix log --graph` across both hidden and visible revisions.","Re-hide the rewritten base if history was rewritten underneath you.","Explicitly specify the base instead of letting inference fail."],"exampleFix":"// before\ngix tix rebase todo -x unrelated-branch\n// after\ngix tix rebase todo -x main   # main is the shared fork point","handlingStrategy":"try-catch","validationCode":"// Check that the hidden revision is an ancestor/fork point of the visible history before rebasing via gix graph traversal.","typeGuard":null,"tryCatchPattern":"match prepare(repo, &args) { Err(e) if e.to_string().contains(\"no editable fork point\") => { /* select a different -x base that is an actual fork point */ } other => other }","preventionTips":["Choose -x revisions that genuinely fork from the visible commits.","Inspect the commit graph before rebasing rewritten or divergent histories.","Avoid hiding branches unrelated to the changes being rebased."],"tags":["git","tix","rebase","fork-point","history"],"backgroundTag":"resource-not-found","analyzedSha":"e73179060badf27222d790981fac3f84c1830a7e","analyzedAt":"2026-09-08T11:26:50.865Z","contentChangedAt":"2026-09-08T11:26:50.865Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}