diff --git a/TRANSLATORS.md b/TRANSLATORS.md index 7e65f3a0..d95010d3 100644 --- a/TRANSLATORS.md +++ b/TRANSLATORS.md @@ -16,4 +16,8 @@ This file contains the translation contributors who are willing to help translat ## Hebrew -- [@ShlomoCode](https://github.com/ShlomoCode) \ No newline at end of file +- [@ShlomoCode](https://github.com/ShlomoCode) + +## Serbian + +- [@rammba](https://github.com/rammba) \ No newline at end of file diff --git a/lang/sr/index.md b/lang/sr/index.md index fd4f0247..b666b698 100644 --- a/lang/sr/index.md +++ b/lang/sr/index.md @@ -14,9 +14,9 @@ Za dati broj verzije MAJOR.MINOR.PATCH, inkrementirajte: 1. MAJOR (GLAVNU) verziju kada unesete nekompatibilne izmene API-ja 1. MINOR (MANJU) verziju kada dodate unazad kompatibilnu funkcionalnost -1. PATCH (ZAKRPU) verziju kada dodate unazad kompatibilne ispravke bugova (grešaka) +1. PATCH (ZAKRPU) verziju kada dodate unazad kompatibilne ispravke bug-ova (grešaka) -Dodatne oznake za predizdanja i metapodatke builda (izrade) dostupne su kao proširenja +Dodatne oznake za predizdanja i metapodatke build-a (izrade) dostupne su kao proširenja u formatu MAJOR.MINOR.PATCH. Uvod @@ -42,7 +42,7 @@ softveru. Kako bi ovaj sistem funkcionisao, neophodno je prvo objaviti public (j Možemo to primeniti u dokumentaciji ili u samom kodu. U svakom slučaju, važno je da API bude jasan i precizan. Jednom kad identifkujemo public API, izmene prenosimo kroz specifikovane inkrementacije broja verzije. -Razmotrimo format verzije X.Y.Z (Major.Minor.Patch). Ispravke bugova (grešaka) koji +Razmotrimo format verzije X.Y.Z (Major.Minor.Patch). Ispravke bug-ova (grešaka) koji ne utiču na API inkrementiraju patch (zakrpa) verziju, a unazad nekompatibilne promene API-ju inkrementiraju major (glavnu) verziju. Ovaj sistem nazivamo „Semantičko Verzionisanje“. Prema ovoj šemi, brojevi verzija @@ -51,7 +51,7 @@ i način na koji se menjaju daju informacije o osnovnom kodu koji se nalazi pod Specifikacija Semantičkog Verzionisanja (SemVer) ------------------------------------------------ -Ključne reči "MUST" ("MORA"), "MUST NOT" ("NE SME"), "REQUIRED ("NEOPHODNO"), "SHALL"("HOĆE"), "SHALL NOT" ("NEĆE"),"SHOULD" ("TREBA"), "SHOULD NOT" ("NE TREBA"), "RECOMMENDED" ("PREPORUČENO"), "MAY" ("MOŽE") i "OPTIONAL" ("OPCIONO") ovom dokumentu treba tumačiti kako je opisano u [RFC 2119](https://tools.ietf.org/html/rfc2119). +Ključne reči "MUST" ("MORA"), "MUST NOT" ("NE SME"), "REQUIRED ("NEOPHODNO"), "SHALL"("HOĆE"), "SHALL NOT" ("NEĆE"),"SHOULD" ("TREBA"), "SHOULD NOT" ("NE TREBA"), "RECOMMENDED" ("PREPORUČENO"), "MAY" ("MOŽE") i "OPTIONAL" ("OPCIONO") u ovom dokumentu treba tumačiti kako je opisano u [RFC 2119](https://tools.ietf.org/html/rfc2119). 1. Softver koji koristi Semantičko Verzionisanje MUST (MORA) objaviti publlic (javni) API. Ovaj API može biti deklarisan u samom kodu ili postojati striktno u dokumentaciji. U svakom slučaju, SHOULD (TREBA) da bude precizan i sveobuhvatan. @@ -70,30 +70,28 @@ u svakom trenutku. Ovaj public (javni) API SHOULD NOT (NE TREBA) smatrati stabil 1. Verzija 1.0.0 definiše public (javni) API. Način na koji će se oznaka verzije inkrementirati nakon ove objave zavisi od ovog public (javnog) API-ja i izmena na njemu. -1. Patch (zakrpa) verzija Z (x.y.Z | x > 0) MUST (MORA) se inkrementirati kada se dodaju samo unazad kompatibilne ispravke bagova (gresaka). Ispravke bugova (gresaka) su definisane kao promene koda +1. Patch (zakrpa) verzija Z (x.y.Z | x > 0) MUST (MORA) se inkrementirati kada se dodaju samo unazad kompatibilne ispravke bug-ova (gresaka). Ispravke bug-ova (gresaka) su definisane kao promene koda koje ispravljaju nepravilno ponašanje. -1. Minor (manja) verzija Y (x.Y.z | x > 0) MUST (MORA) se inkrementirati ako je nova, unazad kompatibilna funkcionalnost uvedena u javni API. Takođe MUST (MORA) se inkrementirati kada se neka od funkcionalnosti API-ja označi kao deprecated (zastarela).MAY (MOŽE) biti inkrementirana ukoliko se uvedu substancijalno nove funkcionalnosti ili poboljšanja u okviru privatnog koda. MAY (MOŽE) uključivati promene nivoa zakrpe -PATCH (ZAKRPA) verzija MUST (MORA) se resetovati na 0 kada se minor (manja) verzija inkrementira. +1. Minor (manja) verzija Y (x.Y.z | x > 0) MUST (MORA) se inkrementirati ako je nova, unazad kompatibilna funkcionalnost uvedena u javni API. Takođe MUST (MORA) se inkrementirati kada se neka od funkcionalnosti API-ja označi kao deprecated (zastarela). MAY (MOŽE) biti inkrementirana ukoliko se uvedu substancijalno nove funkcionalnosti ili poboljšanja u okviru privatnog koda. MAY (MOŽE) uključivati promene nivoa patch (zakrpe). Patch (Zakrpa) verzija MUST (MORA) se resetovati na 0 kada se minor (manja) verzija inkrementira. 1. Major (glavna) verzija X (X.y.z | X > 0) MUST (MORA) se inkrementirati ako se unazad nekompatibilne promene uvode u javni API. MAY (MOŽE) uključivati i promene minor (manje) i promene na nivou patch (zakrpe) verzije. Patch (zakrpe) i minor (manje) verzije MUST (MORA) da se resetuju na 0 kada se major (glavna) verzija inkrementira. -1. Verzija predizdanja MAY (MOŽE) biti označena dodavanjem hyphena (povlake) i serijom identifikatora razdvojenih tačkom neposredno nakon patch (zakrpe) verzije.Identifikatori MUST (MORAJU) sadržati samo ASCII alfanumeričke znakove i hyphene (povlake) -[0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) biti prazni. Numerički identifikatori MUST NOT (NE SMEJU) počinjati nulom. Verzije predizdanja imaju niži prioritet od povezane normalne verzije. Verzija predizdanja označava da je verzija nestabilna i da možda neće biti zadovoljeni predviđeni zahtevi kompatibilnosti kao što je označeno njegovim povezanim -normalnim verzijama. Primeri: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, +1. Verzija predizdanja MAY (MOŽE) biti označena dodavanjem hyphen-a (povlake) i serijom identifikatora razdvojenih tačkom neposredno nakon patch (zakrpe) verzije. Identifikatori MUST (MORAJU) sadržati samo ASCII alfanumeričke znakove i hyphen-e (povlake) +[0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) biti prazni. Numerički identifikatori MUST NOT (NE SMEJU) počinjati nulom. Verzije predizdanja imaju niži prioritet od povezane normalne verzije. Verzija predizdanja označava da je verzija nestabilna i da možda neće biti zadovoljeni predviđeni zahtevi kompatibilnosti kao što je označeno njenom povezanom normalnom verzijom. Primeri: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92, 1.0.0-x-y-z.\-\-. -1. Metadata (metapodaci) builda (izrade) MAY (MOGU) biti označeni dodavanjem znaka plus -i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zakrpu) verziju ili verziju predizdanja. Identifikatori MUST (MORAJU) da sadrže iskljucivo ASCII alfanumeričke znakove i hyphene (povlake) [0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) da budu prazni. Metadata (metapodaci) o buildu (izgradnji) MUST (MORAJU) se zanemariti prilikom određivanja prioriteta verzije. Prema tome dve verzije koje se razlikuju samo u metapodacima builda (izrade), imaju isti prioritet. Primeri: +1. Metadata (metapodaci) build-a (izrade) MAY (MOGU) biti označeni dodavanjem znaka plus +i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zakrpu) verziju ili verziju predizdanja. Identifikatori MUST (MORAJU) da sadrže iskljucivo ASCII alfanumeričke znakove i hyphen-e (povlake) [0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) da budu prazni. Metadata (metapodaci) o build-u (izgradnji) MUST (MORAJU) se zanemariti prilikom određivanja prioriteta verzije. Prema tome dve verzije koje se razlikuju samo u metapodacima build-a (izrade), imaju isti prioritet. Primeri: 1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85, 1.0.0+21AF26D3\-\-\-\-117B344092BD. 1. Prioritet se odnosi na način kojim se verzije u poretku međusobno upoređuju. - 1. Prioritet se MUST (MORA) izračunati odvajanjem verzije na major (glavne), - minor (manje), patch (zakrpe) i identifikatora predizdanja (metadata (metapodaci) builda (izrade) nemaju ulogu u odredjivanju prioriteta). + 1. Prioritet se MUST (MORA) izračunati razdvajanjem verzije na major (glavne), + minor (manje), patch (zakrpe) i identifikatore predizdanja (metadata (metapodaci) build-a (izrade) nemaju ulogu u određivanju prioriteta). 1. Prioritet se određuje prvom razlikom kada se upoređuje svaki od identifikatora sa leva na desno: major (glavni), minor (manji) i patch (zakrpa). Verzije se uvek upoređuju brojčano. @@ -110,13 +108,13 @@ i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zak 1. Identifikatori koji se sastoje samo od cifara upoređuju se numerički. - 1. Identifikatori sa slovima ili hyphenima (povlakama) se upoređuju leksički u ASCII + 1. Identifikatori sa slovima ili hyphen-ima (povlakama) se upoređuju leksički u ASCII poretku. - 1. Numerički identifikatori uvek imaju nizi prioritet od nenumeričkih + 1. Numerički identifikatori uvek imaju niži prioritet od nenumeričkih identifikatora. - 1. Veći skup oznaka predizdanja ima visi prioritet od manjeg skupa, ako su svi prethodni + 1. Veći skup oznaka predizdanja ima viši prioritet od manjeg skupa, ako su svi prethodni identifikatori jednaki. Primer: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < @@ -198,13 +196,13 @@ definicije gore navedenih ideja, postaje lako preneti svoje namere korisnicima vašeg softvera. Jednom kada su ove namere jasne, fleksibilne (ali ne previše fleksibilne) specifikacije zavisnosti konačno je moguće napraviti. -Jednostavan primer može pokazati kako pakao zavisnosti uz Semantičko Verzionisanje ostaje stvar prošlosti. Zamislite library (biblioteku) pod nazivom "Vatrogasno_vozilo". Neophodan joj je Semantičko Verzionisani pod nazivom "Merdevine". U trenutku kreiranja Vatrogasno_vozilo, Merdevine su u verziji 3.1.0. Pošto Vatrogasno_vozilo koristi neke funkcije prvobitno uvedene -u 3.1.0, možete bezbedno specifikovati zavisnost od Merdevine kao veću ili jednaku 3.1.0, ali manju od 4.0.0. Sada, kada Merdevine verzije 3.1.1 i 3.2.0 postaju dostupne, možete ih uneti u svoj sistem upravljanja paketima i biti siguni da će biti kompatibilni sa postojećim zavisnim softverom. +Jednostavan primer može pokazati kako pakao zavisnosti uz Semantičko Verzionisanje ostaje stvar prošlosti. Zamislite library (biblioteku) pod nazivom "Vatrogasno_vozilo". Neophodan joj je Semantičko Verzionisani paket pod nazivom "Merdevine". U trenutku kreiranja Vatrogasno_vozilo, Merdevine su u verziji 3.1.0. Pošto Vatrogasno_vozilo koristi neke funkcije prvobitno uvedene +u 3.1.0, možete bezbedno specifikovati zavisnost od Merdevine kao veću ili jednaku 3.1.0, ali manju od 4.0.0. Sada, kada Merdevine verzije 3.1.1 i 3.2.0 postanu dostupne, možete ih uneti u svoj sistem upravljanja paketima i biti siguni da će biti kompatibilni sa postojećim zavisnim softverom. -Kao odgovoran programer, vi ćete, naravno, želeti da verifikujete da li upgrade (nadgradnje) paketa funkcionišu kako je navedeno. Stvarni svet je mahom neuredjeno mesto; ne možemo ništa uraditi povodom toga osim da budemo oprezni. +Kao odgovoran programer, vi ćete, naravno, želeti da verifikujete da li upgrade (nadgradnje) paketa funkcionišu kako je navedeno. Stvarni svet je mahom neuređeno mesto; ne možemo ništa uraditi povodom toga osim da budemo oprezni. Ono što možemo uciniti je da usvojimo Semantičko Verzionisanje koje nam pruža razuman način za objavljivanje i nadogradnju paketa, bez potrebe za pokretanjem novih verzija zavisnih paketa, štedeći vreme i trud. -Ako vam ovo zvuči poželjno, sve što je potrebno uraditi da biste počeli da koristite Semantičko Verzionisanje je da se deklariste kao korisnik i da potom +Ako vam ovo zvuči poželjno, sve što je potrebno uraditi da biste počeli da koristite Semantičko Verzionisanje je da se deklarišete kao korisnik i da potom sledite pravila. Linkujte ovaj website sa vašim README-ma tako da bi i drugi bili svesni pravila i mogu imati koristi od njih. FAQ @@ -244,7 +242,7 @@ potrebno je ispraviti grešku pa objaviti minor (manju) verziju koja će ispravi ### Šta činiti ukoliko izmenimo sopstvene zavisnosti bez promene public (javnog) API-ja? Takve izmene smatramo kompatibilnima jer ne utiču na public (javni) API. Softver koji -eksplicitno zavisi od istih zavisnosti kao i naš sopstveni paket treba imati vlastite specifikacije zavisnosti, a autor će se primetiti eventualne konflikte. Je li promjena na nivou patch (zakrpe) ili minor (manje) verzije, zavisi od toga da li ste dodavali svoje zavisnosti kao ispravke bagova (gresaka) ili ste ih uveli kao nove funkcionalnosti. U posljednjem slučaju +eksplicitno zavisi od istih zavisnosti kao i naš sopstveni paket treba imati vlastite specifikacije zavisnosti, a autor će primetiti eventualne konflikte. Je li promjena na nivou patch (zakrpe) ili minor (manje) verzije, zavisi od toga da li ste dodavali svoje zavisnosti kao ispravke bug-ova (grešaka) ili ste ih uveli kao nove funkcionalnosti. U posljednjem slučaju možemo očekivati i dodatni kod, pri čemu se očigledno radi o inkrementu minor (manje) verzije. ### Šta ukoliko slučajno izmenimo public (javni) API na način koji ne odgovara izmeni broja verzije (npr. u kod neispravno uvedemo veću unazad nekompatibilnu izmenu u okviru objave patch (zakrpe))? @@ -257,8 +255,8 @@ izmene važne za vaše korisnike, koristite broj verzije da biste ih informisali ### Kako postupati sa deprecating (zastarelim) funkcionalnostima? -Postojeće funkcionalnosti koje zastarijevaju, sastavni su deo razvoja softvera -i često su neophodne kako bi razvoj napredovao. Kad označavate deo public(javnog) APIja kao deprecated (zastareli), potrebno je učiniti dve stvari: (1) ažurirati dokumentaciju kako bismo informisali korisnike, (2) objaviti novu minor (manju) verziju sa definisanim deprecated (zastareli) delovima softvera. Pre nego što potpuno uklonite funkcionalnost u novoj major (glavnoj) verziji, potrebno je izdati barem jednu minor (manju) verziju koja sadrži deprecated (zastarele) delove, kako bi korisnici nesmetano prešli na novu verziju API-ja. +Postojeće funkcionalnosti koje zastarevaju, sastavni su deo razvoja softvera +i često su neophodne kako bi razvoj napredovao. Kad označavate deo public (javnog) API-ja kao deprecated (zastareli), potrebno je učiniti dve stvari: (1) ažurirati dokumentaciju kako bismo informisali korisnike, (2) objaviti novu minor (manju) verziju sa definisanim deprecated (zastarelim) delovima softvera. Pre nego što potpuno uklonite funkcionalnost u novoj major (glavnoj) verziji, potrebno je izdati barem jednu minor (manju) verziju koja sadrži deprecated (zastarele) delove, kako bi korisnici nesmetano prešli na novu verziju API-ja. ### Ima li SemVer ograničenu veličinu stringa verzije? @@ -276,7 +274,7 @@ taga (oznake), a semantička verzija je "1.2.3". ### Da li postoji predloženi regularni izraz (RegEx) za proveru SemVer stringa? Postoje dva. Jedan sa imenovanim grupama za one sisteme koji ih podržavaju -(PCRE [Perl kompatibilni regularni izrazi, tj. Perl, PHP i R], , Python +(PCRE [Perl Compatible Regular Expressions (Perl kompatibilni regularni izrazi), tj. Perl, PHP i R], Python i Go). Pogledajte: @@ -285,10 +283,10 @@ Pogledajte: ^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ ``` -And one with numbered capture groups instead (so cg1 = major, cg2 = minor, -cg3 = patch, cg4 = prerelease and cg5 = buildmetadata) that is compatible -with ECMA Script (JavaScript), PCRE (Perl Compatible Regular Expressions, -i.e. Perl, PHP and R), Python and Go. +I drugi sa numerisanim grupama (znači ng1 = major (glavna), ng2 = minor (manja), +ng3 = patch (zakrpa), ng4 = prerelease (predizdanje) i ng5 = buildmetadata (metapodaci)) koji su kompatibilni +sa ECMA Script (JavaScript), PCRE [Perl Compatible Regular Expressions (Perl kompatibilni regularni izrazi), +tj. Perl, PHP i R], Python i Go. Pogledajte: diff --git a/lang/sr/spec/v2.0.0.md b/lang/sr/spec/v2.0.0.md index fd4f0247..b666b698 100644 --- a/lang/sr/spec/v2.0.0.md +++ b/lang/sr/spec/v2.0.0.md @@ -14,9 +14,9 @@ Za dati broj verzije MAJOR.MINOR.PATCH, inkrementirajte: 1. MAJOR (GLAVNU) verziju kada unesete nekompatibilne izmene API-ja 1. MINOR (MANJU) verziju kada dodate unazad kompatibilnu funkcionalnost -1. PATCH (ZAKRPU) verziju kada dodate unazad kompatibilne ispravke bugova (grešaka) +1. PATCH (ZAKRPU) verziju kada dodate unazad kompatibilne ispravke bug-ova (grešaka) -Dodatne oznake za predizdanja i metapodatke builda (izrade) dostupne su kao proširenja +Dodatne oznake za predizdanja i metapodatke build-a (izrade) dostupne su kao proširenja u formatu MAJOR.MINOR.PATCH. Uvod @@ -42,7 +42,7 @@ softveru. Kako bi ovaj sistem funkcionisao, neophodno je prvo objaviti public (j Možemo to primeniti u dokumentaciji ili u samom kodu. U svakom slučaju, važno je da API bude jasan i precizan. Jednom kad identifkujemo public API, izmene prenosimo kroz specifikovane inkrementacije broja verzije. -Razmotrimo format verzije X.Y.Z (Major.Minor.Patch). Ispravke bugova (grešaka) koji +Razmotrimo format verzije X.Y.Z (Major.Minor.Patch). Ispravke bug-ova (grešaka) koji ne utiču na API inkrementiraju patch (zakrpa) verziju, a unazad nekompatibilne promene API-ju inkrementiraju major (glavnu) verziju. Ovaj sistem nazivamo „Semantičko Verzionisanje“. Prema ovoj šemi, brojevi verzija @@ -51,7 +51,7 @@ i način na koji se menjaju daju informacije o osnovnom kodu koji se nalazi pod Specifikacija Semantičkog Verzionisanja (SemVer) ------------------------------------------------ -Ključne reči "MUST" ("MORA"), "MUST NOT" ("NE SME"), "REQUIRED ("NEOPHODNO"), "SHALL"("HOĆE"), "SHALL NOT" ("NEĆE"),"SHOULD" ("TREBA"), "SHOULD NOT" ("NE TREBA"), "RECOMMENDED" ("PREPORUČENO"), "MAY" ("MOŽE") i "OPTIONAL" ("OPCIONO") ovom dokumentu treba tumačiti kako je opisano u [RFC 2119](https://tools.ietf.org/html/rfc2119). +Ključne reči "MUST" ("MORA"), "MUST NOT" ("NE SME"), "REQUIRED ("NEOPHODNO"), "SHALL"("HOĆE"), "SHALL NOT" ("NEĆE"),"SHOULD" ("TREBA"), "SHOULD NOT" ("NE TREBA"), "RECOMMENDED" ("PREPORUČENO"), "MAY" ("MOŽE") i "OPTIONAL" ("OPCIONO") u ovom dokumentu treba tumačiti kako je opisano u [RFC 2119](https://tools.ietf.org/html/rfc2119). 1. Softver koji koristi Semantičko Verzionisanje MUST (MORA) objaviti publlic (javni) API. Ovaj API može biti deklarisan u samom kodu ili postojati striktno u dokumentaciji. U svakom slučaju, SHOULD (TREBA) da bude precizan i sveobuhvatan. @@ -70,30 +70,28 @@ u svakom trenutku. Ovaj public (javni) API SHOULD NOT (NE TREBA) smatrati stabil 1. Verzija 1.0.0 definiše public (javni) API. Način na koji će se oznaka verzije inkrementirati nakon ove objave zavisi od ovog public (javnog) API-ja i izmena na njemu. -1. Patch (zakrpa) verzija Z (x.y.Z | x > 0) MUST (MORA) se inkrementirati kada se dodaju samo unazad kompatibilne ispravke bagova (gresaka). Ispravke bugova (gresaka) su definisane kao promene koda +1. Patch (zakrpa) verzija Z (x.y.Z | x > 0) MUST (MORA) se inkrementirati kada se dodaju samo unazad kompatibilne ispravke bug-ova (gresaka). Ispravke bug-ova (gresaka) su definisane kao promene koda koje ispravljaju nepravilno ponašanje. -1. Minor (manja) verzija Y (x.Y.z | x > 0) MUST (MORA) se inkrementirati ako je nova, unazad kompatibilna funkcionalnost uvedena u javni API. Takođe MUST (MORA) se inkrementirati kada se neka od funkcionalnosti API-ja označi kao deprecated (zastarela).MAY (MOŽE) biti inkrementirana ukoliko se uvedu substancijalno nove funkcionalnosti ili poboljšanja u okviru privatnog koda. MAY (MOŽE) uključivati promene nivoa zakrpe -PATCH (ZAKRPA) verzija MUST (MORA) se resetovati na 0 kada se minor (manja) verzija inkrementira. +1. Minor (manja) verzija Y (x.Y.z | x > 0) MUST (MORA) se inkrementirati ako je nova, unazad kompatibilna funkcionalnost uvedena u javni API. Takođe MUST (MORA) se inkrementirati kada se neka od funkcionalnosti API-ja označi kao deprecated (zastarela). MAY (MOŽE) biti inkrementirana ukoliko se uvedu substancijalno nove funkcionalnosti ili poboljšanja u okviru privatnog koda. MAY (MOŽE) uključivati promene nivoa patch (zakrpe). Patch (Zakrpa) verzija MUST (MORA) se resetovati na 0 kada se minor (manja) verzija inkrementira. 1. Major (glavna) verzija X (X.y.z | X > 0) MUST (MORA) se inkrementirati ako se unazad nekompatibilne promene uvode u javni API. MAY (MOŽE) uključivati i promene minor (manje) i promene na nivou patch (zakrpe) verzije. Patch (zakrpe) i minor (manje) verzije MUST (MORA) da se resetuju na 0 kada se major (glavna) verzija inkrementira. -1. Verzija predizdanja MAY (MOŽE) biti označena dodavanjem hyphena (povlake) i serijom identifikatora razdvojenih tačkom neposredno nakon patch (zakrpe) verzije.Identifikatori MUST (MORAJU) sadržati samo ASCII alfanumeričke znakove i hyphene (povlake) -[0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) biti prazni. Numerički identifikatori MUST NOT (NE SMEJU) počinjati nulom. Verzije predizdanja imaju niži prioritet od povezane normalne verzije. Verzija predizdanja označava da je verzija nestabilna i da možda neće biti zadovoljeni predviđeni zahtevi kompatibilnosti kao što je označeno njegovim povezanim -normalnim verzijama. Primeri: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, +1. Verzija predizdanja MAY (MOŽE) biti označena dodavanjem hyphen-a (povlake) i serijom identifikatora razdvojenih tačkom neposredno nakon patch (zakrpe) verzije. Identifikatori MUST (MORAJU) sadržati samo ASCII alfanumeričke znakove i hyphen-e (povlake) +[0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) biti prazni. Numerički identifikatori MUST NOT (NE SMEJU) počinjati nulom. Verzije predizdanja imaju niži prioritet od povezane normalne verzije. Verzija predizdanja označava da je verzija nestabilna i da možda neće biti zadovoljeni predviđeni zahtevi kompatibilnosti kao što je označeno njenom povezanom normalnom verzijom. Primeri: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92, 1.0.0-x-y-z.\-\-. -1. Metadata (metapodaci) builda (izrade) MAY (MOGU) biti označeni dodavanjem znaka plus -i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zakrpu) verziju ili verziju predizdanja. Identifikatori MUST (MORAJU) da sadrže iskljucivo ASCII alfanumeričke znakove i hyphene (povlake) [0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) da budu prazni. Metadata (metapodaci) o buildu (izgradnji) MUST (MORAJU) se zanemariti prilikom određivanja prioriteta verzije. Prema tome dve verzije koje se razlikuju samo u metapodacima builda (izrade), imaju isti prioritet. Primeri: +1. Metadata (metapodaci) build-a (izrade) MAY (MOGU) biti označeni dodavanjem znaka plus +i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zakrpu) verziju ili verziju predizdanja. Identifikatori MUST (MORAJU) da sadrže iskljucivo ASCII alfanumeričke znakove i hyphen-e (povlake) [0-9A-Za-z-]. Identifikatori MUST NOT (NE SMEJU) da budu prazni. Metadata (metapodaci) o build-u (izgradnji) MUST (MORAJU) se zanemariti prilikom određivanja prioriteta verzije. Prema tome dve verzije koje se razlikuju samo u metapodacima build-a (izrade), imaju isti prioritet. Primeri: 1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85, 1.0.0+21AF26D3\-\-\-\-117B344092BD. 1. Prioritet se odnosi na način kojim se verzije u poretku međusobno upoređuju. - 1. Prioritet se MUST (MORA) izračunati odvajanjem verzije na major (glavne), - minor (manje), patch (zakrpe) i identifikatora predizdanja (metadata (metapodaci) builda (izrade) nemaju ulogu u odredjivanju prioriteta). + 1. Prioritet se MUST (MORA) izračunati razdvajanjem verzije na major (glavne), + minor (manje), patch (zakrpe) i identifikatore predizdanja (metadata (metapodaci) build-a (izrade) nemaju ulogu u određivanju prioriteta). 1. Prioritet se određuje prvom razlikom kada se upoređuje svaki od identifikatora sa leva na desno: major (glavni), minor (manji) i patch (zakrpa). Verzije se uvek upoređuju brojčano. @@ -110,13 +108,13 @@ i niza identifikatora odvojenih tačkom, koji se odmah nastavljaju na patch (zak 1. Identifikatori koji se sastoje samo od cifara upoređuju se numerički. - 1. Identifikatori sa slovima ili hyphenima (povlakama) se upoređuju leksički u ASCII + 1. Identifikatori sa slovima ili hyphen-ima (povlakama) se upoređuju leksički u ASCII poretku. - 1. Numerički identifikatori uvek imaju nizi prioritet od nenumeričkih + 1. Numerički identifikatori uvek imaju niži prioritet od nenumeričkih identifikatora. - 1. Veći skup oznaka predizdanja ima visi prioritet od manjeg skupa, ako su svi prethodni + 1. Veći skup oznaka predizdanja ima viši prioritet od manjeg skupa, ako su svi prethodni identifikatori jednaki. Primer: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < @@ -198,13 +196,13 @@ definicije gore navedenih ideja, postaje lako preneti svoje namere korisnicima vašeg softvera. Jednom kada su ove namere jasne, fleksibilne (ali ne previše fleksibilne) specifikacije zavisnosti konačno je moguće napraviti. -Jednostavan primer može pokazati kako pakao zavisnosti uz Semantičko Verzionisanje ostaje stvar prošlosti. Zamislite library (biblioteku) pod nazivom "Vatrogasno_vozilo". Neophodan joj je Semantičko Verzionisani pod nazivom "Merdevine". U trenutku kreiranja Vatrogasno_vozilo, Merdevine su u verziji 3.1.0. Pošto Vatrogasno_vozilo koristi neke funkcije prvobitno uvedene -u 3.1.0, možete bezbedno specifikovati zavisnost od Merdevine kao veću ili jednaku 3.1.0, ali manju od 4.0.0. Sada, kada Merdevine verzije 3.1.1 i 3.2.0 postaju dostupne, možete ih uneti u svoj sistem upravljanja paketima i biti siguni da će biti kompatibilni sa postojećim zavisnim softverom. +Jednostavan primer može pokazati kako pakao zavisnosti uz Semantičko Verzionisanje ostaje stvar prošlosti. Zamislite library (biblioteku) pod nazivom "Vatrogasno_vozilo". Neophodan joj je Semantičko Verzionisani paket pod nazivom "Merdevine". U trenutku kreiranja Vatrogasno_vozilo, Merdevine su u verziji 3.1.0. Pošto Vatrogasno_vozilo koristi neke funkcije prvobitno uvedene +u 3.1.0, možete bezbedno specifikovati zavisnost od Merdevine kao veću ili jednaku 3.1.0, ali manju od 4.0.0. Sada, kada Merdevine verzije 3.1.1 i 3.2.0 postanu dostupne, možete ih uneti u svoj sistem upravljanja paketima i biti siguni da će biti kompatibilni sa postojećim zavisnim softverom. -Kao odgovoran programer, vi ćete, naravno, želeti da verifikujete da li upgrade (nadgradnje) paketa funkcionišu kako je navedeno. Stvarni svet je mahom neuredjeno mesto; ne možemo ništa uraditi povodom toga osim da budemo oprezni. +Kao odgovoran programer, vi ćete, naravno, želeti da verifikujete da li upgrade (nadgradnje) paketa funkcionišu kako je navedeno. Stvarni svet je mahom neuređeno mesto; ne možemo ništa uraditi povodom toga osim da budemo oprezni. Ono što možemo uciniti je da usvojimo Semantičko Verzionisanje koje nam pruža razuman način za objavljivanje i nadogradnju paketa, bez potrebe za pokretanjem novih verzija zavisnih paketa, štedeći vreme i trud. -Ako vam ovo zvuči poželjno, sve što je potrebno uraditi da biste počeli da koristite Semantičko Verzionisanje je da se deklariste kao korisnik i da potom +Ako vam ovo zvuči poželjno, sve što je potrebno uraditi da biste počeli da koristite Semantičko Verzionisanje je da se deklarišete kao korisnik i da potom sledite pravila. Linkujte ovaj website sa vašim README-ma tako da bi i drugi bili svesni pravila i mogu imati koristi od njih. FAQ @@ -244,7 +242,7 @@ potrebno je ispraviti grešku pa objaviti minor (manju) verziju koja će ispravi ### Šta činiti ukoliko izmenimo sopstvene zavisnosti bez promene public (javnog) API-ja? Takve izmene smatramo kompatibilnima jer ne utiču na public (javni) API. Softver koji -eksplicitno zavisi od istih zavisnosti kao i naš sopstveni paket treba imati vlastite specifikacije zavisnosti, a autor će se primetiti eventualne konflikte. Je li promjena na nivou patch (zakrpe) ili minor (manje) verzije, zavisi od toga da li ste dodavali svoje zavisnosti kao ispravke bagova (gresaka) ili ste ih uveli kao nove funkcionalnosti. U posljednjem slučaju +eksplicitno zavisi od istih zavisnosti kao i naš sopstveni paket treba imati vlastite specifikacije zavisnosti, a autor će primetiti eventualne konflikte. Je li promjena na nivou patch (zakrpe) ili minor (manje) verzije, zavisi od toga da li ste dodavali svoje zavisnosti kao ispravke bug-ova (grešaka) ili ste ih uveli kao nove funkcionalnosti. U posljednjem slučaju možemo očekivati i dodatni kod, pri čemu se očigledno radi o inkrementu minor (manje) verzije. ### Šta ukoliko slučajno izmenimo public (javni) API na način koji ne odgovara izmeni broja verzije (npr. u kod neispravno uvedemo veću unazad nekompatibilnu izmenu u okviru objave patch (zakrpe))? @@ -257,8 +255,8 @@ izmene važne za vaše korisnike, koristite broj verzije da biste ih informisali ### Kako postupati sa deprecating (zastarelim) funkcionalnostima? -Postojeće funkcionalnosti koje zastarijevaju, sastavni su deo razvoja softvera -i često su neophodne kako bi razvoj napredovao. Kad označavate deo public(javnog) APIja kao deprecated (zastareli), potrebno je učiniti dve stvari: (1) ažurirati dokumentaciju kako bismo informisali korisnike, (2) objaviti novu minor (manju) verziju sa definisanim deprecated (zastareli) delovima softvera. Pre nego što potpuno uklonite funkcionalnost u novoj major (glavnoj) verziji, potrebno je izdati barem jednu minor (manju) verziju koja sadrži deprecated (zastarele) delove, kako bi korisnici nesmetano prešli na novu verziju API-ja. +Postojeće funkcionalnosti koje zastarevaju, sastavni su deo razvoja softvera +i često su neophodne kako bi razvoj napredovao. Kad označavate deo public (javnog) API-ja kao deprecated (zastareli), potrebno je učiniti dve stvari: (1) ažurirati dokumentaciju kako bismo informisali korisnike, (2) objaviti novu minor (manju) verziju sa definisanim deprecated (zastarelim) delovima softvera. Pre nego što potpuno uklonite funkcionalnost u novoj major (glavnoj) verziji, potrebno je izdati barem jednu minor (manju) verziju koja sadrži deprecated (zastarele) delove, kako bi korisnici nesmetano prešli na novu verziju API-ja. ### Ima li SemVer ograničenu veličinu stringa verzije? @@ -276,7 +274,7 @@ taga (oznake), a semantička verzija je "1.2.3". ### Da li postoji predloženi regularni izraz (RegEx) za proveru SemVer stringa? Postoje dva. Jedan sa imenovanim grupama za one sisteme koji ih podržavaju -(PCRE [Perl kompatibilni regularni izrazi, tj. Perl, PHP i R], , Python +(PCRE [Perl Compatible Regular Expressions (Perl kompatibilni regularni izrazi), tj. Perl, PHP i R], Python i Go). Pogledajte: @@ -285,10 +283,10 @@ Pogledajte: ^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ ``` -And one with numbered capture groups instead (so cg1 = major, cg2 = minor, -cg3 = patch, cg4 = prerelease and cg5 = buildmetadata) that is compatible -with ECMA Script (JavaScript), PCRE (Perl Compatible Regular Expressions, -i.e. Perl, PHP and R), Python and Go. +I drugi sa numerisanim grupama (znači ng1 = major (glavna), ng2 = minor (manja), +ng3 = patch (zakrpa), ng4 = prerelease (predizdanje) i ng5 = buildmetadata (metapodaci)) koji su kompatibilni +sa ECMA Script (JavaScript), PCRE [Perl Compatible Regular Expressions (Perl kompatibilni regularni izrazi), +tj. Perl, PHP i R], Python i Go. Pogledajte: