# Git-Spiegel der Fassungen (`laws_git/`)

Nachvollziehbare Geschichte der Bundesgesetze als **eigenes Git-Repository**.
Das Eltern-Repo `lawgit` bleibt die Arbeitskopie (Parser, UI, Markdown von
gesetze-im-internet.de). `laws_git/` ist ein verschachteltes Git-Repo und liegt
absichtlich nicht auf `main` (außer dieser Anleitung).

**Eine Verkündung = ein Commit.** Datum des Commits ist das Verkündungsdatum.

## Was man hier sieht

| Aktion | Bedeutung |
|---|---|
| `git log --oneline -- verkuendungen/` | alle Blätter chronologisch |
| `git show HEAD:verkuendungen/2024/bgbl1-2024-167-1.md` | Metadaten einer Verkündung |
| `git log --oneline -- bgb/` | nur Stationen, die dem BGB zugeordnet sind, plus heutiger GII-Text |
| `git show HEAD:bgb/§1.md` | heutiger Wortlaut von § 1 |

**Ehrlich:** Den vollen historischen Paragraphentext haben wir meist nicht.
Ältere Commits tragen Metadaten (`FASSUNG.md`, `STELLEN.md`) statt eines
erfundenen Altwortlauts. Der letzte Commit eines Gesetzesordners ist die
konsolidierte Fassung von gesetze-im-internet.de.

2023+ stammt aus der Heuristik (recht.bund.de): Fundstelle und Titel sind
belastbar, Stammnorm-Ordner nur wenn der Kurztitel eine bekannte Norm nennt.
1949–2022: LLM-Parse, lückenhaft solange `--holen` nicht den vollen Bestand hat.

**Git-Datum vor 1970:** Apple Git akzeptiert keine Author-Daten vor 1970.
Diese Commits liegen intern auf dem 1.1.1970 (Reihenfolge bleibt).
Die echte Verkündung steht in der Commit-Message und in `verkuendungen/`.

Git = Fassungsgeschichte. Die Postgres-Datenbank bleibt für Abfragen.

## Bauen und nachziehen

Im Eltern-Repo:

```bash
# Alles neu schreiben (Demo-Kette verwerfen)
python3 build_laws_git.py --rebuild

# Nur nachziehen (idempotent über Trailer `BGBl-Id:`)
python3 build_laws_git.py

# Ein Gesetz / Test
python3 build_laws_git.py --law bgb --rebuild
python3 build_laws_git.py --dry-run --limit 20
```

Quellen: `timeline/parsed/` (lawgit, GPU-Historie) und
`../gesetzblatt/timeline/parsed/` (recht.bund.de ab 2023).

Kein Force-Push.

```bash
git -C laws_git log --oneline -- verkuendungen/
git -C laws_git log --oneline -- bgb/
git -C laws_git blame bgb/§1.md
```

Optional zweites Remote (nicht `main` von lawgit):

```bash
git -C laws_git remote add origin git@git.coded.law:michaelkole/laws-git.git
git -C laws_git push -u origin main
```
