У меня есть несколько проектов в SVN. Каждый из этих проектов сидит в нем собственный багажник и разветвляется для релизов.
И есть общий код, который используется в каждом проекте. Вопрос в том, что является лучшим способом обработки кода.
Позвольте мне привести несколько сценариев и связанные с ними проблемы
a) Поместите общий код в отдельную соединительную линию (или репозиторий) и используйте svn: external.
В случае, если мы разветким некоторые проекты, возникнут две проблемы:
- Любая модификация общего кода, создаваемая в соединительной линии, будет передаваться в ветвь, потому что svn: external будет получать изменения
- В случае, если нам понадобится в какой-то момент вернуться и построить точно код, который был создан для выпуска, нам будет сложно получить точный код, потому что snv: external снова получит последнюю копию общего кода, вместо кода в момент, когда проект был сгруппирован.
Как я понимаю, есть одна работа. Как только мы ввезем, мы можем изменить svn: external, чтобы получить точную ревизию общего кода. Однако снова возникают две ошибки:
- Вам нужно помнить об этом каждый раз, когда вы входите. (Я ненавижу такие вещи, которые легко забыть).
- Вы не можете изменить общий код, если вам нужно сделать исправление для проекта с разветвленной/выпущенной версией.
b) Другим решением является разветвление общего кода при разветвленности проекта и изменение внешнего на то, чтобы скопировать копию общего кода.
- Опять же, одна из проблем - это ручной шаг, который легко забыть.
- Другая проблема - проблемы слияния. SVN будет пропускать внешние элементы, когда вы попытаетесь объединить изменения в проекте в туловище. Итак, разработчик должен помнить, что нужно объединить общий код вручную.
Я что-то пропустил? Есть ли разумный способ справиться с этим?