GitExtensions is a standalone Windows GUI client for managing Git repositories. It provides a comprehensive interface for Git operations including committing, branching, merging, rebasing, stashing, and conflict resolution. The application features a modular architecture with distinct layers for core Git operations (GitCommands), user interface (GitUI), extensibility via plugins, and shared utilities. It integrates with Windows Explorer and Visual Studio, supports external diff/merge tools, and offers plugin-based integrations with build servers (Azure DevOps, Jenkins) and hosting services (GitHub, GitLab). The settings system uses hierarchical scopes (system, global, local, distributed) with typed settings and caching. The plugin architecture employs MEF-like attributes for loose coupling, enabling extensions for statistics, issue tracking, and automation. The codebase demonstrates strong engineering practices in areas such as the argument builder utility, avatar provider chain, and theming system.
Gitea is a self-hosted Git service providing a full DevOps platform including repository hosting, issue tracking, pull requests, wiki, CI/CD (Actions), package registry, and more. The architecture is a monolithic Go web application with a Vue.js frontend, using a SQL database (MySQL, PostgreSQL, SQLite, MSSQL) and supporting various storage backends (local, S3, Azure). Key entry points are the web server (port 3000), SSH server (port 22), and CLI commands for administration. Data flows involve Git operations, webhook notifications, and background job queues. External dependencies include Git, a database, and optional services like Redis, Elasticsearch, and object storage. The codebase is well-structured with extensive testing, but carries some technical debt from a long migration history and dual Git backends.