{"version":"2.1.233","anchor":"incremental-repo-reset-now-uses-a-detached-checkout","canonical_anchor":"incremental-repo-reset-now-uses-a-detached-checkout","heading":"Incremental repo reset now uses a detached checkout","tier":"internal","area":"Elsewhere","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.233\/e\/incremental-repo-reset-now-uses-a-detached-checkout","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.233","markdown":"### Incremental repo reset now uses a detached checkout\n\nManaged-compute repo updates now use a detached checkout instead of a merge.\n\n**What**\n\nIn the managed-compute git sync path, the fast update taken when a previous HEAD exists switched from a merge into the working tree plus a HEAD update to a single quiet detached `checkout --progress --detach FETCH_HEAD^{commit}`, still with `core.checkStat=minimal` and `core.trustctime=false`.\n\n**Details**\n\n- Gated on the `CCR_DELTA_RESET` environment variable; when it is unset the code goes straight to the `reset --hard FETCH_HEAD^{commit}` path, which is unchanged.\n- The precondition is now a plain `rev-parse --verify --quiet HEAD^{commit}` probe rather than resolving and sha-validating the old HEAD.\n- The pre-reset `update-ref --no-deref HEAD HEAD` now runs only when the fast path is not taken or as part of the fallback, and an aborted checkout is rethrown instead of falling through to the hard reset.\n\n**Evidence**\n\n`CCR_DELTA_RESET`, `core.trustctime=false`\n\n- Area: Elsewhere\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}