Add series task branch flow
This commit is contained in:
+79
-88
@@ -1,7 +1,7 @@
|
||||
# Series
|
||||
|
||||
Ten dokument opisuje docelowy model komend `rvctl` do pracy z seriami, kartami
|
||||
pracy i zadaniami w kartach.
|
||||
Ten dokument opisuje komendy `rvctl` do pracy z seriami, kartami pracy i
|
||||
zadaniami w kartach.
|
||||
|
||||
## Zasada
|
||||
|
||||
@@ -11,73 +11,51 @@ Komendy kart pracy dzielimy na trzy poziomy:
|
||||
- `series cards` - operacje na kartach w ramach serii
|
||||
- `series cards tasks` - operacje na zadaniach w ramach karty
|
||||
|
||||
Używamy pluralnych namespace'ów `cards` i `tasks`, bo opisują kolekcje zasobów
|
||||
i są spójne z pluralnym `tokens`.
|
||||
`rvctl` tworzy `series_root`, jeżeli katalog jeszcze nie istnieje. Lista serii
|
||||
i kart może pochodzić z repo źródłowych, a `fetch` pobiera wybraną kartę do
|
||||
workspace.
|
||||
|
||||
## Szybki przepływ
|
||||
|
||||
Typowy przepływ pracy:
|
||||
|
||||
```bash
|
||||
./rvctl tokens compare
|
||||
./rvctl series list
|
||||
./rvctl series show inf
|
||||
./rvctl series fetch inf
|
||||
./rvctl series cards list inf
|
||||
./rvctl series cards show inf 03
|
||||
./rvctl series cards tasks list inf 03
|
||||
./rvctl series cards tasks show inf 03 task1
|
||||
./rvctl series cards fetch inf 03
|
||||
./rvctl series cards submission inf 03 --class 4i --nick u1
|
||||
./rvctl series cards fetch inf bss
|
||||
./rvctl series cards tasks list inf bss
|
||||
./rvctl series cards tasks switch inf bss 1
|
||||
```
|
||||
|
||||
Dla karty `bss` właściwym repo jest `lab-rv32i-strlen-bss-data-stack`.
|
||||
|
||||
## Serie
|
||||
|
||||
### `series list`
|
||||
|
||||
Listuje dostępne serie w workspace.
|
||||
Listuje dostępne serie. Jeżeli `~/dev/workspace/rv/series` nie istnieje,
|
||||
komenda tworzy ten katalog.
|
||||
|
||||
```bash
|
||||
./rvctl series list
|
||||
```
|
||||
|
||||
Przykładowy wynik:
|
||||
Typowy wynik:
|
||||
|
||||
```text
|
||||
series cards workspace
|
||||
------ ----- -------------------------------
|
||||
inf 12 ~/dev/workspace/rv/series/inf
|
||||
inf 3 0
|
||||
```
|
||||
|
||||
Kolumny oznaczają: seria, liczba kart w źródłach, liczba kart pobranych do
|
||||
workspace.
|
||||
|
||||
### `series show SERIES`
|
||||
|
||||
Pokazuje informacje o serii jako całości.
|
||||
Pokazuje informacje o serii.
|
||||
|
||||
```bash
|
||||
./rvctl series show inf
|
||||
```
|
||||
|
||||
Typowe pola:
|
||||
|
||||
```text
|
||||
series inf
|
||||
workspace_path ~/dev/workspace/rv/series/inf
|
||||
source_path ~/dev/edu/repos/rv/series/inf
|
||||
cards_count 12
|
||||
cards 01 02 03 ...
|
||||
```
|
||||
|
||||
### `series fetch SERIES`
|
||||
|
||||
Pobiera albo aktualizuje całą serię w workspace.
|
||||
|
||||
```bash
|
||||
./rvctl series fetch inf
|
||||
```
|
||||
|
||||
Ta komenda pracuje na wszystkich kartach w serii. Do pobrania jednej karty
|
||||
służy `series cards fetch`.
|
||||
|
||||
## Karty
|
||||
|
||||
### `series cards list SERIES`
|
||||
@@ -91,38 +69,45 @@ Listuje karty w wybranej serii.
|
||||
Przykładowy wynik:
|
||||
|
||||
```text
|
||||
series card repo
|
||||
------ ---- ------------------------------------
|
||||
inf 03 lab-rv32i-strlen-bss-data-stack
|
||||
bss lab-rv32i-strlen-bss-data-stack source rv32i-c / bss-data-stack
|
||||
```
|
||||
|
||||
Pierwsza kolumna jest krótką nazwą karty. Pełna nazwa repo zostaje w drugiej
|
||||
kolumnie.
|
||||
|
||||
### `series cards fetch SERIES CARD`
|
||||
|
||||
Pobiera albo aktualizuje jedną kartę w workspace. `CARD` może być krótką nazwą
|
||||
albo unikalnym fragmentem pełnej nazwy repo.
|
||||
|
||||
```bash
|
||||
./rvctl series cards fetch inf bss
|
||||
```
|
||||
|
||||
Karta trafia do:
|
||||
|
||||
```text
|
||||
~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack
|
||||
```
|
||||
|
||||
Po pobraniu `rvctl` przygotowuje remotes:
|
||||
|
||||
- `r1` - repo źródłowe karty w `edu-inf`
|
||||
- `r1a` - repo pracy w `c2025-1a-inf`
|
||||
|
||||
Remote `r1a` jest tworzony z tokena `r1` i wskazuje na repo o tej samej nazwie
|
||||
co karta:
|
||||
|
||||
```text
|
||||
http://77.90.8.171:3001/c2025-1a-inf/lab-rv32i-strlen-bss-data-stack.git
|
||||
```
|
||||
|
||||
### `series cards show SERIES CARD`
|
||||
|
||||
Pokazuje informacje o konkretnej karcie.
|
||||
Pokazuje informacje o karcie.
|
||||
|
||||
```bash
|
||||
./rvctl series cards show inf 03
|
||||
```
|
||||
|
||||
Typowe pola:
|
||||
|
||||
```text
|
||||
series inf
|
||||
card 03
|
||||
workspace_path ~/dev/workspace/rv/series/inf/03
|
||||
source_path ~/dev/edu/repos/rv/series/inf/03
|
||||
source_repo edu-inf/lab-rv32i-strlen-bss-data-stack
|
||||
source_remote r1
|
||||
answer_remote a1
|
||||
tasks task1 task2 ...
|
||||
```
|
||||
|
||||
### `series cards fetch SERIES CARD`
|
||||
|
||||
Pobiera albo aktualizuje jedną kartę w workspace.
|
||||
|
||||
```bash
|
||||
./rvctl series cards fetch inf 03
|
||||
./rvctl series cards show inf bss
|
||||
```
|
||||
|
||||
### `series cards submission SERIES CARD`
|
||||
@@ -130,14 +115,15 @@ Pobiera albo aktualizuje jedną kartę w workspace.
|
||||
Pokazuje albo stosuje konfigurację repo odpowiedzi dla karty.
|
||||
|
||||
```bash
|
||||
./rvctl series cards submission inf 03 --class 4i --nick u1
|
||||
./rvctl series cards submission inf 03 --class 4i --nick u1 --apply
|
||||
./rvctl series cards submission inf bss --class c2025-1a-inf
|
||||
./rvctl series cards submission inf bss --class c2025-1a-inf --task 4 --apply
|
||||
```
|
||||
|
||||
Bez `--apply` komenda tylko pokazuje plan. Z `--apply` ustawia remotes potrzebne
|
||||
do pracy z repo odpowiedzi.
|
||||
Bez `--apply` komenda pokazuje plan. Z `--apply` ustawia remotes potrzebne do
|
||||
pracy z repo odpowiedzi. Jeżeli nie podasz `--branch`, branch jest liczony ze
|
||||
store tokenów i zadania, na przykład `u1T1a`.
|
||||
|
||||
## Zadania W Karcie
|
||||
## Zadania w karcie
|
||||
|
||||
Zadania są częścią karty, dlatego trzymamy je pod `series cards tasks`.
|
||||
|
||||
@@ -146,16 +132,16 @@ Zadania są częścią karty, dlatego trzymamy je pod `series cards tasks`.
|
||||
Listuje zadania dostępne w konkretnej karcie.
|
||||
|
||||
```bash
|
||||
./rvctl series cards tasks list inf 03
|
||||
./rvctl series cards tasks list inf bss
|
||||
```
|
||||
|
||||
Przykładowy wynik:
|
||||
|
||||
```text
|
||||
series card task path
|
||||
------ ---- ----- --------------------------------------
|
||||
inf 03 task1 ~/dev/workspace/rv/series/inf/03/task1
|
||||
inf 03 task2 ~/dev/workspace/rv/series/inf/03/task2
|
||||
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
|
||||
```
|
||||
|
||||
### `series cards tasks show SERIES CARD TASK`
|
||||
@@ -163,33 +149,38 @@ inf 03 task2 ~/dev/workspace/rv/series/inf/03/task2
|
||||
Pokazuje informacje o konkretnym zadaniu w karcie.
|
||||
|
||||
```bash
|
||||
./rvctl series cards tasks show inf 03 task1
|
||||
./rvctl series cards tasks show inf bss task1
|
||||
```
|
||||
|
||||
Typowe pola:
|
||||
### `series cards tasks switch SERIES CARD TASK`
|
||||
|
||||
Tworzy albo przełącza lokalny branch pracy dla wybranego zadania.
|
||||
|
||||
```bash
|
||||
./rvctl series cards tasks switch inf bss 4
|
||||
```
|
||||
|
||||
Nazwa brancha jest liczona automatycznie z użytkownika w `tokens.json` i numeru
|
||||
zadania. Dla użytkownika `u1` i zadania `task4_stack_strlen` powstanie:
|
||||
|
||||
```text
|
||||
series inf
|
||||
card 03
|
||||
task task1
|
||||
workspace_path ~/dev/workspace/rv/series/inf/03/task1
|
||||
card_path ~/dev/workspace/rv/series/inf/03
|
||||
u1T4a
|
||||
```
|
||||
|
||||
Jeżeli branch już istnieje, `rvctl` przełącza na niego repo. Jeżeli go nie ma,
|
||||
tworzy go od aktualnego commita karty.
|
||||
|
||||
Na tym poziomie nie wprowadzamy osobnego `fetch`: zadania są pobierane razem z
|
||||
kartą przez `series cards fetch` albo razem z całą serią przez `series fetch`.
|
||||
|
||||
## Aliasowanie Starych Komend
|
||||
|
||||
Stare komendy można zostawić jako aliasy kompatybilności:
|
||||
Stare komendy zostają jako aliasy kompatybilności:
|
||||
|
||||
```text
|
||||
list-series -> series list
|
||||
list-cards inf -> series cards list inf
|
||||
submission inf 03 --class K --nick N -> series cards submission inf 03 --class K --nick N
|
||||
submission inf bss --class K -> series cards submission inf bss --class K
|
||||
```
|
||||
|
||||
Komendy `series cards tasks ...` nie mają starego odpowiednika i powinny być
|
||||
wprowadzane tylko w nowym namespace.
|
||||
|
||||
Dokumentacja i nowe przykłady powinny promować namespace `series`.
|
||||
|
||||
Reference in New Issue
Block a user