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

Perforce 如何设置将主线映射到子文件夹的开发流?,perforce,p4v,perforce-stream,Perforce,P4v,Perforce Stream,我正在努力为以下场景设置流: 我有一个库项目(//libX),使用典型的主线、发行版和开发流 但是,我希望为使用此库的单独产品(//libX/projectA)提供开发流。这些产品有不同的目录结构,我想将//libX/main/..映射到子文件夹//libX/projectA/extern/libX/.. 例如,我的库的结构如下: //libX/main /bin /src /tests readme.txt 我的项目完全是另一回事,但使用我的库 //libX/

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

我有一个库项目(
//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/main
    /bin
    /src
    /tests
    readme.txt
  • 路径:
    共享…
  • 重新映射:
    。。。extern/libX/…
但重新映射似乎只修复本地计算机上的文件位置。使用上述重新映射设置,libX文件最终与projectA文件位于同一根目录下

上面的场景可以用于streams吗?或者我应该回到分支规范


谢谢

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

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

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

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

您需要稍微扩展一下示例——还有哪些文件与libX文件“混合”在一起?他们来自哪里?它们应该放在哪里?“导入”或“导入+”选项可能会对您有所帮助,但如果不知道Sam提出的问题的答案,就很难说清楚。您需要稍微扩展一下您的示例--还有哪些文件与libX文件“混合”在一起?他们来自哪里?“导入”或“导入+”选项可能会对你有所帮助,但如果不知道Sam提出的问题的答案,很难说清楚。是的,我想我会为lib的主分支、发行分支和开发分支保留流,但对于客户端项目,我会坚持常规分支规范。那样会更简单。我之所以尝试这么做,是为了看看哪些项目的更改还没有集成到我的库中(通过流图彩色箭头)。啊——所以你真正想要的是对库进行每个项目的更改!原始问题中缺少的单词是“修改”。)我会在一秒钟内修改我的答案。是的,每个项目都可能会对库进行更改,我希望streams的支持能够帮助我检测这些更改,以便知道何时我有代码可以集成回主线。是的,不幸的是,streams并不是专门为处理基于组件的开发而设计的——它有一些缺陷(在p4开源研讨会上有一些博客文章和脚本)但是本机支持都是为了跟踪单个组件的生命周期,而不是将多个组件组装成一个更大的组件。我认为现在按照我描述的方式设置它(让流处理变量,但手动设置导入来描述组件关系)是最好的方式。是的,我认为我会为lib的主、发布和开发分支保留流,但对于客户端项目,我会坚持常规分支规范。那样会更简单。我之所以尝试这么做,是为了看看哪些项目的更改还没有集成到我的库中(通过流图彩色箭头)。啊——所以你真正想要的是对库进行每个项目的更改!原始问题中缺少的单词是“修改”。)我会在一秒钟内修改我的答案。是的,每个项目都可能会对库进行更改,我希望streams的支持能够帮助我检测这些更改,以便知道何时我有代码可以集成回主线。是的,不幸的是,streams并不是专门为处理基于组件的开发而设计的——它有一些缺陷(在p4开源研讨会上有一些博客文章和脚本)但是本机支持都是为了跟踪单个组件的生命周期,而不是将多个组件组装成一个更大的组件。我认为现在按照我描述的方式设置它(让streams处理变量,但手动设置导入来描述组件关系)是最好的方法