Настройка хранилища Perforce для нескольких проектов
Описание: Требуется помощь, чтобы выяснить, как настроить депо и мою среду разработки, чтобы я мог поддерживать несколько связанных проектов.
Детали: До сих пор у меня был склад, в котором был только один проект - ProjectA - версия робота A.
Я начинаю работать над новой версией (ProjectB), которая имеет некоторые различия в HW - сопоставления портов ввода-вывода и таймеры изменились. Я хотел бы продолжить разработку кода для обоих проектов.
Это означает, что ProjectB поделится некоторыми файлами с ProjectA, а некоторые файлы будут другими.
Поскольку различия связаны с HW-объектами, я собираюсь создать общую область, а затем спроектировать конкретные области, где общая область предназначена для кода, не зависящего от устройства, а область проекта - для кода, зависящего от устройства.
Различия настолько велики, что я не хочу делать #ifdef внутри файлов. Некоторые различия просты - различное сопоставление портов ввода / вывода, а некоторые - совершенно новые модули.
Чтобы облегчить сопровождение, я бы хотел иметь возможность сравнивать различия между кодом, зависящим от устройства, и распространять выбранные изменения.
Наконец, чтобы минимизировать мою нагрузку во время сравнений, я хотел бы отметить различия, которые, как я знаю, допустимы, чтобы в будущих сравнениях они не отображались.
Помогите!
1 ответ
Ваши инстинкты хороши - вы пытаетесь не дублировать код. Это основа хорошего дизайна и инжиниринга.
Что касается макета файла, всегда раздражает, что ваши каталоги слишком глубокие, но это НАМНОГО лучше, чем слишком поверхностное. Может быть:
<root>
main/
projects/
robot1/...
robot2/...
shared1/
shared2/
(Даже большие репозитории гораздо глубже)
Что касается того, как вы делаете общий код - вы могли бы иметь разные setup.h
или constants.h, который управляет тем, что делают различные общие библиотеки. Кроме того, создайте ваши общие библиотеки, чтобы они были параметризованы во время выполнения.
SetupDrivers(0x80020); // address of PIO registers
И, наконец, - если проекты действительно разные, решите, действительно ли совместный доступ к коду является правильным. Обычно да, но все есть выбор. Если вы надеетесь вручную "разграничить" ваши файлы, чтобы найти различия, вам действительно нужно сохранять структуры достаточно близкими для различий. "Разные" config.h
файл для каждого проекта "идея, упомянутая выше, поможет.
Если вы катите свой собственный инструмент сравнения (в Python или что-то еще), вы можете использовать специальные комментарии, чтобы пометить "ожидаемые разные строки".