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

时间:2017-03-05 04:42:01

标签: perforce p4v perforce-stream

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

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

但是,我希望为使用此库的单独产品(//libX/projectA)提供开发流。这些产品具有不同的目录结构,我想将//libX/main/...映射到子文件夹//libX/projectA/extern/libX/...

例如,我的lib结构如下:

//libX/main
    /bin
    /src
    /tests
    readme.txt

我的项目完全不同,但使用我的lib

//libX/projectA
    /documentation
    /extern
        /libX
            /bin
            /src
            /tests
            readme.txt
        /MaxSDK
    /source
    /tools
    config.xml

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

  • 路径:share ...
  • 重新映射:... extern/libX/...

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您的项目不应该是您的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+来允许此更改,但我已经看到了{{1}的足够问题我更倾向于在更改库时将其作为我的工作流程:

import+

虽然这假设库足够模块化(有自己的单元测试,涵盖了你的项目的用例等),你可以独立完成它。