@Meised

Как разработчики пользуются Git в компаниях?

Я начинающий программист, пользовался git для пары проектов, серьёзной пользы в маленьком проекте который пишу только я - не заметил. Про компании и нормальные проекты понятно, git там необходим. Но вот появился у меня вопрос, как разработчики пользуются git в условиях когда много кода, и много таких же разработчиков? Пример который я придумал: идёт разработка какого-то приложения, разработчик n1 меняет какой-то код, или пишет новый (не важно) , и для этого кода использует ранее созданную в проекте функцию/переменную/класс и т.д. у него всё прекрасно, всё работает, n1 сохраняет изменения, но тут программист n2 удаляет функцию которую он использовал, и тоже сохраняет изменения, в итоге кол n1 теперь не работает. Пример 2: программист n1 меняет какой-то код, программист n2 так же меняет этот же код, в итоге кто сохранит позже тот и победил. Были ещё примеры но я их забыл. Были ли у вас подобные случаи?
  • Вопрос задан
  • 1147 просмотров
Решения вопроса 1
@alexalexes
В серьезных компаниях невозможно состояние гонки релизов, которую вы описали.
Во-первых, информационная система используется не в одном экземпляре. Всегда есть как минимум продакшен экземпляр, предпродакшен и девелоп экземпляры системы. В предпродакшен и девелоп версии могут загружаться не только разные релизы кода, но и гонятся разный набор данных для отладки и тестирования.
К этим экземплярам и набору данных имеют доступ разные работники, с разным уровнем допуска и ответственностью. Рядовой разработчик не будет иметь доступ в продакшен и предпродакшен, для него вышестоящий работник сформирует девелоп версию и подготовит нужный набор данных, который нужен именно для решения его рабочей задачи. Также рядовой разработчик не будет иметь полный доступ к действиям в репозитории, он может действовать только в рамках своей дев ветки, никто ему не даст прав сливать в мастер.
Для каждой новой разработанной функции пишутся автоматические тесты, как минимум с одним тестом, что она включается, эти тесты пишет отдельный контингент работников.
Прежде чем код попадет в продакшен, он будет просмотрен вышестоящим работником, его функционал будет протестирован сначала на тестовых данных, потом на боевых, с каждого теста будут сняты метрики не только по возникающим ошибкам, но и по производительности.
Уже на основе всех этих данных и будет принято решение компетентным работником вливать ваш функционал в прод или нет. Вместе с этим будет принято решение на слияние в мастер в репозитории.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
xez
@xez
TL Junior Roo
Происходит это так:
Появляется задача реализовать какой-то функционал.
Разработчик создает ветку от мастера "Новая крутая фича" и делает там все что угодно. Создает новые функции, удаляет старые - все, что необходимо для реализации задачи.
В это время всем остальным он не мешает, т.к. ведет разработку в своей ветке.
Когда процесс разработки заверешен ветка "Новая крутая фича" мержится в мастер.
Ответ написан
Комментировать
@Everything_is_bad
Есть куча различных flow для работы с гитом, начни с поиска их в гугле. Кроме этого, в самих компания, могут быть приняты свои стандарты, как на основе известных flow, так и самостоятельно разработанные.
Ответ написан
Комментировать
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Как разработчики пользуются Git в компаниях?

Так, как определено в конкретных компания.
серьёзной пользы в маленьком проекте который пишу только я - не заметил.

Вы только что сами ответили на свой вопрос. [сложность_проекта] * [количество_разработчиков] = [сложность_разработки]
Ответ написан
Комментировать
1. Все вышеописанные изменения происходят в отдельных ветках (которые отличаются от основной ветки)

2. Перед релизом ветка должна быть слита с основной веткой (merge), при этом должны быть разрешены все конфликты и должны успешно проходить все тесты. И перед мержем код должен посмотреть и одобрить как минимум ещё 1 разработчик.

3. Релиз происходит только из основной ветки.

4. Профит. В продакшене всегда рабочий код.

Таким образом ситуация из примера 1 просто невозможна, а ситуация из примера 2 приведёт к конфликту при попытке слива и на самом деле победит первый, так как не ему этот конфликт разгребать.

Ради этого и придуман git и прочие VCS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы