Ищите предложения по git-workflow при работе с огромным PHP-проектом обновления

В течение последних нескольких месяцев я работал над масштабным проектом обновления 11-летнего приложения, которое состоит из более чем 3500 отдельных файлов. В какой-то момент файлы были скопированы (ими управлял SVN, потом …), и начались конверсионные работы параллельно с продолжением работы по поддержке клиента.

В хранилище конверсий (который совершенно не связан с «другим» git-репозиторием, который вытеснил SVN), было сделано около 314 коммитов, и некоторые из них гигантские. (Преобразование <? в <?php, замена mysql_ звонки с вызовами в интерфейсную библиотеку и тд.)

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

И здесь я не уверен, что делать дальше. Я хочу повторно внести изменения, которые я внес в эти файлы, как это отражено в 300 с лишним коммитах, которые сейчас выполняются в основной ветви моего конверсионного репо, и сделать это как можно скорее автоматически. У меня есть файл, который содержит список всех файлов, о которых идет речь. Моя мысль cherry-pick некоторые из старых коммитов выходят из основной ветки и применяют их к файлам в новой ветке (который никогда не может быть объединен с мастером). На мой взгляд, только те коммиты, которые касаются любого из этих файлов, должны быть повторно применены. (Но некоторые из этих коммитов затрагивали тысячи файлов, в том числе, но не ограничиваясь теми, что находятся здесь.)

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

Помните: есть два отдельных git репо, но они совершенно не связаны с другим. (Тот, который использовался для сопровождения производства, в то время даже не существовал.) Итак, я могу использовать его … и, действительно, использовал его … только для получения списка файлов, к которым были произведены прикосновения, и для получения их самая последняя версия. Когда проект конвертации будет завершен, конверсионный репо будет отбрасываются, и нынешний репо будет заморожен. Будет создан совершенно новый репо, чтобы двигаться вперед.

Совет искренне искал. , ,

РЕДАКТИРОВАТЬ: С тех пор я рассмотрел совершенно другой подход, который позволил бы отказаться от курса, который я начал, полностью отбросить эту ветвь и следовать другой стратегии прохождения старого репозитория, захвата выбранных коммитов в качестве патчей и попытки применить эти патчи к существующим (хотя, возможно, очень измененным) модулям. Или, если нужно, делать то же самое вручную. Только около 100, дай или возьми, обязуется сделать … Комментарии сердечно (и искренне) запрашиваются по любой стратегии.

0

Решение

Я не уверен, что это именно то, что вы ищете, но мое предложение будет использовать Gitflow Workflow.

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

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

Когда develop ветка стабильна и пришло время для выпуска, вы можете затем объединить develop ветвь с master, Я использовал этот тип рабочего процесса для некоторых из моих крупных проектов, и он мне очень помог.

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

gitflow

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector