Предотвращение неправильного слияния - PullRequest
0 голосов
/ 15 января 2019

Прямо сейчас на работе у нас есть разные ветки git для разных версий нашего продукта.Например: ветви с именами v1.0, v2.0, v3.0 и главная ветвь.

Различные клиенты используют разные версии, но новые функции объединяются только в ветвь последней версии и главную ветвь.Исправления, однако, все еще объединены в ветвях более низкой версии.Допустим, в v1.0 была обнаружена ошибка, тогда наш текущий рабочий процесс git:

  1. для создания ветви функций из v1.0,
  2. для исправления
  3. Слияние обратно в v1.0 и нажмите
  4. Слияние v1.0 с v2.0 и нажмите
  5. Слияние v2.0 с v3.0 и нажмите
  6. Слияние v3.0 в мастер и нажмите

Это приводит к тому, что исправления, найденные в более низких версиях, включаются во все версии продукта выше.

V3.0, таким образом, будет содержать все коммиты, которые v2.0 содержит, а также дополнительные функции, сделанные в версии v3.0.Master будет содержать все коммиты, которые содержит v3.0, плюс коммиты дополнительных функций для будущей версии продукта и т. Д.

Теперь у нас было несколько раз, когда люди делали слияние неправильно, вниз вместоснизу вверх.Таким образом, они объединили v3.0 в v2.0, например.Это вызывает огромные проблемы в том смысле, что всякий раз, когда существует новая версия продукта с исправлениями ошибок для клиентов на версии 2.0 программного обеспечения, они фактически получают версию 3.0.

На самом деле эти слияния довольно легко выполнить.неправильный путь, но последствия могут быть довольно значительными, особенно если неправильное слияние останется незамеченным в течение длительного времени.

Есть ли способ предотвратить слияние людей вниз в ветвях версий и только вверх?(То есть с v1.0 до v2.0 и т. Д.).

Я должен упомянуть, что мы не можем определить какие-либо пользовательские git-хуки на стороне сервера.

1 Ответ

0 голосов
/ 15 января 2019

Там - это один полностью надежный способ, который вы полностью исключили:

Я должен упомянуть, что мы не можем определить какие-либо пользовательские git-хуки на стороне сервера.

Без этого все, что у вас есть - ненадежные методы, зависящие от каждого пользователя.

Каждый пользователь может устанавливать свои или свои хуки. Вы можете настроить предварительные защелкивающиеся зацепки, чтобы убедиться, что вы не делаете то, что вам не нравится. Если каждый пользователь сделает это и при условии, что каждый пользователь также не обходит хуков, это предотвратит толчки, которые будут делать то, что вам не нравится.

Написание хуков не так просто, и, конечно, если кто-то не сможет установить хук, или установит его неправильно, или обойдет его, это не будет иметь никакого эффекта. Но это доступно.

(Нет ловушки перед слиянием, хотя есть ловушка после слияния. Вот почему я предложил крючок перед слиянием.)

...