Существует такой же вопрос в Best practice for managing project variants in Git?, но контекст отличается, и я подозреваю, что ответ может быть слишком.лучшая структура git и Xcode для эволюционирующих вариантов одного и того же продукта
У меня есть продукт какао «Первый», управляемый с помощью Xcode и версией с использованием git. «Первая» все еще развивается и в настоящее время находится на третьей версии.
Затем приходит клиент и запрашивает вариант First, называемый Second. Изменения от первого до второго затрагивают многие, но не все файлы. Изменения влияют на исходный код, но также и ресурсы (графические элементы, файлы nib, списки свойств ...).
Теперь два продукта являются живыми и имеют общий доступ к общим файлам. Однако некоторые изменения, такие как исправления ошибок, могут применяться к обоим продуктам. Возможно, новая функция может быть добавлена к обоим продуктам.
Что бы лучший способ управлять такой сценарий:
- с Xcode
- с мерзавцем
У меня есть две идеи, которые являются взаимоисключающими:
Идея 1: git branch «First» на «Second» и примените любое применимое изменение из одного проекта обратно к другому. Это приводит к двум полностью раздельным каталогам и проектам Xcode.
Идея 2: Добавить цель с именем «Вторая» в проект Xcode. Теперь тот же проект Xcode имеет две цели и используется для разработки и сборки обоих продуктов. Но это затрудняет управление релизами для First и Second в git (у релизов нет причин для синхронизации).
Идея 2 делает процесс параллельной разработки очень простым. Код всегда синхронизирован. Дивергенции можно обрабатывать с помощью переменных времени компиляции и одного исходного файла ИЛИ через разные исходные файлы. Тем не менее, это делает управление версиями более неясным.
Идея 1, пожалуй, более чистая, но тогда, какая наилучшая практика для управления любыми остатками, которые существуют между двумя проектами? Можете ли вы выполнить «частичное слияние» между двумя ветвями git? На каком основании? Или это должно быть обработано вручную?
Возможно, возможно инкапсулировать и извлечь часть общей части в модуль или библиотеку, но не всегда. Например, я не думаю, что это возможно для общих значков документов. Также рефакторинг «Вперёд», чтобы все распространенные предметы были извлечены в виде сборки, - это важное мероприятие, которое я предпочел бы сделать немного за раз.
Я понимаю, что не может быть идеального решения. Я ищу идеи и предложения. Как относительно недавний git-усыновитель, я также понимаю, что это может быть вопрос RTFM. Затем просто укажите мне FM на R.
Большое спасибо.