feat: support one Gitea organization per series
This commit is contained in:
+27
-20
@@ -11,24 +11,30 @@ Komendy kart pracy dzielimy na trzy poziomy:
|
||||
- `series cards` - operacje na kartach w ramach serii
|
||||
- `series cards tasks` - operacje na zadaniach w ramach karty
|
||||
|
||||
`rvctl` tworzy `series_root`, jeżeli katalog jeszcze nie istnieje. Lista serii
|
||||
i kart pochodzi docelowo z publicznego manifestu
|
||||
`~/dev/workspace/rv/meta/workspace-info/workspace.json`. Jeżeli manifestu nie
|
||||
ma, komendy zależne od serii automatycznie klonują repo
|
||||
`edu-workspace/workspace-info`. Jeżeli klonowanie nie jest możliwe, narzędzie
|
||||
używa starego fallbacku przez `original_series_root`.
|
||||
`stemctl` tworzy `series_root`, jeżeli katalog jeszcze nie istnieje. Gdy
|
||||
`workspace-info` jest dostępny, manifest jest jedynym źródłem listy serii i
|
||||
kart. Przypadkowe katalogi robocze nie pojawiają się w katalogu. Fallback przez
|
||||
`original_series_root` działa wyłącznie dla starego workspace bez manifestu.
|
||||
|
||||
Każda operacyjna seria jawnie deklaruje `source_org`. Docelowa konwencja to
|
||||
`edu-<series-id>`, na przykład `freertos-c` → `edu-freertos-c`. Jedno repo
|
||||
odpowiada jednej karcie; kolejnych wydań karty nie zapisujemy jako osobnych
|
||||
repozytoriów ani trwałych branchy, tylko jako historię, tagi i wydania tego
|
||||
repozytorium. Organizacja `edu` przechowuje control plane i katalog, nie setki
|
||||
repozytoriów kart.
|
||||
|
||||
## Szybki przepływ
|
||||
|
||||
```bash
|
||||
./rvctl tokens compare
|
||||
./rvctl series list
|
||||
./rvctl series use inf
|
||||
./rvctl series cards list inf
|
||||
./rvctl card use bss
|
||||
./rvctl series cards fetch inf bss
|
||||
./rvctl tasks list
|
||||
./rvctl tasks switch 1
|
||||
./stemctl workspace audit
|
||||
./stemctl tokens compare
|
||||
./stemctl series list
|
||||
./stemctl series use freertos-c
|
||||
./stemctl series cards list freertos-c
|
||||
./stemctl card use FC02
|
||||
./stemctl series cards fetch freertos-c FC02
|
||||
./stemctl tasks list
|
||||
./stemctl tasks switch 1
|
||||
```
|
||||
|
||||
Dla karty `bss` właściwym repo jest `lab-rv32i-strlen-bss-data-stack`.
|
||||
@@ -37,10 +43,10 @@ Dla karty `bss` właściwym repo jest `lab-rv32i-strlen-bss-data-stack`.
|
||||
|
||||
### `series list`
|
||||
|
||||
Listuje dostępne serie z manifestu `workspace-info` oraz liczbę kart już
|
||||
pobranych do lokalnego workspace. Jeżeli manifestu jeszcze nie ma, komenda
|
||||
pobiera go automatycznie. Jeżeli `~/dev/workspace/rv/series` nie istnieje,
|
||||
komenda tworzy ten katalog.
|
||||
Listuje wyłącznie operacyjne serie z manifestu `workspace-info` oraz liczbę
|
||||
kart już obecnych w lokalnym workspace. Logiczna seria może wskazywać wspólny,
|
||||
przejściowy katalog fizyczny przez `workspace_dir`; na przykład `freertos-c`
|
||||
jest obecnie mapowane na `series/freertos`.
|
||||
|
||||
```bash
|
||||
./rvctl series list
|
||||
@@ -49,8 +55,9 @@ komenda tworzy ten katalog.
|
||||
Typowy wynik:
|
||||
|
||||
```text
|
||||
fiz 3 0
|
||||
inf 3 0
|
||||
fiz 3 0
|
||||
inf 9 5
|
||||
freertos-c 11 11
|
||||
```
|
||||
|
||||
Kolumny oznaczają: seria, liczba kart w źródłach, liczba kart pobranych do
|
||||
|
||||
@@ -16,6 +16,23 @@ wybrany kontener
|
||||
└── wewnętrzny tmux → Neovim + Termdebug/GDB + symulator lub RP2350
|
||||
```
|
||||
|
||||
## Katalog i organizacje Gitea
|
||||
|
||||
`workspace-info/workspace.json` jest źródłem prawdy. Organizacja `edu` pełni
|
||||
rolę control plane, a stabilne serie mają osobne organizacje o nazwie
|
||||
`edu-<series-id>`. Karta jest repozytorium wewnątrz organizacji swojej serii.
|
||||
|
||||
```bash
|
||||
stemctl workspace audit
|
||||
stemctl series list
|
||||
stemctl series cards list freertos-c
|
||||
stemctl series cards show freertos-c FC02
|
||||
```
|
||||
|
||||
`workspace audit` jest lokalny i deterministyczny: sprawdza kontrakt katalogu,
|
||||
nie modyfikuje Gitea. Dzięki temu brak sieci nie uniemożliwia przeprowadzenia
|
||||
zajęć z wcześniej zsynchronizowanego workspace.
|
||||
|
||||
Obiektem operacji `attach` i `detach` jest **połączenie pane z kontenerem**.
|
||||
Neovim i Termdebug są zawartością sesji kontenera, a nie osobnym obiektem
|
||||
podpinanym przez launcher.
|
||||
|
||||
+30
-6
@@ -13,22 +13,34 @@ Implementacja CLI znajduje się w `rvctl.py`. Plik `workspace.json` przechowuje
|
||||
lokalne ścieżki workspace, series, socketów, tokenów i adres publicznego
|
||||
manifestu.
|
||||
|
||||
Publiczny manifest wspólnego workspace jest w repo:
|
||||
Publiczny manifest wspólnego workspace jest częścią control plane w
|
||||
organizacji `edu`. Katalog jest źródłem prawdy dla narzędzi i interfejsu;
|
||||
lista organizacji widoczna w Gitea pozostaje widokiem administracyjnym.
|
||||
|
||||
Model własności:
|
||||
|
||||
```text
|
||||
edu-workspace/workspace-info
|
||||
edu
|
||||
└── workspace-info control plane i katalog
|
||||
|
||||
edu-inf seria legacy
|
||||
edu-fiz seria
|
||||
edu-freertos-c seria
|
||||
├── lab-rv32i-freertos-heap4 jedna karta = jedno repo
|
||||
├── lab-rv32i-freertos-c-first-task
|
||||
└── ...
|
||||
```
|
||||
|
||||
Lokalna kopia manifestu znajduje się w:
|
||||
|
||||
```text
|
||||
~/dev/workspace/rv/meta/workspace-info
|
||||
~/dev/workspace/stem/meta/workspace-info
|
||||
```
|
||||
|
||||
Typowy układ:
|
||||
|
||||
```text
|
||||
~/dev/workspace/rv
|
||||
~/dev/workspace/stem
|
||||
├── meta
|
||||
│ └── workspace-info
|
||||
├── tools
|
||||
@@ -38,8 +50,20 @@ Typowy układ:
|
||||
└── series
|
||||
```
|
||||
|
||||
`workspace-info` opisuje serie, karty, repo źródłowe, repo odpowiedzi i branche.
|
||||
Nie przechowuje tokenów ani lokalnych plików roboczych ucznia.
|
||||
`workspace-info` opisuje rejestr organizacji, operacyjne serie, karty, repo
|
||||
źródłowe, repo odpowiedzi i branche. Każda seria musi jawnie podać
|
||||
`source_org`; globalne `git.source_org` nie zastępuje tej deklaracji.
|
||||
`workspace-info` nie przechowuje tokenów ani lokalnych plików roboczych ucznia.
|
||||
|
||||
Sprawdzenie spójności bez połączenia z Gitea:
|
||||
|
||||
```bash
|
||||
./stemctl workspace audit
|
||||
```
|
||||
|
||||
Audyt wykrywa brak organizacji, brak jawnego `source_org`, niespójne
|
||||
przypisanie seria–organizacja oraz zduplikowane identyfikatory kart i repo.
|
||||
Ostrzeżenie o wspólnym `workspace_dir` jest dopuszczalne podczas migracji.
|
||||
|
||||
Aktualizacja manifestu:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user