Как настроить потоки разработчиков, которые отображают основную линию в подпапку?
Я изо всех сил пытаюсь настроить потоки для следующего сценария:
У меня есть проект библиотеки (//libX
) с использованием типичных потоков mainline, release и dev.
Тем не менее, я хочу иметь потоки разработчиков для отдельных продуктов (//libX/projectA
) которые используют эту библиотеку. Эти продукты имеют различную структуру каталогов, и я хочу отобразить //libX/main/...
в подпапку //libX/projectA/extern/libX/...
,
Например, моя библиотека структурирована так:
//libX/main
/bin
/src
/tests
readme.txt
И мои проекты - это совсем другое, но использую мою библиотеку
//libX/projectA
/documentation
/extern
/libX
/bin
/src
/tests
readme.txt
/MaxSDK
/source
/tools
config.xml
Самое близкое, что у меня было на работе, было так:
- Дорожки:
share ...
- Переназначает:
... extern/libX/...
Но кажется, что повторы только фиксируют расположение файлов на локальной машине. При использовании указанных выше настроек переназначения файлы libX оказываются в том же корне, что и файлы projectA.
Может ли описанный выше сценарий работать с потоками, или я должен вернуться к спецификациям ветки?
Спасибо!
1 ответ
Ваш проект не должен быть дочерним потоком вашего потока lib - размещение его в собственном потоковом хранилище кажется менее запутанным:
//libX/main
/bin
/src
/tests
readme.txt
//libX/projectA (child of //libX/main)
/bin
/src
/tests
readme.txt
//projectA/main
/documentation
/extern
/libX (mirror of //libX/projectA)
/bin
/src
/tests
readme.txt
/MaxSDK
/source
/tools
config.xml
И вы получите эту структуру, выполнив:
Stream: //projectA/main
Paths:
share ...
import extern/libX/... //libX/projectA/...
К сожалению, у этого подхода есть некоторые ограничения - если ваш libX
Пути не тривиальны share ...
тогда import
не поднимет правильно, так как import path depotPath
Синтаксис импортирует путь депо, а не путь потока. При обычном импорте вы также не можете вносить изменения в libX/projectA
из этого потока - вы можете использовать import+
чтобы разрешить это, но я видел достаточно проблем с import+
что я хотел бы сделать это моим рабочим процессом при изменении библиотеки:
p4 switch //libX/projectA
(make changes)
p4 submit
p4 switch //projectA/main
хотя это предполагает, что библиотека является достаточно модульной (со своими собственными модульными тестами, которые охватывают сценарий использования вашего проекта и т. д.), чтобы вы могли выполнять эту работу в ней независимо.