如何设置将主线映射到子文件夹的开发流?

How do I setup dev streams that map mainline to a subfolder?

我正在努力为以下场景设置流:

我有一个库项目 (//libX) 使用典型的主线、发布和开发流。

但是,我希望为使用此库的单独产品 (//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

我最接近它的工作是这样的:

但重新映射似乎只能修复本地计算机上的文件位置。使用上述重映射设置,libX 文件最终与 projectA 文件位于同一根目录下。

以上场景是否可以使用流,或者我应该返回到分支规范?

谢谢!

您的项目不应该是您的 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

尽管这假设该库足够模块化(具有涵盖项目用例等的自己的单元测试),您可以在其中独立完成这项工作。