Как настроить потоки разработчиков, которые отображают основную линию в подпапку?

Я изо всех сил пытаюсь настроить потоки для следующего сценария:

У меня есть проект библиотеки (//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

хотя это предполагает, что библиотека является достаточно модульной (со своими собственными модульными тестами, которые охватывают сценарий использования вашего проекта и т. д.), чтобы вы могли выполнять эту работу в ней независимо.

Другие вопросы по тегам