Skip to content

[Bug]: Can't disable Git #13595

Closed
Closed

Description

@snatvb

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/desktop

Steps to reproduce

  1. Open app
  2. Open settings
  3. Go to "Source Control"
  4. Find "Version control"
  5. See that Git is enabled and disallow to disable:
Image

Expected behavior

I can disable version control feature at all. The setting seems to exist, but it appears useless because it cannot be changed. It looks like an error.

Actual behavior

Can't disable version control. I have an extremely large repository. The folder .git size almost 300 GB. Sure, all requests to Git are quite slow and take a long time. Using it from within the T3 code is not possible. Actually, this is an SVN repository. I'm just using git-svn. I would prefer simply turning off work with version control.

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Sep 25, 2026
  2. juliusmarminge commented on Sep 25, 2026

    @juliusmarminge
    Member

    Triage: #13595 — Can't disable Git

    Verdict: Confirmed. The Version Control switch is a read-only detection indicator, not a preference, and there is no supported way to turn Git off for a project. Not a regression, and not a duplicate of the fetch-interval work.

    What happened

    The reporter opens Settings → Source Control → Version Control, sees Git enabled, and cannot turn it off. They want Git integration off entirely. The project is a git-svn checkout whose .git directory is about 300 GB, so Git commands from T3 Code are too slow to use.

    The issue does not include an app version or OS. The control on current main matches the screenshot description.

    Diagnosis

    The switch was never a setting. DiscoveryItemRow renders it as availability only, and disabled is hardcoded:

                {!isVcsNotReady(item) ? (
                  <Switch checked={enabled} disabled aria-label={`${item.label} availability`} />
                ) : null}

    For Git, checked is true when git --version succeeds and the driver is marked implemented. That flag is a constant in SourceControlDiscovery, not a user preference. The row subtitle is only "Available". Jujutsu is the "Coming Soon" row and has no switch. This UI has been non-interactive since the VCS settings page landed in #2435.

    Nothing in settings, project config, or .t3code/vcs.json can opt out. Allowed kinds are git, jj, and unknown. auto and unknown still detect Git. An invalid kind such as svn falls back to auto. Forcing jj fails, because only the Git driver is registered.

    Opening the project still treats any directory inside the checkout as a Git repo (git rev-parse --is-inside-work-tree). A status subscription then runs git status --porcelain=2 --branch and git diff HEAD --numstat. The local status cache lives for 1 second, so the UI can repeat those commands. Background fetch is separate: the balanced profile fetches about every 30 seconds, performance about every 15 seconds. Setting the Git fetch interval to 0, or using the battery-saver profile, skips later upstream fetches after one initial remote refresh. It does not stop local status, branch listing, worktrees, or checkpoints.

    The same page is the shared web UI, so desktop and the website both show it. Mobile does not have this settings page.

    Steps to reproduce

    1. Install Git and open a Git repository in T3 Code.
    2. Open Settings → Source Control.
    3. Under Version Control, try to turn Git off.

    The switch stays on and does not accept input. No other control disables version control for that project.

    Environment

    Not reported. Reproduced from source on current main (apps/web settings, used by the desktop app). No machine logs; this is behavior in the client, not a crash.

    Evidence

    • Switch: apps/web/src/components/settings/SourceControlSettings.tsx (checked from discovery, disabled fixed, label ${item.label} availability).
    • Discovery: apps/server/src/sourceControl/SourceControlDiscovery.ts (git probe, implemented: true).
    • No opt-out: packages/contracts/src/vcs.ts (VcsDriverKind), apps/server/src/vcs/VcsProjectConfig.ts, apps/server/src/vcs/VcsDriverRegistry.ts (auto always detects Git; only git is registered).
    • Cost that remains: readStatusDetailsLocal in apps/server/src/vcs/GitVcsDriverCore.ts; STATUS_RESULT_CACHE_TTL is 1 second in apps/server/src/git/GitManager.ts.
    • Fetch interval 0 only skips later remote refreshes: makeRemoteRefreshLoop in apps/server/src/vcs/VcsStatusBroadcaster.ts.

    Related issues

    Fix applied or workaround

    No change was made on a machine.

    Partial relief only: expand the Git row and set Fetch interval to 0, or set Background activity to battery saver. That stops repeating automatic fetches. Local git status and git diff, and thread worktrees, still run. There is no supported workaround that disables version control.

    Recommendation

    Keep the issue open. The report is right that the control looks broken. The missing product behavior is a per-project "don't use version control" mode that makes detection return no repository and skips status, worktrees, and checkpoints. Replacing the disabled switch with a "Detected" badge would fix the misleading UI by itself and would not help the 300 GB git-svn case.

    A real off switch is a product decision: diffs, restore, and new threads assume Git. Do not treat a settings-only visual toggle as the fix.

    Filed by: Cursor Grok 4.7, triage only. No PR.

  3. added
    via-triageFiled through npx t3 triage
    acceptedfeature request accepted
    and removed
    needs-triageIssue needs maintainer review and initial categorization.
    on Sep 25, 2026
  4. locked and limited conversation to collaborators on Oct 22, 2026
  5. converted this issue into a discussion #23332 on Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedfeature request acceptedbugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions