Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Просто когда у вас коммиты в мейнлайн идут часто, то починка проблемы путем отката последнего коммита лишает нас очень маленького куска функциональности (плюс, проблема очень легко локализуется). А бранчи (которые ведут к редким коммитам в мейнлайн) банально умножают время.
Автоматические тесты можно запустить и после мерджа. И пофиксить все упавшие тесты.
Стало быть, никакого «отсутствия гарантий» нет?
Если быть совсем точным
Да, это в среднем дороже. И это расплата за «стабильный мейнлайн».
Мейнлайн стабилен в любом случае.
Никто не запрещает синхронизировать ветки с mainline, как только в mainline попадают законченные изменения. Перед мержем с mainline никто не запрещает сначала синхронизироваться с оной и прогнать тесты.
Никто не запрещает интегрироваться между ветками, чтобы не накапливался эффект отложенной интеграции, если этот эффект способен вызвать big bang merge.
Любой существенный функционал или рефакторинг не выполнишь за день, частые коммиты таких работ в mainline дестабилизирует его на срок до окончания разработки этого функционала или окончания рефакторинга.
Еще раз повторю что обмениваться лучше законченными изменениями но при этом коммитить часто — при работе mainline-only это проблематично.
Использование веток позволяет осуществлять параллельную разработку, что позволяет, заплатив определенную цену, обойти ограничения реального мира — например одновременную пост-релиз поддержку и добавление новых фич.
Стабильным считается состояние когда программа не содержит багов, которые ранее возникали.
Поэтому если Вы построили тесты, которые были написаны по мотивам найденных ранее багов пользователями или тестировщиками, то когда тесты будут успешно пройдены это даст Вам возможность говорить: «продукт стабильно работает»
Тестированием на работе занимаюсь. Поэтому интересоваться «стабильностью» мне по штату положено.
Он может быть развален только при merge с какой-либо фичей или багфиксом.
Этот термин в голове сам появляется после года тестирования. Рекомендую почитать книгу Коннера про тестирование
Основное допущение: general-default-repositary-url это репозитарий для «скачивания» всеми, но заливать должны только «тестировщики» или ответственные за фичу, которые смогут гаррантировать что их мержи не развалят, которые все что нужно сделали на своих локальных машинах или отдали URL-ы на репозитарии со своих машин, чтобы тестировщики их забрали и протестировали.
Напишите, пожалуйста, по-подробнее о том как этот термин, стабильность, может иметь другое значение для тестировщика и разработчика или руководителя проектов?!
Все! На верху будет та ревизия кода, которая проходит тесты.
Попытаюсь пояснить мысль еще раз:
Ваши комиты, никак, никаким образом, никакой магией не попадут в центральный репозитарий до тех пор, пока вы не сделаете «hg push»
hg push случится одно из двух: либо в центральном репозитории будет мерж с изменениями других разработчиков (следовательно, возможные ошибки), либо мой коммит не будет включать изменения других разработчиков (=они пропадут).А как вы будете контролировать совместимость этих отдельных компонент и основного продукта? Версионировать их будете отдельно или вместе?
А ещё у вас 10 клиентов, из которых 8 обновляются, а два — не обновляются, потому что у них такая политика.
Проще говоря, бранчи жизнеспособны только тогда, когда у вас есть административный ресурс, заставляющий всех мержиться не реже раза в день.
Это сложный вопрос, но мне кажется что примеры разработки open-source проектов говорят нам об обратном. Можно далеко не ходить и рассмотреть то, как появился Git и какая модель используется для разработки Linux.
Просто нужно понять, где та критическая величина проекта, после которой бранчинг будет уместен.
Основы использования бранчинга для параллельной разработки