Derive the repository name from the clone URL by extracting the last path segment and stripping the .git suffix. Applied to the web controller, GitService, and telnet interface. The telnet prompt now shows the default name in brackets. Also fix flaky contextLoads test by using RANDOM_PORT. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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
.gitdirectory 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). |
Example:
webgit.worktree-path=/mnt/shared/repos
webgit.git-dir-path=/var/lib/webgit/git
Building
./gradlew build
Running
./gradlew bootRun
Then open http://<server>:8080 in any web browser.
License
This project is licensed under the GNU General Public License v3.0. See LICENSE.txt for details.