~~NOCACHE~~
~~REVEAL theme=simple&size=1024x800~~
====== Systemy kontroli wersji ======
===== Dlaczego kontrola wersji? =====
* repozytorium kodu (i nie tylko) z historią zmian
* mechanizmy współdzielenia pracy członków zespołu, synchronizacja zmian
* śledzenie zmian w kodzie, porównywanie różnic w wersjach kodu, patche
* rozwój kolejnych wersji i gałęzi oprogramowania oraz mechanizmy łączenia ich
* historia rozwoju, dokumentacja zmian w kolejnych wersjach
* kopie bezpieczeństwa - możliwość wycofania zmian, powrotu do poprzedniego stanu
===== Historia zmian projektu =====
| **trunk** - wersja rozwojowa \\ **branches** - odgałęzienia \\ **tags** - wersja zamrożona (np. v.1.0) | {{zajecia:znd_2020_1:revision_control.png?200}}|
===== Repozytoria =====
* Subversion (SVN) - architektura klient-serwer (scentralizowana), \\ obsługa z VS możliwa dzięki wtyczkom (np. {{https://ankhsvn.open.collab.net/|Ankh SVN}})
* **Git** - architektura rozproszona, \\ repozytorium przechowuje pełną historię (klonowanie)
* **TFVC** - podobny w architekturze do SVN
===== Architektura =====
^ Scentralizowany (SVN, TFVC) ^ Rozproszony (git) ^
|{{http://git-scm.com/figures/18333fig0102-tn.png?300|Scentralizowany system kontroli wersji}} | {{http://git-scm.com/figures/18333fig0103-tn.png?300}}|\\
Źródło: http://git-scm.com
===== Kontrola wersji w VS =====
* **Team Foundation Version Control (TFVC)**
* scentralizowany, całe repozytorium znajduje się na jednym (zdalnym) serwerze
* kontrola dostępu aż do poziomu pojedynczego pliku
* rozgałęzienia to osobne katalogi
* **git**
* zdecentralizowany, każdy użytkownik posiada pełną kopię repozytorium
* można pracować lokalnie
* większość operacji wykonywana lokalnie (szybszy w działaniu od scentralizowanych)
* wygodny mechanizm tworzenia gałęzi
* elastyczny, możliwość wdrożenia różnych //workflow//
===== ======
^ [[source_control_tfs|TFVC]] ^ [[source_control_git|git]] ^
|{{https://i-msdn.sec.s-msft.com/dynimg/IC687893.png}}|{{https://i-msdn.sec.s-msft.com/dynimg/IC721397.png}}|
Źródło: http://msdn.microsoft.com
===== Więcej informacji =====
* [[https://docs.microsoft.com/en-us/azure/devops/user-guide/source-control?view=azure-devops|What is source control?]]
* [[http://git-scm.com/|git - fast version control]]
* [[git_vs|Git w Visual Studio i Azure Repos]]