Автоматическое удаление веток при выполнении запросов на включение

Моя компания использует VSTS с git. Когда я выполняю запрос на вытягивание в ветку разработки в VSTS, флажок для удаления ветки функций устанавливается автоматически, но он не будет удален, если я не изменю разрешения в ветке функций, чтобы разрешить группе пользователей администраторов, которой я являюсь. член Переписать и уничтожить историю (сила толчка).

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


person Eric    schedule 11.11.2016    source источник
comment
уничтожить историю для функциональной ветки. Нет такой вещи, как история ветки (хотя это распространенная ошибка). Ветки можно упростить до указателей на конкретные коммиты (в любом случае это то, что хранится в git): если я загляну внутрь файла .git/refs/heads/master, я получу a1781736795d91a44a4cd4557b06011c6dbba96e для одного из моих проектов (который является идентификатором коммита главной ветки сейчас включен)   -  person Simon L    schedule 12.11.2016
comment
Разрешение называется Переписать и уничтожить историю (принудительное нажатие). Я обновил свой вопрос, чтобы отразить это.   -  person Eric    schedule 12.11.2016


Ответы (3)


Разрешение на перезапись и уничтожение истории (принудительное нажатие) требуется для соответствующей ветки для удаления исходной ветки.

По умолчанию владелец ветки имеет право удалить ветку (новую ветку). Для других ветвей вы можете указать это разрешение для конкретных пользователей для определенных ветвей, не нужно указывать это разрешение для всей группы, после этого вам не нужно указывать разрешение каждый раз. (Выберите ветку, нажмите Добавить=>Добавить пользователя)

введите здесь описание изображения

В заключение, есть два способа сделать это: 1: создать ветки с помощью проверяющего запроса на извлечение. 2: Предоставьте разрешение на переписывание и удаление истории (принудительное нажатие) для рецензента запроса на извлечение.

person starian chen-MSFT    schedule 14.11.2016

ИМХО, я думаю, вы должны возложить ответственность за завершение запросов на включение на владельца ветки/создателя PR. Вы, наверное, уже знаете, что вы можете указать определенных людей (читай: ведущих разработчиков) как «обязательных» в PR и даже можете отфильтровать этих людей с автоматическим добавлением (мы используем группы людей) на основе каталога или области в изменяемой области репо.

Это позволит вам и другим вашим доверенным разработчикам просматривать внесенные изменения в код и не позволит создателю PR получить какой-либо код в ваши ветки develop или master без одобрения изменения уполномоченным лицом. Фактическое завершение PR — это всего лишь символическое действие. Настоящая полезная информация заключается в том, чтобы знать, кто утвердил запрос.

Предоставление владельцам веток и PR ответственности за их функциональные ветки и PR уменьшит вашу проблему с изменением разрешений ветки, чтобы вы (не владелец ветки) могли удалить ветку других лиц. Это также устранит проблему ошибочного удаления, поскольку владелец должен знать, когда функция будет завершена.

Также ИМХО, если функция не сделана, не сделана, она не должна получать PR.

Также обратите внимание, что удаление исходной ветки в AzDO не влияет на репозиторий локально, пока кто-то не выполнит git remote prune origin или пока выбранная IDE не сделает это периодически за них, поэтому, если функциональная ветвь удалена по ошибке, должна быть хотя бы одна скопируйте его где-нибудь на рабочей станции разработчика. Мы не используем опцию «периодически очищать мои пульты», и отчасти поэтому.

person Josh Gust    schedule 12.02.2019

Я сам не работал с VSTS, но в других хостерах git (gitlab и github) есть такая вещь, как «Защищенные ветки».

Для этих защищенных веток («мастер» и «разработка» в моем рабочем процессе) я перезаписываю разрешения, чтобы не позволить разработчикам удалять эти ветки (они могут удалять другие ветки сколько угодно)

Изменить

Моя память была неисправна. Защищенные ветки нельзя удалить (с помощью git; их все еще можно удалить с помощью веб-страницы gitlab). Можно установить разрешения, позволяющие принимать запросы на слияние и отправлять в ветку (см. скриншот).Снимок экрана защищенных веток Gitlab

person Simon L    schedule 11.11.2016
comment
Это похоже на разрешения на ветку VSTS, вы только защита мастера и развития. Я бы хотел, чтобы был способ установить разрешения на основе контекста, чтобы у вас было разрешение, которое применялось бы только в контексте выполнения запроса на включение. - person Eric; 12.11.2016