Przejdź do treści

Jak czytać prawo jako git

Każda ustawa w korpusie to jeden plik Markdown. Cała jej historia legislacyjna jest zapisana w historii git tego pliku.

Pełna historia nowelizacji

git log -p pliku ustawy to jej kompletna historia zmian — każdy diff to dokładna zmiana w brzmieniu przepisu, a każdy merge to nowelizacja wchodząca w życie:

git clone https://git.sedzia.ai/sejm/prawostanowienie.git
cd prawostanowienie
git log -p ustawy/2018/0305-*.md

W przeglądarce ten sam widok znajdziesz, wchodząc w plik ustawy w korpusie i wybierając History / Blame na forge.

Co przepis stanowił danego dnia

Każdy commit nosi datę historyczną zdarzenia (a nie datę wygenerowania). Dlatego git blame z datą pokazuje brzmienie obowiązujące w wybranym dniu:

git blame --date=short ustawy/2018/0305-*.md | grep 2023-06-15

Model gałęzi

Gałąź Znaczenie
main tekst obowiązujący (skonsolidowany)
nowelizacja/DU-RRRR-NNNN nowelizacja, która weszła w życie (merge --no-ff w dniu wejścia w życie)
w-toku/termN-drukM projekt aktualnie procedowany w Sejmie
odrzucone/*, wycofane/*, niezakonczone/* projekty, które nie weszły w życie

Commity przenoszą też wyniki głosowań, a merge — imienne głosy posłów (jako trailery). Więcej w eseju „Głosowanie w git”.