Что значит Cherry Picking в тестировании
Что значит Cherry Picking в тестировании | |
git cherry-pick | |
Когда использовать | |
Командное сотрудничество | |
Исправления ошибок | |
Отмена изменений | |
Похожие статьи |
Введение

Про команду git cherry-pick читайте чуть ниже ( перейти )
Cherry Picking - сбор вишенок - это процесс выбора из реализованных фич
тех, которые пойдут в ближайший релиз.
Когда это происходит: в том случае, если разработчам удалось создать
большое количество новых фич, но менеджмент считает, что не стоит
выкатывать сразу все.
Почему бы не выложить сразу все фичи:
- Усложнится поиск багов - больше новых фич значит сложее разобраться
- Может затянуться процесс тестирования - просто за счёт объёма
- Может не хватить фич на следующий релиз - например настаёт период отпусков и PM знает, что за следующий спринт будет сделано намного меньше

git cherry-pick
В git существует команда
git cherry-pick
Прочитать спецификацию можно здесь
git cherry-pick-это мощная команда, которая позволяет выбирать произвольные
коммиты Git по ссылке и добавлять их к текущей рабочей головке.
Простыми словаими: cherry-pick копирует определёные коммиты из одной ветки в другую. То есть вместо полного мерджа ветки в мастер, можно добавить только некоторые коммиты
Коммит который скопирован не удаляется из оригинальной ветки - в этом состоит различие со сбором настоящей вишни, которая, конечно, не остаётся на ветке.
git cherry-pick может быть полезен для отмены изменений.
Например, предположим, что коммит случайно сделан не в ту ветвь.
Вы можете переключиться на правильную ветвь и сделать туда черри-пик.
Если сделать черри пик и потом смерджить ветку из которой он был сделать - появится дубль черрипикнутого коммита.
Это может внести путаницу, если не все в курсе происходящего.
Когда использовать git cherry pick
git cherry-pick-полезный инструмент, но не всегда лучшая практика.
Сбор вишни может привести к дублированию коммитов, и во многих сценариях,
где сбор вишни будет работать, вместо этого предпочтительны традиционные слияния (merge).
С учетом сказанного git cherry-pick-это удобный инструмент для нескольких сценариев...
Командное сотрудничество
Часто команда находит отдельных членов, работающих в одном и том же коде или вокруг него.
Возможно, новая функция продукта имеет бэкэнд и фронтенд-компонент.
Возможно, существует некоторый общий код между двумя секторами продукта.
Возможно, бэкэнд-разработчик создает структуру данных, которую также должен
будет использовать фронтэнд.
Фронтенд-разработчик может использовать git cherry-pick для выбора коммита,
в котором была создана эта гипотетическая структура данных.
Этот выбор позволит разработчику frontend продолжить работу над своей частью проекта.
Исправления ошибок
При обнаружении ошибки важно как можно быстрее доставить исправление
конечным пользователям.
Например,предположим, что разработчик начал работу над новой функцией.
Во время разработки этой новой функции они выявляют уже существующую ошибку.
Разработчик делает коммит с исправлением этой ошибки.
Этот новый коммит с патчем может быть добавлен непосредственно в мастер,
чтобы исправить ошибку, прежде чем она повлияет на большее количество пользователей.
Также может возникнуть ситуация когда ошибку нашли в более поздней версии продукта, а добавить фикс нужно в несколько предыдущих версий, которые ещё не вышли из употребления.
Отмена изменений и использование коммитов из уже неактивных веток
Иногда ветвь функции может устареть и не слиться с мастером.
Иногда запрос на вытягивание может быть закрыт без слияния.
Git никогда не теряет эти коммиты, и с помощью таких команд, как git log и git reflog,
их можно найти и вернуть к жизни.
Как использовать git cherry pick
Чтобы продемонстрировать, как использовать git cherry-pick, предположим, что у нас есть репозиторий со следующим состоянием ветви:
a - b - c - d Master \ e - f - g Feature
использование git cherry-pick является прямым и может быть выполнено следующим образом:
git cherry-pick commitSha
В этом примере commitSha -это commit reference.
Нужный коммит можно найти с помощью git log.
git log --oneline
Лог из другой ветки можно изучить с помощью
git log имя_ветки --oneline
В этом примере мы хотим черрипикнуть commit `f` в master.
Сначала мы удостоверяемся, что работаем над master.
git checkout master
Затем мы выполняем cherry-pick следующей командой:
git cherry-pick f
После выполнения наша git history будет выглядеть так:
a - b - c - d - f Master \ e - f - g Feature
Коммит f был успешно черрипикнут в главную ветвь
Примеры git cherry pick
git cherry pick также может выполнен с различными опциями:
-edit
Передача опции -edit приведет к тому, что git запросит commit message перед применением операции cherry-pick
--no-commit
Опция --no-commit выполнит выбор вишни, но вместо того, чтобы сделать новый commit, она переместит содержимое цели в рабочий каталог текущей ветви.
--singoff
Опция --singoff из системы
добавит строку 'singoff' подпись в конец cherry-pick коммит сообщения
В дополнение к этим полезным опциям git cherry-pick также принимает различные
варианты стратегии слияния.
Подробнее об этих параметрах читайте в документации git merge strategies.
Кроме того, git cherry-pick также принимает ввод опций для разрешения конфликтов слияний,
включая опции: --abort --continue и --quit эти опции рассматриваются более подробно в
отношении git merge и git rebase.
Резюме
cherry-pick - это мощная и удобная команда, которая невероятно полезна в нескольких сценариях. cherry-pick не должен использоваться неправильно вместо git merge или git rebase. Команда журнала Git-это обязательно поможет найти обязуется сливки.
Автор статьи: Андрей ОлеговичТеория QA | |
Интеграционное тестирование | |
Bug Report | |
Latency | |
Тест ран | |
Тест план | |
Шаги | |
Will Not Fix | |
Где учиться на тестировщика | |
Интервью с тестировщиками |