Можно ли предотвратить Pull Requests из определенной ветки в TFS? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть общая ветка в TFS (т.е. многие люди нажимают на нее).Я хочу запретить людям открывать запрос на извлечение из этой общей ветки в любую другую ветку.

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

Мотивация

Учитывая # 1

ВTFS мы связываем рабочие элементы с коммитами.Однако мы не знаем, как обеспечить привязку отдельных коммитов к рабочим элементам.Мы знаем, как применять его для запроса на извлечение - с помощью политики ветвления.

Итак, мы не собираемся требовать от разработчиков связывать рабочие элементы с коммитами, только с запросом на извлечение.

Учитывая # 2

В TFS, если есть ожидающий запрос извлечения из какой-либо ветви, тогда автоматически добавляются любые новые коммиты, переданные в эту ветку или извлеченные в нее (через другой запрос извлечения)на невыполненный запрос на извлечение.См. Запретить TFS добавлять новые коммиты в открытый запрос извлечения?

Результат

Предположим, X - это ветвь с невыполненными Запрос на вытягивание PR1 на ветвь Y с 3 коммитами - c1, c2 и c3.

X --[PR1=<c1,c2,c3>]--> Y

Если новый коммит c4 вставляется в X через другой запрос на извлечение (скажем, PR2)

--[PR2=<c4>]--> X

, затем c4 автоматически добавляется к PR1:

X --[PR1=<c1,c2,c3,c4>]--> Y

Это означает, что после завершения PR1 c4 будет связано с рабочим элементомPR1.Итак, что мы имеем?В ветви X эта фиксация связана с PR2, а в ветви Y - с PR1.Оба запроса извлечения связаны с различными рабочими элементами.

Какой беспорядок.

Возможные способы предотвращения

  1. Принудительное связывание рабочих элементов на уровне фиксации. Помимо того факта, что у нас нет удобного способа его применения (кроме серверной ловушки, которая заставляет каждый комментарий заканчиваться на #XYZ, см. Первый совет в https://blog.ehn.nu/2015/10/10-features-in-team-foundation-server-that-you-maybe-didnt-know-about/),, это не решает проблемуползучесть области запросов на извлечение. Это может не быть проблемой для запросов на извлечение, которые автоматически разрешаются при сборке, но для тех, которые требуют одобрения человеком.
  2. Изменение поведения по умолчанию , т.е.Запрос на извлечение не будет принимать новые коммиты по умолчанию. И если коммиты в запросе на извлечение больше не находятся в исходной ветви, то запрос на извлечение автоматически отменяется. Увы, TFS не обеспечивает такой гибкости, и мы не знаем, как это сделать.можно сделать, если это вообще возможно.
  3. Запретить исходящие запросы извлечения из ветви. Мы знаем, что X является общей веткой, т. е. новые коммиты могутприбыть туда от разных участников наугад, что порождает проблему.Если бы не было способа открыть запрос на извлечение из X, у нас не было бы этой проблемы.Но тогда как вы сливаетесь из X в Y?Создайте частную ветвь вне X и объедините ее (конечно, с помощью запроса на извлечение).Но эта ветвь является частной, и поэтому нет никаких проблем.

Из всех предметов я чувствую, что с последним у нас больше всего повезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...