Systémy pro správu verzí
Veškerá práce v týmu je podmíněna vhodnou komunikací a kooperativním přístupem jednotlivých členů. Čím větší tým a složitější projekt, tím obtížnější se komunikace a hlavně spolupráce stává. Z hlediska vývoje softwaru se naskýtají problémy spjaté s vícečetným výskytem kódu u více lidí současně. každý z nich většinou pracuje na jiným segmentu projektu, ale může se stát, že více lidí upravuje různým způsobem jeden a více souborů - vztaženo na web se může jednat např. o indexovou stránku.
Co s tím? Všichni tito programátoři by se museli domluvit a pracně zpracovat nově přidané části kódu, aby zamezili nechtěným chybám.
Verzování je uchovávání historie změn provedených v datech, nejčastěji ve zdrojových kódech softwaru. Zajišťuje udržování si přehledu v úpravách během vývoje a případně umožňuje navrácení se ke starším verzím. Systémy pro správu verzí evidují veškeré změny ve zdrojových souborech, autora změny, čas a velice často také povinně volitelný (v závislosti na softwaru) komentář změny.
Principem těchto programů je fyzická existence pracovní verze na počítači každého vývojáře, který zde může provádět jakékoliv změny. Tyto změny by měly být pravidelně potvrzovány (add) a umístěny do lokálního repozitáře (commit), nejlépe s výstižným popisem. V této době jsou veškeré změny pořád fyzicky pouze u daného programátora. Aby je poskytl ostatní spolupracovníkům, musí veškeré potvrzené změny nahrát (pull) do sdíleného repozitáře (tzv. remote repository) umístěného na nějaké platformě.
Fetch
Jedná se o stažení dat ze sdíleného repozitáře i s případnými změnami od spolupracovníků. Nezpůsobuje přepsání změn v lokální repozitáři.
Pull
Stáhne a rovnou zakombinuje (spojí) veškeré změny ze sdíleného repozitáře do lokálního. V tomto případě mohou vzniknout datové konflikty (merge conflict), kdy jsou současně provedeny změny v tentýž souborech z lokálního repozitáře a ve sdíleném. V tom případě je nutno veškeré konflikty projít a potvrdit, které změny se mají aplikovat.
V případě provedení důležitých změn v lokálním repozitáři se při pushnutí změn do sdíleného repozitáře může vyžádat tzv. pull request. Jedná se o indikaci toho, že ostatní spolupracovníci mají provést pull do svého lokálního repozitáře.
Git a Mercurial
Jedná se o dva nejvíce rozšířené systémy pro správu verzí. Oba dva vznikly v roce 2005 jako open source a oba dva mají větší množství klientů (resp. platformy), které lze využít pro správu verzí.
| Git | Mercurial |
|---|---|
| Bitbucket (Atlassian) Github Gitlab |
TortoiseHg MacMercurial SourceTree |
.gitignore
Jedná se o prostý textový soubor, který obsahuje soubory či složky, které nemají být sledovány. Ty budou při akcích add a commit ignorovány, tudíž nebudou nahrány na sdílený repozitář. Defaultně obsahuje časté výskyty knihoven a grameworků, které je možné nainstalovat pomocí "balíkovači", např Composer.
Obdobný soubor u repozitáře typu Mercurial je .hgignore.