crates/gitcomet-core: domain types, merge algorithm, conflict session, text utils.crates/gitcomet-git: Git abstraction + no-op backend.crates/gitcomet-git-gix:gix/gitoxide backend implementation.crates/gitcomet-state: MVU state store, reducers, effects, conflict session management.crates/gitcomet-ui: UI model/state (toolkit-independent).crates/gitcomet-ui-gpui: gpui views/components (focused diff/merge windows, conflict resolver, word diff).crates/gitcomet: binary entrypoint, CLI (clap), difftool/mergetool/setup/uninstall modes.
Windows prerequisites (Windows 10/11):
- Install Visual Studio 2022 (Community or Build Tools).
- Install the
Desktop development with C++workload. - Ensure both MSVC tools and Windows 10/11 SDK components are installed.
- This repo configures Cargo to use
scripts/windows/msvc-linker.cmd, socargo buildworks from a regular PowerShell/CMD shell when those components are present.
Offline-friendly default build (does not build the UI or the Git backend):
cargo buildTo build the actual app you'll enable features (requires network for dependencies):
cargo build -p gitcomet --features ui,gixTo also compile the gpui-based UI crate:
cargo build -p gitcomet --features ui-gpui,gixRun (opens the repo passed as the first arg, or falls back to the current directory):
cargo run -p gitcomet --features ui-gpui,gix -- /path/to/repoFull headless test suite (CI mode):
cargo test --workspace --no-default-features --features gixClippy (CI mode):
cargo clippy --workspace --no-default-features --features gix -- -D warningsCoverage (local + CI-compatible):
rustup component add llvm-tools-preview
cargo install --locked cargo-llvm-cov
bash scripts/coverage.shThis writes:
target/llvm-cov/lcov.info(used by CI upload)target/llvm-cov/html/index.html(local detailed report)
macOS packaging is handled by:
scripts/package-macos.sh --version 0.2.0 --arch arm64 --release
scripts/package-macos.sh --version 0.2.0 --arch x86_64 --releaseUse --skip-dmg when running in restricted/sandboxed environments where hdiutil create is unavailable.
The release workflow .github/workflows/build-release-artifacts.yml builds and publishes:
- Windows: portable ZIP + MSI
- Linux: tar.gz + AppImage + .deb
- macOS: DMG + tar.gz for
arm64andx86_64 - Homebrew cask asset:
gitcomet.rb(generated from macOS DMG artifacts and Linux AppImages plus their SHA256 values)
To push Casks/gitcomet.rb into a Homebrew tap repo automatically on release:
- Create a tap repository (default expected name:
OWNER/homebrew-gitcomet). - In this repo, configure:
- secret
HOMEBREW_TAP_TOKEN: GitHub token withcontents:writeaccess to the tap repository. - variable
HOMEBREW_TAP_REPO: tap repository inOWNER/REPOform. - optional variable
HOMEBREW_TAP_BRANCH: target branch (defaultmain).
- secret
- Run
.github/workflows/release-manual-main.ymlwithdraft=false.
This release flow will:
- build and upload release artifacts
- publish the GitHub release
- call
.github/workflows/deploy-homebrew-tap.ymlto updateCasks/gitcomet.rbin the tap repo
You can also run .github/workflows/deploy-homebrew-tap.yml manually for backfills or dry-runs.
To push PKGBUILD and .SRCINFO into the live AUR repository automatically on release:
- Ensure the
gitcometAUR package repository exists. - In this repo, configure:
- secret
AUR_PRIVATE_SSH_KEY: the AUR-authorized SSH private key. - secret
AUR_PRIVATE_SSH_KEY_PASSPHRASE: the passphrase for that SSH key. - optional variable
AUR_GIT_REPOSITORY: AUR Git remote URL (default:ssh://aur@aur.archlinux.org/gitcomet.git). - optional variable
AUR_GIT_BRANCH: AUR branch for that remote (defaultmaster).
- secret
- Run
.github/workflows/release-manual-main.ymlwithdraft=false.
This release flow will:
- download the published Linux release tarball and source tarball
- update
PKGBUILDpkgverandsha256sums - regenerate
.SRCINFO - validate sources with
makepkg --verifysource - clone the configured AUR repo over HTTPS for read access
- push the updated metadata into the configured AUR repo over SSH using the configured key
The previous AUR_REPO_TOKEN secret is no longer used.
You can also run .github/workflows/deploy-aur.yml manually for backfills or dry-runs.