~~REVEAL~~
====== Systemy kontroli wersji ======
==== Dlaczego kontrola wersji? ====
* repozytorium kodu (i nie tylko), kopie bezpieczeństwa - możliwość wycofania zmian
* mechanizmy współdzielenia pracy dla 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
==== Trunk/branch/tag ====
{{https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Revision_controlled_project_visualization-2010-24-02.svg/255px-Revision_controlled_project_visualization-2010-24-02.svg.png?0x500}}
==== ====
* wersja rozwojowa (trunk)
* wersja zamrożona (tags, label)
* odgałęzienia (branches)
==== Repozytoria ====
* Subversion (SVN) - architektura klient-serwer (scentralizowany), obsługa z VS możliwa dzięki wtyczkom (np. {{https://ankhsvn.open.collab.net/|Ankh SVN}})
* Git - rozproszony (klonowanie repozytorium, master repository)
* 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 ====
* [[http://msdn.microsoft.com/en-us/library/ms364074.aspx|Source control (MSDN)]]
* [[http://git-scm.com/|git - fast version control]]
* [[http://blogs.msdn.com/b/edhintz/archive/2011/01/18/tfs-guide-for-subversion-users.aspx|TFS Guide for Subversion Users]]