Add series task branch flow

This commit is contained in:
mpabi
2026-04-29 02:46:19 +02:00
parent e179ed1549
commit 6204845304
7 changed files with 1029 additions and 223 deletions
+70 -10
View File
@@ -275,7 +275,7 @@ item server proto host org repo user remote tok
1 gitea http 77.90.8.171:3001 edu-tools rv-launcher u1 r1 r1 S e59cc...13be forever
```
## Szybki start
## Kolejny krok: serie i karty pracy
Najpierw zobacz konfigurację i dostępne komendy:
@@ -290,7 +290,37 @@ Po konfiguracji tokenów najpierw sprawdź stan store:
./rvctl tokens compare
```
### Po pobraniu kart pracy
Następnie wylistuj dostępne serie. Jeżeli katalog `series` w workspace jeszcze
nie istnieje, `rvctl` utworzy go automatycznie:
```bash
./rvctl series list
```
Przykładowy wynik:
```text
inf 3 0
```
Po wybraniu serii `inf` wylistuj karty:
```bash
./rvctl series cards list inf
```
Przykładowy wynik zawiera krótką nazwę karty, pełną nazwę repo, status i tytuł:
```text
bss lab-rv32i-strlen-bss-data-stack source rv32i-c / bss-data-stack
```
Przykładowa karta `bss` odpowiada repo `lab-rv32i-strlen-bss-data-stack`.
Pobierz ją do workspace:
```bash
./rvctl series cards fetch inf bss
```
Karty trafiają do `series` w workspace:
@@ -302,18 +332,48 @@ Karty trafiają do `series` w workspace:
│ └── tokens.json
└── series
└── inf
└── 03
└── lab-rv32i-strlen-bss-data-stack
```
`rvctl` pracuje na kartach z `series_root`, czyli na katalogu
`~/dev/workspace/rv/series`.
Od tego momentu możesz listować serie i karty:
Po pobraniu karty `rvctl` przygotowuje też remote odpowiedzi `r1a`. Remote
powstaje z tokena `r1` i wskazuje na repo pracy:
```text
answer_remote r1a
answer_org c2025-1a-inf
answer_repo lab-rv32i-strlen-bss-data-stack
answer_url http://77.90.8.171:3001/c2025-1a-inf/lab-rv32i-strlen-bss-data-stack.git
```
Następnie wylistuj zadania w karcie:
```bash
./rvctl list-series
./rvctl list-cards inf
./rvctl submission inf 03 --class 4i --nick u1
./rvctl series cards tasks list inf bss
```
Przykładowy wynik:
```text
inf bss task1_bss ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks
inf bss task2_data ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks
inf bss task3_stack_unused ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks
inf bss task4_stack_strlen ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks
```
Przełącz się na wybrane zadanie. `rvctl` bierze login ucznia ze store tokenów i
tworzy branch pracy w formacie `<login>T<numer_zadania>a`:
```bash
./rvctl series cards tasks switch inf bss 4
```
Dla użytkownika `u1` i zadania `task4_stack_strlen` branch będzie miał nazwę:
```text
u1T4a
```
### Po uruchomieniu środowiska kontenerowego
@@ -330,7 +390,7 @@ kontenerowego. Wtedy pojawia się pod `tools`:
│ └── tokens.json
└── series
└── inf
└── 03
└── lab-rv32i-strlen-bss-data-stack
```
Repozytoria źródłowe poza workspace, na przykład `~/dev/edu/repos/rv`, są
@@ -340,8 +400,8 @@ do zwykłej pracy w workspace.
Przykładowe komendy dla środowiska kontenerowego:
```bash
./rvctl tmux-container inf 03 --dry-run
./rvctl tmux-container inf 03 --session rv-inf03 --attach
./rvctl tmux-container inf bss --dry-run
./rvctl tmux-container inf bss --session rv-inf-bss --attach
```
`--dry-run` jest przydatny przy sprawdzaniu planu uruchomienia lub konfiguracji