• Adeniji Adekunle James's avatar
    Replace native Git with Dugite to support users without Git installed (#1760) · d3f3ac3a
    Adeniji Adekunle James 提交于
    I moved all isomorphic-git usage into a single git_utils.ts file and
    added Dugite as an alternative Git provider. The app now checks the
    user’s settings and uses dugite when user enabled native git for all
    isomorphic-git commands. This makes it easy to fully remove
    isomorphic-git in the future by updating only git_utils.ts.
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Adds Dugite-based native Git (bundled binary) and refactors all Git
    calls to a unified git_utils API, replacing direct isomorphic-git usage
    across the app.
    > 
    > - **Git Platform Abstraction**:
    > - Introduces `dugite` and bundles Git via Electron Forge
    (`extraResource`) with `LOCAL_GIT_DIRECTORY` setup in `src/main.ts`.
    > - Adds `src/ipc/git_types.ts` and a comprehensive
    `src/ipc/utils/git_utils.ts` wrapper supporting both Dugite (native) and
    `isomorphic-git` (fallback): `commit`, `add`/`addAll`, `remove`, `init`,
    `clone`, `push`, `setRemoteUrl`, `currentBranch`, `listBranches`,
    `renameBranch`, `log`, `isIgnored`, `getCurrentCommitHash`,
    `getGitUncommittedFiles`, `getFileAtCommit`, `checkout`,
    `stageToRevert`.
    > - **Refactors (switch to git_utils)**:
    > - Replaces direct `isomorphic-git` imports in handlers and processors:
    `app_handlers`, `chat_handlers`, `createFromTemplate`,
    `github_handlers`, `import_handlers`, `portal_handlers`,
    `version_handlers`, `response_processor`, `neon_timestamp_utils`,
    `utils/codebase`.
    > - Updates tests to mock `git_utils`
    (`src/__tests__/chat_stream_handlers.test.ts`).
    > - **Behavioral/Feature Updates**:
    > - `createFromTemplate` uses `fetch` for GitHub API and `gitClone` for
    cloning with cache validation.
    > - GitHub integration uses `gitSetRemoteUrl`/`gitPush`/`gitClone`,
    handling public vs token URLs and directory creation when native Git is
    disabled.
    > - Versioning, imports, app file edits, migrations now stage/commit via
    `git_utils`.
    > - **UI/Copy**:
    >   - Updates Settings description for “Enable Native Git”.
    > - **Config/Version**:
    >   - Bumps version to `0.29.0-beta.1`; adds `dugite` dependency.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    ba098f7f25d85fc6330a41dc718fbfd43fff2d6c. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    ---------
    Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
    d3f3ac3a
名称
最后提交
最后更新
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...