Как перенести изменения одной директории в другую, по аналогии git merge?
Суть такая. Каждая версия api в отдельной директории и новые версии api создаются путем копирования предыдущей версии api, поддерживается 3 версии api, четвертая удаляется. Версии появляются раз 1-2 недели. Это рабочий момент другие варианты нам не подходят.
Пример:
3 версии существует
21
22
23
Нашли баг в 21 версии, критичный который нужно править. Если он в 21 то и в остальных так же есть.
Проблема:
Так как код копируем, нужно изменения из 21 версии переносить в 22 и 23, много ручного труда и есть вероятность что то не перенести и будут новые баги.
Вопрос:
Есть какие то инструменты которые позволят переносить изменения по файлам, по сути тоже самое что и git merge только нужно для отдельных директорий?
Сложность проблемы вы создали себе сами. Почему не использовать мастер ветку для постоянного развития и ответвлять от неё разные версии в отдельные ветки? Таким образом изменения, как вы сами уже заметили могли бы портироваться из мастер ветки в те ветки, в которых эта ошибка проявляется. (git cherry-pick)
Вы можете использовать что-то вроде meld meldmerge.org
Я думаю, что эту задачу не решить как-то автоматически. Если я ошибаюсь, буду очень рад узнать что-то новое.
Держите всё в одном репозитории. Для каждой версии API своя долгоиграющая ветка.
Изменения между версиями легко перекидывать через cherry-pick, например.
Зачем усложнять себе жизнь ручным копированием изменений, когда есть Git?
Ну а разные рабочие ветки с разными API распаковываете каждую в свою рабочую папку если хочется.
Git поддерживает множественные worktree.
Либо в каждой папке свой собственный репозиторий и cherry-pick используем для обмена коммитами между версиями. Вообще никаких проблем нет, главное связи настроить. Git — распределённая система.
сделать коммит с исправлением в одной ветке, в остальные перенести через cherry pick - если версии в одном репозитории. или попробовать через патчи - если в разных.