我正在努力为以下场景设置流:
我有一个使用典型主线,发布和开发流的库项目(//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文件位于同一根。
以上场景是否适用于流,或者我应该回到分支规范?
谢谢!
答案 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+
虽然这假设库足够模块化(有自己的单元测试,涵盖了你的项目的用例等),你可以独立完成它。