Eksplorowanie kontroli źródła i kontroli wersji
Korzystanie ze źródła i kontroli wersji jest podstawową praktyką metodyki DevOps. Jest to również warunek wstępny dla takich rozwiązań, jak ciągła integracja i infrastruktura jako kod, które mają kluczowe znaczenie dla osiągnięcia pełnego potencjału metodyki DevOps. Organizacja w naszym przykładowym scenariuszu powinna przejrzeć bieżącą strategię tworzenia oprogramowania i przejść do rozproszonego modelu kontroli wersji, takiego jak Git, szczególnie biorąc pod uwagę plany korzystania z usługi GitHub na potrzeby zarządzania cyklem życia oprogramowania. Wymaga to jednak solidnego zrozumienia zasad kontroli wersji i źródła oraz ich korzyści, które omówimy tutaj.
Kontrola źródła i kontrola wersji
Terminy kontrola źródła i kontrola wersji są często używane zamiennie, a w wielu kontekstach odnoszą się one do tej samej koncepcji. Ogólnie rzecz biorąc, oba te elementy są związane z praktyką zarządzania zmianami w kodzie w udostępnionym środowisku projektowym. Można jednak napotkać bardziej zniuansowane scenariusze, w których ich znaczenie jest nieco inne. W tych scenariuszach kontrola źródła wyznacza system, który zarządza zmianami w plikach kodu źródłowego, podczas gdy kontrola wersji obejmuje zarządzanie zmianami dowolnego typu plików w celach wykraczających poza sam kod źródłowy. W przyszłości, ze względu na spójność, będziemy używać terminu kontrola wersji do reprezentowania opartych na usłudze Git repozytoriów wspólnego oprogramowania dostępnych w usługach GitHub i Azure DevOps.
Jakie są zalety kontroli wersji?
Kontrola wersji śledzi zmiany w plikach w ramach swojego zakresu zarządzania. Oferuje to szeroką gamę korzyści:
Śledzenie historii i wersji: masz możliwość przeglądania historii zmian w dowolnym pliku, w tym możliwości określenia, kiedy każda zmiana miała miejsce i jaki był ich zakres. Zapewnia to również możliwość śledzenia, zazwyczaj przez skojarzenie każdego zestawu zmian z unikatowym identyfikatorem.
Wycofywanie i odzyskiwanie: jeśli wystąpi błąd lub problem, możesz łatwo przywrócić zmiany w celu odzyskania znanej, działającej wersji pliku, której dotyczy problem.
Rozgałęzianie i scalanie: jeśli chcesz rozszerzyć funkcjonalność bieżącego kodu przez dodanie innej funkcji lub naprawienie nowo wykrytej usterki, możesz utworzyć tak zwaną gałąź, która umożliwia niezależne działanie względem istniejącej bazy kodu. Nowa gałąź jest początkowo identyczna z gałęzią główną hostująca bieżący kod. Po zakończeniu zmian scalasz nową gałąź z gałęzią główną. Chociaż nadal może to prowadzić do konfliktów (jeśli inny deweloper zdecydował się zmodyfikować ten sam zestaw plików w międzyczasie za pośrednictwem innej gałęzi), ich zakres jest ograniczony i zazwyczaj można je łatwo zidentyfikować i rozwiązać.
Współpraca i programowanie równoległe: Postanowienia dotyczące rozwiązywania konfliktów, uzupełnione przez rozgałęzianie i scalanie, ułatwiają pracę wielu programistom nad tą samą bazą kodu, co zwiększa wydajność. W przypadku systemów kontroli rozproszonej, takich jak Git, można nawet utworzyć kod w trybie rozłączenia. Współpraca obejmuje również wzajemne przeglądy żądań ściągnięcia, promowanie udostępniania wiedzy i przejrzystości.
Automatyzacja: Kontrola wersji jest istotną częścią ciągłej integracji i zautomatyzowanych wdrożeń. Automatyczne kompilowanie i testowanie można wyzwalać automatycznie za każdym razem, gdy nowa wersja kodu zostanie wypchnięta do repozytorium kontroli wersji lub scalona z gałęzią główną. Różne wersje kodu można wdrożyć w różnych środowiskach.