# WebGit A web interface for managing Git repositories, designed to work on retro systems such as Windows 3.11, Windows 98, and FreeDOS. ## Overview WebGit allows old machines on a local network to interact with Git repositories through a simple HTML-based web interface. The server clones repositories to a shared network drive so that legacy systems can access the working files directly. Git operations — committing, branching, pushing, and pulling — are performed through the web UI since these machines cannot run Git themselves. ``` ┌──────────────┐ ┌──────────────┐ │ Win 3.11 / │ HTTP │ │ ┌────────────────┐ │ Win 98 PC ├───────►│ WebGit ├───►│ Git remote │ │ (browser) │ │ server │ └────────────────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ ┌──────────────┐ │ └───►│ Network drive│◄──┘ │ (work trees) │ └──────────────┘ ``` ## Features - **Clone repositories** — clone a remote repository; the working tree is placed on the shared network drive and the `.git` directory is stored separately. - **Create commits** — stage files and create commits from the web interface. - **Push and pull** — sync with remote repositories. - **Branch management** — check out existing branches or create new ones. - **Retro-compatible UI** — pure HTML with table-based layout. No JavaScript or CSS, so it works in period-appropriate browsers. - **Telnet interface** — planned interface for FreeDOS users without a graphical web browser. ## Tech Stack - Java 25 - Spring Boot 4.0 - Thymeleaf (server-side HTML templating) - Gradle ## Configuration Configure the following properties in `application.properties` (or via environment variables / command-line arguments): | Property | Description | |---|---| | `webgit.worktree-path` | Path to the shared network drive where working trees are stored (the files your retro machines will access). | | `webgit.git-dir-path` | Path where `.git` directories are stored (can be a local disk on the server). | | `webgit.username` | Username for push/pull authentication (e.g. a dedicated Gitea account). | | `webgit.password` | Password or access token for push/pull authentication. | Credentials can be supplied via environment variables (`WEBGIT_USERNAME`, `WEBGIT_PASSWORD`) to avoid storing them in config files. Example: ```properties webgit.worktree-path=/mnt/shared/repos webgit.git-dir-path=/var/lib/webgit/git ``` ## Building ```sh ./gradlew build ``` ## Running ```sh ./gradlew bootRun ``` Then open `http://:8080` in any web browser. ## License This project is licensed under the GNU General Public License v3.0. See [LICENSE.txt](LICENSE.txt) for details.