Azure DevOps Repos

Azure Repos - przegląd

  • Azure Repos - zestaw narzędzi kontroli wersji do zarządzania kodem projektu, małego i dużego
  • kontrola wersji zapisuje kolejne migawki plików, dzięki czemu można wrócić do dowolnej wersji kodu i koordynować zmiany w zespole
  • dwa rodzaje kontroli wersji: Git (rozproszona) i Team Foundation Version Control (TFVC) (scentralizowana)
  • dostępne w Azure DevOps Services i w Azure DevOps Server
  • dla nowych projektów Git jest domyślnym wyborem

Git w Azure Repos

  • standardowy Git: można używać dowolnych klientów i narzędzi (Git dla Windows i macOS, usługi Git innych dostawców, Visual Studio, Visual Studio Code)
  • nieograniczona liczba prywatnych repozytoriów Git
  • integracja ze środowiskami: wiersz poleceń, Visual Studio Code, Visual Studio, Xcode, Eclipse, IntelliJ
  • powiązanie commitów, gałęzi i pull requestów z zadaniami w Azure Boards

Pull requesty i przegląd kodu

  • przegląd kodu w zespole przed scaleniem zmian: komentarze, głosowanie (zatwierdzenie, odrzucenie)
  • wymaganie, aby zmiany przechodziły build i testy, zanim zostaną scalone
  • powiązanie pull requesta z zadaniami (work items)
  • scalanie z opcją squash merge
  • obsługiwane modele pracy z gałęziami i pull requestami (Git branching guidance)

Polityki gałęzi

  • ochrona kluczowych gałęzi (np. głównej), na których zespół polega
  • wymaganie pull requesta do wprowadzania zmian: bezpośrednie wypchnięcia do chronionej gałęzi są odrzucane
  • dodatkowe warunki: poprawny build scalonego kodu (Build validation), akceptacja przez wielu recenzentów
  • uprawnienia do gałęzi (branch permissions) pozwalają ograniczyć, kto może wprowadzać zmiany

Status pull requesta

  • dodatkowe, własne wymagania wobec kodu (np. zewnętrzne kontrole jakości lub zgodności)
  • pull request status: zewnętrzna usługa programowo zatwierdza lub odrzuca zmianę przez zwrócenie informacji o sukcesie lub niepowodzeniu
  • status staje się częścią przepływu pull requesta i może być wymagany przez politykę gałęzi
  • przykładowe implementacje: własny serwer statusu (Node.js) lub Azure Functions

Forki

  • fork - pełna kopia repozytorium (pliki, commity, opcjonalnie gałęzie)
  • izolowanie zmian eksperymentalnych, ryzykownych lub poufnych od oryginalnego kodu
  • nowe pliki, foldery i gałęzie nie są współdzielone między repozytoriami, dopóki nie przeniesie ich pull request
  • po zakończeniu pracy zmiany wraca się do oryginalnego repozytorium przez pull request

Git i TFVC - porównanie

  • Team Foundation Version Control (TFVC)
    • scentralizowany: pełna historia zmian tylko na serwerze, lokalnie zazwyczaj jedna wersja każdego pliku
    • kontrola dostępu aż do poziomu pojedynczego pliku
    • gałęzie oparte na ścieżkach (path-based), tworzone na serwerze
  • git
    • rozproszony, każdy użytkownik posiada pełną kopię repozytorium
    • praca offline i lokalne zatwierdzanie zmian
    • większość operacji wykonywana lokalnie (szybkie działanie)
    • wygodny mechanizm tworzenia gałęzi
    • elastyczny, obsługuje różne modele pracy (workflow)

Git i TFVC - narzędzia

Rodzaj kontroli wersji Klienci i środowiska
Git wiersz poleceń, Visual Studio Code, Visual Studio, Xcode, Eclipse, IntelliJ
TFVC Visual Studio, Xcode, Eclipse

<fs x-small>Źródło: dokumentacja Microsoft Learn (Azure Repos)</fs>

Typowy workflow

  1. tworzymy nową gałąź (nowa funkcja, naprawa błędu, …)
  2. zmieniamy zawartość nowej gałęzi i zatwierdzamy zmiany (commit)
  3. po zakończeniu pracy wysyłamy gałąź do zdalnego repozytorium (push)
  4. tworzymy pull request: przegląd kodu, a polityki gałęzi wymuszają m.in. poprawny build, testy i akceptację recenzentów; do PR można powiązać zadania (work items)
  5. po zatwierdzeniu scalamy zmiany z gałęzią główną (np. squash merge), a następnie aktualizujemy lokalne kopie i rozwiązujemy ewentualne konflikty

Git Flow - A successful Git branching model

<fs x-small>Źródło: https://nvie.com/ </fs>

Azure Repos w ekosystemie Azure DevOps

  • Azure Boards: powiązanie zadań z commitami i pull requestami, tworzenie gałęzi z zadania
  • Azure Pipelines: polityka Build validation uruchamia build i testy dla pull requesta
  • DevSecOps: GitHub Advanced Security for Azure DevOps skanuje sekrety, zależności i kod w repozytoriach Git w Azure Repos
  • współpraca z GitHub i innymi dostawcami Git

Azure Repos i AI

  • Azure DevOps MCP Server daje asystentowi AI dostęp do pull requestów, ich zmian i powiązanych zadań
  • przykłady: lista pull requestów bez aktywności od ponad 5 dni, omówienie wpływu zmian z pull requesta na biznes, przygotowanie do przeglądu kodu
  • Copilot Autofix (public preview) proponuje poprawki podatności jako pull request
  • zmiany generowane przez AI podlegają tym samym politykom gałęzi i przeglądowi kodu

Więcej informacji