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/…
谢谢 您的项目不应该是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处理变量,但手动设置导入来描述组件关系)是最好的方法