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
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
Kontrola wersji w VS
Workspace - kopia robocza
- folder repozytorium (serwer)
- folder lokalny (pliki podlegające rewizjonowaniu)
- Workspace - mapowanie folderu serwera i lokalnego
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)
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.
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