Add configuration properties class with worktreePath and gitDirPath settings, and JGit dependency. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
80 lines
2.7 KiB
Markdown
80 lines
2.7 KiB
Markdown
# 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). |
|
|
|
|
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://<server>:8080` in any web browser.
|
|
|
|
## License
|
|
|
|
TBD
|