→ Slide 1

Systemy kontroli wersji

↓ Slide 2

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
↓ Slide 3

Trunk/branch/tag

  • wersja rozwojowa (trunk)
  • wersja zamrożona (tags, label)
  • odgałęzienia (branches)
↓ Slide 4

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
↓ Slide 5

Architektura

Scentralizowany (SVN, TFS) Rozproszony (git)
Zcentralizowany system kontroli wersji

Źródło: http://git-scm.com

→ Slide 6
↓ Slide 7

Workspace - kopia robocza

  1. folder repozytorium (serwer)
  2. folder lokalny (pliki podlegające rewizjonowaniu)
  3. Workspace - mapowanie folderu serwera i lokalnego

↓ Slide 8

Podstawowe operacje

  • Menu kontekstowe w Solution Explorer

↓ Slide 9

Source Control Explorer

↓ Slide 10

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
↓ Slide 11

Zatwierdzanie zmian

  • Check In zatwierdzanie zmian (commit) i wysłanie do serwera
  • Pending Changes → kolejny Changeset
↓ Slide 12

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)
→ Slide 13
  • File → New → Project
  • Add to Source Control

↓ Slide 14

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.
↓ Slide 15

Porównanie wersji i plików

↓ Slide 16

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

↓ Slide 17

Rozgałęzienia

  • Gałęzie i etykiety (Branches and Labels)

→ Slide 18