Я думаю, что Perforce - меньшая часть проблемы.Вы не упоминаете, какие конкретные проблемы возникают при попытке поделиться общими проектами / библиотеками, и ни то, как вы пытаетесь это сделать.
Я предполагаю, что вы хотите использовать стабильные версии библиотек для каждого продуктаверсия?Я бы порекомендовал вам развернуть библиотеку с правильной версией в месте, расположенном по пути депо продукта.В зависимости от характера вашего проекта, вы можете также построить библиотеку в рабочей области продукта и проверить артефакты (например, dll) на предмет простых и воспроизводимых сборок.Пример:
//depot
/customer
/product
/MAIN
/deps
/src
/lib1 ... (branched from lib1/REL1 below)
/bin
/lib1 ... (prebuilt libs)
//depot
/libs
/lib1
/MAIN
/REL1
Обрабатывать путь "// depot / customer / product / MAIN / deps / src / lib1 / ..." только для чтения.Сделать это по соглашению - самый простой способ, но вы могли бы настроить отображение защиты в Perforce, чтобы обеспечить это.Не делайте этого, если вы действительно не уверены, что вам это нужно, поскольку вы будете добавлять сложность.
Как только вы это сделаете, вы можете легко добавить файл решения для всего продукта в Perforce.(Для решения не требуется для ссылки на библиотеку «напрямую», поскольку вы не будете над ней работать в контексте продукта.)
В зависимости от характера и состава вашейпродукт, который вы, вероятно, вместо этого захотите использовать «subolutions» для различных частей продукта (exes, libs, installers), чтобы несколько упростить одновременную работу с различными частями продукта.Perforce обладает отличными возможностями слияния, но я предпочитаю избегать слияния файлов решений / проектов.
Когда вы захотите выпустить новую версию «продукта», разветвите все под MAIN, например, REL1 (включаячасть зависимостей).Если для новой версии продукта требуется обновленная версия библиотеки, вы можете просто «p4 удалить» соответствующий материал в пути депо продукта и развернуть / интегрировать правильную версию, как описано выше.
ПРИМЕЧАНИЕ. Это должно быть возможнопросто выполнить интеграцию из новой версии библиотеки, например, в расположение продукта deps / libs / src / lib1 /, поскольку у них есть общие предки.Хотя я не уверен на 100% в этом, поэтому я бы порекомендовал начать с нового подхода p4 для удаления / интеграции.
ПРИМЕЧАНИЕ 2. Пути внутри файлов решения и проекта, как правило, относятся к файлу решения / проектасамо по себе, так что ветвление должно работать просто отлично в этом отношении.Только не добавляйте ссылки на другие файлы / каталоги, используя абсолютные пути самостоятельно.