Initial commit: MUD client v0.2
This commit is contained in:
commit
0030fd7d82
26 files changed
+4421
No files matched your search
+199
@@ -0,0 +1,199 @@
|
||||
# Pubblicazione su Gitea
|
||||
|
||||
Server: **http://192.168.0.183:8085**
|
||||
Owner: `truetype`
|
||||
Repo: `progetto2`
|
||||
Branch iniziale: `main`
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Sicurezza del token
|
||||
|
||||
Il token Gitea in colonna `truetype` (stringa 40‑hex) fornisce accesso
|
||||
**completo** all'account e ai suoi repo. Regole non negoziabili:
|
||||
|
||||
1. **Non committare mai** il token nel repo. Il comando di push
|
||||
sotto lo passa *inline* nell'URL di una sola `git push`. Mai
|
||||
`git config credential.helper`, mai `.netrc` committato, mai
|
||||
variabili d'ambiente in uno script versionato.
|
||||
2. **Revoca dopo l'uso.** Dopo il primo push riuscito, vai su
|
||||
`http://192.168.0.183:8085/user/settings/applications` → revoca il
|
||||
token usato. Generane uno nuovo *solo* se ti serve un altro push.
|
||||
Conserva il vecchio token solo se prevedi push automatici da CI
|
||||
(allora mettilo nei **secrets** della pipeline, non nel codice).
|
||||
3. **Preferisci token *scoped***: quando ne crei uno nuovo, limita
|
||||
`repository.write` e basta, non `repository.admin`.
|
||||
4. **HTTPS vs SSH.** Se hai una chiave SSH sull'account Gitea,
|
||||
preferisci sempre SSH: `git@192.168.0.183:8085:truetype/progetto2.git`
|
||||
(nota: Gitea usa `:owner/repo.git` dopo il `:`). Nessun token in
|
||||
chiaro è necessario.
|
||||
|
||||
> I log di esempio in questo file usano il placeholder `<TOKEN>`.
|
||||
> **Non** sostituirlo durante la lettura: il token reale dovrebbe
|
||||
> vivere solo nella shell history dell'operatore.
|
||||
|
||||
---
|
||||
|
||||
## Creazione del repo (una tantum)
|
||||
|
||||
```bash
|
||||
# 1: crea il repo via API (body JSON minimo)
|
||||
curl -X POST http://192.168.0.183:8085/api/v1/user/repos \
|
||||
-H "Authorization: token <TOKEN>" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name": "progetto2", "description": "MUD client (Dead Souls / LP-MUD)", "auto_init": false, "private": false}'
|
||||
```
|
||||
|
||||
Risposta attesa: `201 Created` con JSON contenente `id`, `ssh_url`,
|
||||
`clone_url`, `html_url`. Annota:
|
||||
|
||||
- `html_url` (visibile in browser)
|
||||
- `clone_url` (es. `http://192.168.0.183:8085/truetype/progetto2.git`)
|
||||
|
||||
---
|
||||
|
||||
## Configurazione git locale (una tantum)
|
||||
|
||||
Da `/home/ubuntu/code/progetto2`:
|
||||
|
||||
```bash
|
||||
git config user.name "truetype"
|
||||
git config user.email "truetype@192.168.0.183"
|
||||
```
|
||||
|
||||
(Non mettere `user.email` reale se non vuoi che appaia nei commit.)
|
||||
|
||||
---
|
||||
|
||||
## Primo push
|
||||
|
||||
Se `.git/` non esiste ancora:
|
||||
|
||||
```bash
|
||||
cd /home/ubuntu/code/progetto2
|
||||
git init
|
||||
git branch -M main
|
||||
```
|
||||
|
||||
Commit iniziale (esclude venv, pycache, cache pytest via `.gitignore`
|
||||
già presente):
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Initial commit: MUD client v0.2 (cli, telnet, gmcp, mapper, deadsouls, logger, tests)"
|
||||
```
|
||||
|
||||
Push (token inline, **non** salvato):
|
||||
|
||||
```bash
|
||||
git push https://truetype:<TOKEN>@192.168.0.183:8085/truetype/progetto2.git main
|
||||
```
|
||||
|
||||
Verifica:
|
||||
|
||||
```bash
|
||||
git remote -v
|
||||
# deve mostrare origin → http://192.168.0.183:8085/truetype/progetto2.git
|
||||
|
||||
git log --oneline -5
|
||||
```
|
||||
|
||||
Dopo il push, **revoca `<TOKEN>`** come da sezione sicurezza.
|
||||
|
||||
### Strip delle credenziali dalla config locale
|
||||
|
||||
Dopo un push con URL `https://user:token@host/...`, Gitea lascia
|
||||
**l'URL completo (con token!)** scritto in `.git/config`. Rimuovi
|
||||
subito le credenziali:
|
||||
|
||||
```bash
|
||||
git remote set-url origin http://192.168.0.183:8085/truetype/progetto2.git
|
||||
git remote -v
|
||||
# deve mostrare: origin http://192.168.0.183:8085/truetype/progetto2.git (no user:token@)
|
||||
```
|
||||
|
||||
Da questo momento i push successivi richiederanno il token solo se
|
||||
usi HTTPS nudo. Per evitare di digitarlo ogni volta, configura una
|
||||
**chiave SSH** (`http://192.168.0.183:8085/user/settings/keys`) e
|
||||
cambia il remote in `git@192.168.0.183:8085:truetype/progetto2.git`.
|
||||
|
||||
---
|
||||
|
||||
## Push successivi (senza token)
|
||||
|
||||
Dopo aver configurato `git remote add origin ...` con un URL senza
|
||||
credenziali (es. SSH o HTTPS nudo), i push successivi sono:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Fix: ..."
|
||||
git push origin main
|
||||
```
|
||||
|
||||
Se devi restare su HTTPS, configura un **credential helper**
|
||||
*temporaneo* nella shell (niente su disco):
|
||||
|
||||
```bash
|
||||
GIT_ASKPASS=/bin/true git -c credential.helper= -c core.askPass=/bin/true push origin main
|
||||
```
|
||||
|
||||
(in pratica è più comodo usare SSH.)
|
||||
|
||||
---
|
||||
|
||||
## Branch & tag
|
||||
|
||||
```bash
|
||||
# feature branch
|
||||
git checkout -b feature/msdp-support
|
||||
git push -u origin feature/msdp-support
|
||||
|
||||
# tag di release
|
||||
git tag -a v0.2.0 -m "release v0.2.0"
|
||||
git push origin v0.2.0
|
||||
```
|
||||
|
||||
I tag abilitano la releases page di Gitea; usa i tag `vX.Y.Z` come nomi
|
||||
dei binari / delle release notes.
|
||||
|
||||
---
|
||||
|
||||
## Re‑push dopo perdita di `.git/`
|
||||
|
||||
Se per qualunque motivo il `.git/` locale viene perso:
|
||||
|
||||
```bash
|
||||
cd /home/ubuntu/code/progetto2
|
||||
git init
|
||||
git branch -M main
|
||||
git remote add origin https://192.168.0.183:8085/truetype/progetto2.git
|
||||
git add .
|
||||
git commit -m "Restore: progetto2 v0.2"
|
||||
git push -u origin main
|
||||
# NB: questo push richiede di nuovo un token se SSH non è configurato
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Webhook di release (opzionale)
|
||||
|
||||
Per triggerare un deploy o un CI su tag push:
|
||||
|
||||
1. In Gitea: `Repo → Settings → Webhooks → Add webhook`
|
||||
2. URL: il tuo endpoint CI (es. Drone, Woodpecker, Gitea Actions)
|
||||
3. Events: `Push events` + `Create events` (quest'ultimo copre i tag)
|
||||
4. Secret: `<WEBHOOK_SECRET>` (salvalo nei secrets della CI, non nel
|
||||
codebase).
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Errore | Causa | Rimedio |
|
||||
| --- | --- | --- |
|
||||
| `403 Forbidden` | token errato o revocato | rigenera; controlla che lo scope includa `repo` |
|
||||
| `401 Unauthorized` | token mancante o scaduto | verifica header `Authorization` |
|
||||
| `repository does not exist` | repo non creato lato Gitea | ricrea via API; assicurati che `owner`/`name` siano giusti |
|
||||
| `failed to push some refs` | remote ahead | `git pull --rebase origin main` poi push |
|
||||
| `Could not resolve host` | Gitea offline | controlla `curl http://192.168.0.183:8085/api/v1/version` |
|
||||
| `Permission denied (publickey)` | SSH non configurato | aggiungi la chiave pubblica a `http://192.168.0.183:8085/user/settings/keys` |
|
||||
Reference in new issue
Block a user