Systemy kontroli wersji
Dlaczego kontrola wersji?
repozytorium kodu (i nie tylko), kopie bezpieczeństwa
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
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.
Ankh SVN
)
Git - rozproszony (klonowanie repozytorium, master repository)
TFS Source Control - podobny w architekturze do SVN - domyślny w VS
Architektura
Scentralizowany (SVN, TFS)
Rozproszony (git)
Źródło:
http://git-scm.com
Kontrola wersji w VS
Workspace - kopia robocza
folder repozytorium (serwer)
folder lokalny (pliki podlegające rewizjonowaniu)
Workspace - mapowanie folderu serwera i lokalnego
Podstawowe operacje
Menu kontekstowe w Solution Explorer
Source Control Explorer
Synchronizacja plików
Check In
wysłanie lokalnej wersji do repozytorium (commit)
Get Latest Version
pobieranie najnowszej wersji plików (uwaga: nie nadpisuje lokalnych zmian)
Get Specific Version
pobieranie konkretnej wersji z historii (changeset, data, etykieta)
View Pending Changes
lista zmian naniesiona lokalnie i oczekująca na zatwierdzenie
Check Out for Edit
pobranie plików z repozytorium i zablokowanie dla innych użytkowników
Undo Pending Changes
cofanie zaplanowanych do zatwierdzenia zmian
View History
przeglądanie historii zmian
Zatwierdzanie zmian
Check In
zatwierdzanie zmian (commit) i wysłanie do serwera
Pending Changes
→ kolejny
Changeset
Pozostałe operacje
przeglądanie plików w repozytorium, dodawanie, usuwanie i zmiana nazwy i położenia plików i katalogów
Lock/unlock
- blokowanie plików i katalogów
rozwiązywanie konfliktów
porównanie różnych wersji plików i katalogów
tworzenie gałęzi (Branch) i łączenie gałęzi (Merge)
odkładanie na półkę (Shelve)
etykiety (labels) - wersje zamrożone
adnotacje (Annotate)
właściwości plików i katalogów
usuwanie zmian naniesionych w wybranych zestawach zmian (Rollback)
Dodawanie projektu programistycznego do TFS
File → New → Project
Add to Source Control
Operacje na zestawach zmian
lista plików i zmian w każdej wersji
porównywanie dowolnych wersji
pobieranie dowolnej wersji pliku
jakie zmiany w pliku naniósł dany użytkownik (Annotate)
historia zmian: rozdzielenia, łączenia, zmiany nazw, itp.
Porównanie wersji i plików
Konflikty
Niemożliwe do pogodzenia jednoczesne zmiany w tym samym miejscu
Domyślnie
AutoResolve All
Ręczne usuwanie konfliktów, wybór wersji lokalnej lub ostatniej z serwera
Rozgałęzienia
Gałęzie i etykiety (Branches and Labels)
Więcej informacji
Source control (MSDN)
git - fast version control
TFS Guide for Subversion Users