Konvence » Historie » Verze 5
Miroslav Krýsl, 2021-04-20 18:32
1 | 1 | Zhanel Mukanova | h1. Konvence |
---|---|---|---|
2 | |||
3 | 5 | Miroslav Krýsl | Zde jsou popsána pravidla pro vývoj produktu. |
4 | 1 | Zhanel Mukanova | |
5 | 5 | Miroslav Krýsl | h2. Verzování |
6 | |||
7 | Verzování produktu je těsně spjato s vývojovými iteracemi. Na konci každé iterace musí vzniknout jedna production-ready verze produktu. |
||
8 | Název verzí produktu se skládá z prefixu *@ioi-@*, který následují čísla major a minor verze oddělené tečkou. |
||
9 | Major verze je číslo iterace, ke které se verze vztahuje. |
||
10 | Minor verze se začíná s každou iterací číslovat od 0 a při každém commitu související s toutéž iterací se číslo inkrementuje o 1. |
||
11 | |||
12 | Příklad první verze produktu z 3. iterace: *@ioi-3.0@* |
||
13 | Příklad verze produktu z 4. iterace po dvou mergnutých hotfixech: *@ioi-4.2@* |
||
14 | |||
15 | 1 | Zhanel Mukanova | h2. Git |
16 | |||
17 | 5 | Miroslav Krýsl | Pravidla pro tvoření větví ve VCS git. |
18 | |||
19 | Následující pravidla jsou převzata a mírně upravena z článku: |
||
20 | https://nvie.com/posts/a-successful-git-branching-model/ |
||
21 | |||
22 | h3. main |
||
23 | |||
24 | * hlavní release větev |
||
25 | * pojmenována jako *@main@* |
||
26 | * HEAD obsahuje vždy nejnovější production-ready verzi produktu |
||
27 | * do této větve se merguje z release a hotfixes větví |
||
28 | * každý commit musí být jednoznačně identifikovaný názvem verze produktu |
||
29 | |||
30 | h3. develop |
||
31 | |||
32 | * hlavní vývojová větev |
||
33 | * pojmenována jako *@develop@* |
||
34 | * HEAD obsahuje vždy nejnovější dodané vývojové změny |
||
35 | * mohou zde probíhat menší bugfixy |
||
36 | * do této větve se merguje z vývojových větví a slouží jako zdroj pro větvění pro release větve |
||
37 | |||
38 | h3. vývojové větve |
||
39 | |||
40 | * každá feature, bugfix nebo enhancement musí mít vlastní větev |
||
41 | * na těchto větvích probíhá samotný vývoj |
||
42 | * pojmenování libovolné, pokud nekoliduje s názvy *@main@*, *@develop@* a *@release-*@*, musí však reflektovat podstatu feature |
||
43 | * větvit by se měli z větve *@develop@* |
||
44 | * mergovat zpět se musí pouze do větve *@develop@* |
||
45 | * merge commit by měl být pro identifikaci jednoznačně spárován s příslušným issue (v commit message) |
||
46 | |||
47 | h3. release větve |
||
48 | |||
49 | * přípravné větve pro budoucí release, tzn. production-ready verzi produktu |
||
50 | * každá release má svou vlastní větev |
||
51 | * pojmenování s prefixem *@release-@*, po kterém následuje název verze produktu |
||
52 | * na těchto větvích nesmí probíhat žádné přidávání funkcionality nebo jiné změny, než opravy bugů či změny související s procesem release (číslování verzí atp.) |
||
53 | * větvit se musí z větve *@develop@* |
||
54 | * všechny změny se nakonec zmergují do větve *@main@* a také zpět do větve *@develop@* |
||
55 | * merge commit do *@main@* větve musí být pro identifikaci verze jednoznačně identifikován tagem |
||
56 | |||
57 | h3. hotfixes větvě |
||
58 | |||
59 | * větve pro kritické opravy kódu v *@main@* větvi |
||
60 | * větvit se musí z *@main@* větve |
||
61 | * mergovat se musí zpět do *@main@* větvě a současně i do větve *@develop@* |
||
62 | * merge commit do *@main@* větve musí být pro identifikaci verze jednoznačně identifikován tagem |
||
63 | |||
64 | |||
65 | ukázkové schéma správného větvění při vývoji: |
||
66 | !{width:30%}git_branching.png! |
||
67 | zdroj: https://nvie.com/posts/a-successful-git-branching-model/ |
||
68 | 1 | Zhanel Mukanova | |
69 | h2. Komunikace |
||
70 | |||
71 | * *Zákazník:* Microsoft Teams - Chat |
||
72 | * *Mentor:* Microsoft Teams - Tým iOI - Genealogy (CATVUSA) |
||
73 | * *Tým:* Discord |
||
74 | |||
75 | h2. Projekt |
||
76 | |||
77 | * Vedoucí týmu založí hlavní úkol práce. Každý účastník projektu si vybere část práce za kterou bude zodpovědný a vytvoří si vlastní podúkoly daného zadání. |
||
78 | 2 | Zhanel Mukanova | * Na začátku iterace se status *ACCEPTED* nastaví vždy na všechny úkoly. |
79 | * Jakmile někdo z tymu si zvolí nějaký task, tak změní status úkolu na *ASSIGNED*. |
||
80 | * Po dokončení úkolu se status nastaví na *RESOLVED*. |
||
81 | * Vedoucí tymu na konci každé iteraci nastaví statusy z *RESOLVED* na *CLOSED*. |