Проблема с PRing из Hotfix в ветку Dev - PullRequest
0 голосов
/ 01 октября 2019

Мой опыт управления исходным кодом в основном относится к TFS, и я недавно присоединился к команде, работающей в GIT.

Похоже, у нас возникла проблема с нашими PR в нашей ветке разработчика, использующей стандартную систему Git Flow для всех исправлений и выпусков.

Иллюстрация проблемы:

СегодняВ качестве теста мы отрезаем ветку исправлений от мастера.

Сначала мы извлекли последний код из мастера

git checkout master
git pull

И затем мы обрезали ветку

"git checkout-b hotfixtest".

Затем я вообще не внес изменений в эту ветку исправлений иподтолкнул его к началу

git push origin hotfixtest

Затем я сделал пиар-запрос в Dev.

При этом azure devops отображает ветку исправлений и изменений dev и, похоже, указывает на то, что изменения существуют в нескольких файлах в dev.

Вот снимок экрана, чтобы проиллюстрировать то, что мы видим, когда левая сторона является исправлением, а правая часть - dev. Как видите, в dev было добавлено много строк, которых нет в исправлении.

enter image description here

Это проблема, с которой мы сталкиваемся.

Когда я затем вытаскиваю код ветви исправления и просматриваю его в Visual Studio, я вижу, что на самом деле файлы как в исправлении, так и в dev соответствуют правой части выше. Обе ветви содержат весь код даты.

Таким образом, загадка заключается в том, почему Git указывает, что файл отличается и изменяется, когда мы PR в dev.

Вот файл из исправления, показывающий, чтоон соответствует файлу в dev выше.

enter image description here

Редактирование / обновление:

Вот дополнительная информация. Мы нашли причину этой проблемы, но не уверены, что это правильно. Эта проблема возникает для нас каждый раз, когда мы сокращаем ветку релиза, следуя стандартной модели ветвления gitflow.

Вот что происходит.

Мы отключили ветку релиза от разработки при подготовке релиза.

Мы проверяем этот код, а затем объединяем его с master.

Теперь весь наш последний код переходит в мастер (скажем, 20 изменений файла).

Затем мы также объединяем эту ветку релиза с разработкой, чтобы любые исправленные ошибки, обнаруженные во время тестирования релиза, были объединены в dev.

В настоящее время изменения кода в master (20 файлов) намного больше, чем изменения кода, объединенные в dev, поскольку ветвь релиза была обрезана по dev и идентична на 99%. Только исправления ошибок, сделанные в релизе, объединяются в dev.

Теперь, если мы отключим исправление от мастера и попытаемся сделать PR в dev, git вернется к исходному набору изменений, где синхронизированы и master, и к dev, и покажет нам изменения из этого набора изменений, а неизменения кода между исправлением и ветвями разработчика.

Это делает так, что мы не можем видеть изменения кода, вносимые в исправление, когда мы публикуем PR в dev, и, кажется, оставляем раздел «файлы» нашего PR devops непригодным для использования. Если мы сделали 1 изменение файла в hofix, мы можем увидеть 20 файлов, которые отображаются с изменениями, даже если они совпадают в dev и ветви исправлений.

...