main.cpp,mainwindow.cpp,cmd.cppcontain the Qt6 application logic.mainwindow.uidefines the UI layout (Qt Designer).translations/holds Qt.tsfiles; compiled.qmfiles are generated during build.translations-desktop-file/contains desktop file i18n tooling and.pofiles.debian/contains packaging metadata;debs/is a build artifact drop.- Assets and desktop integration live at
xdelta3-gui.png,xdelta3-gui.svg, andxdelta3-gui.desktop.
./build.shbuilds a Release binary intobuild/using CMake + Ninja../build.sh --debugbuilds a Debug binary../build.sh --cleanremovesbuild/and packaging artifacts before building../build.sh --debianbuilds a Debian package and moves artifacts intodebs/../build.sh --archbuilds an Arch Linux.tar.zstpackage inbuild/.- Manual build:
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Releasethencmake --build build --parallel. - Run locally:
./build/xdelta3-gui.
- C++20 with Qt6; prefer idiomatic Qt types (
QString,QFile, etc.). - Indentation is 4 spaces; keep braces on the next line for class members and functions.
- Header guards use
#pragma once. - Member variables use
camelCase(seemainwindow.h). - UI object names are defined in
mainwindow.ui; keep names descriptive and consistent.
- No automated test suite is present. Validate changes by building and running the GUI.
- For manual checks, cover both workflows: "Create Patch" and "Apply Patch" tabs.
- Commit messages use short, imperative summaries (e.g., "Update build system").
- PRs should include a clear description, manual test steps, and screenshots for UI changes.
- If you modify translations, mention the updated
.ts/.pofiles and the tooling used. - Versioning is sourced from
debian/changelog; update it when preparing releases.
- Build requires Qt6 (Core, Gui, Widgets, LinguistTools), CMake 3.16+, and Ninja.
- Runtime requires the
xdelta3binary on the system PATH.