Samodejno oštevilčevanje verzij Monime oz. Liteness Branches: - master: zadnja uradno izdana verzija; v ta branch ne moremo delati popravkov (commit ni dovoljen), ampak lahko samo naredimo merge iz brancha unreleased - unreleased: v ta branch zbiramo vse spremembe, dokler jih ne objavimo v uradno izdano verzijo; ta branch je dovoljeno uplodati tudi na server posamični stranki - ime_projekta: delovna verzija projekta; v njega vedno znova mergamo master in unreleased, da smo na tekočem; izjemoma je tudi ta branch je dovoljeno uplodati na server posamični stranki Hotfixe praviloma delamo na branchu, ki ga kreiramo iz masterja, izjemoma pa lahko tudi na neki stari verziji, (npr. če stranke nočemo prestaviti na najnovejšo verzijo). Nove funkcionalnosti vedno delamo na branchu, ki ga kreiramo iz masterja. Če nujno rabimo novo funkcionalnost na stari verziji, temu rečemo hotfix in veljajo pravila za hotfix. Številčenje verzij je semantično: - v masterju: X.Y.Z - v unreleased: X.Y.Z-unreleased.N; X.Y.Z je verzija masterja, na osnovi katere delamo razvoj; N se samodejno povečuje ob vsakem commitu ali mergu - v ostalih branchih: X.Y.Z-.N; N se samodejno povečuje ob vsakem commitu ali mergu Primer razvoja hotfixa ali nove funkcionalnosti: (na primer da je trenutna verzija masterja 7.2.12) - naložimo master - ustvarimo novi branch hotfix_opis ali opis_brancha (na primer order-to-pdf) - delamo popravke in sproti commit & push: verzija dobi dodatek -order-to-pdf.0 in zdaj izgleda takole: 7.2.12-order-to-pdf.0, 0 pa se poveča z vsakim commitom - občasno naredimo merge branchov master in unreleased v naš branch, da smo up-to-date z najnovejšo verzijo - ko zaključimo razvoj: - merge masterja v order-to-pdf - merge unreleased v order-to-pdf - stestiramo, naredimo še zadnje popravke - commit & push (N v verziji se poveča za 1, zdaj verzija izgleda npr. 7.2.12-order-to-pdf.13) - v config/changelog.php v del unreleased dodamo opis sprememb, pomagajmo si s commit messages; WARNING: to bomo objavili na spletni strani, zato pišimo v razumljivem jeziku in slovnično pravilno. - commit & push order-to-pdf (N v verziji se poveča za 1, zdaj verzija izgleda npr. 7.2.12-order-to-pdf.14) - checkout unreleased - merge order-to-pdf v unreleased; verzija se spremeni v 7.2.12-unreleased.N, N se poveča za 1) - push - takoj pobrišemo branch order-to-pdf lokalno in remote, sicer se nam nabirajo; če bomo potrebovali še kakšen popravek, ga naredimo v unreleased ali odpremo nov branch - če je potrebno popravek uploadati samo eni stranki, ga uploadamo (ne pozabi na migrate v produkciji) in smo končali; - če je potrebno popravek takoj vključiti v uradno verzijo, naredimo postopek izdaje nove verzije (opisan spodaj) Postopek izdaje nove verzije: (ta primer je narejen na predpostavki, da je trenutna verzija masterja 7.2.12, spremembe pa so se nabirale v branchu unreleased, kjer je zdaj verzija 7.2.12-unreleased.14) - če še nismo v branchu unreleased: najprej commit and push, potem pa checkout unreleased - merge master to unreleased (ne bi smelo biti nič za mergniti) - odpremo config/version.php in verzijo iz 7.2.12-unreleased.14 popravimo na 7.2.13 - odpremo config/changelog.php in naredimo novo vejo za verzijo 7.2.13; vanjo vpišemo današnji datum in prenesemo changes iz razdelka unreleased - commit and push, v komentar vpišemo 7.2.13 - checkout master - merge unreleased to master - push (commit se ne da narediti) - uploadamo vsem strankam (ne pozabi na migrate v produkciji) - checkout unreleased - merge master to unreleased (to bo nastavilo verzijo na 7.2.13-unreleased.1) - commit & push WARNING: git hooks: da stvar deluje samodejno, moramo datoteke iz resources/develop/versioning/hooks prekopirati v .git/hooks. WARNING: PhpStorm macro: namesto klasičnega ukaza Commit posnamemo makro Auto version and commit, ki ima dva ukaza: - zažene external tool resources/develop/versioning/auto_version.bat (ga moramo prej definirati v Settings -> Tools -> External tools: - Program: cmd.exe - Arguments: /c "$ProjectFileDir$\resources\develop\versioning\auto_version.bat" - Working directory: $ProjectFileDir$ - odkljukamo vse, kar je pod Advanced options), - zažene ukaz Commit Macro potem obesimo v orodno vrstico namesto gumba Commit