0

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

我有一个//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

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

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

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

上述场景可以与流一起使用还是我应该回到分支规范?

谢谢!

4

1 回答 1

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+来允许这样做,但我已经看到了足够多的问题import+,我倾向于在更改库时将其作为我的工作流程:

p4 switch //libX/projectA
(make changes)
p4 submit
p4 switch //projectA/main

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

于 2017-03-06T18:47:38.183 回答