如何在 p4v 的流映射中排除目录
How to exclude a directory in Stream mapping in p4v
我正在使用 perforce 的可视化客户端,我想从工作区中排除一个目录。在使用流之前,我只是导航到我的工作区,在树中找到文件夹,然后将其排除(我已经在我发现的许多其他相关问题中找到了这个解决方案)。但是,现在我正在使用流,它不会让我这样做,显然我必须编辑流映射。
所以我尝试在编辑流时将这一行添加到重新映射的框中:
-//NumberPlus/current/Library/... //nplus-mainline/current/Library/
但是我得到一个错误:
Error in stream specification.
Error detected at line 24
Null directory (//) not allowed in '-//NumberPlus/current/Library/...'.
编辑:我在 Windows 8.1,澄清一下。
如果客户端工作区切换到特定流,您不能只编辑其映射。流的全部意义在于您的工作区映射是直接从流定义生成的。所以这是一个功能。
还不完全清楚
- 您根本不需要流中的目录,或者
- 在流中包含该目录是有效的,但您不想将其同步到您的工作站,或者
- 您希望目录同步到您的工作站,但您希望目录具有不同的内容(例如,来自具有不同版本库的其他流。
但是,对于所有这些情况,我怀疑前进的最佳途径是为当前流定义一个新的 child 流。
您需要使用 "share"、"exclude"、"isolate" 和 "import" 映射类型定义路径映射。
例如,如果您根本不需要 Library/... 目录,您可以 "exclude" 从 parent 中获取它。
那么该流将根本没有该目录,并且当您同步到该流时,它(当然)也不会出现在您的工作站上。
如果您想在 Library/... 目录中拥有不同的代码副本,以便它成为与 parent 的故意分歧点,您可以 "isolate"它来自您的 parent 以提交您自己的自定义版本,或 "import" 来自另一个流以使用该流的 Library/... 目录。
在任何一种情况下,该目录都将成为流的一部分,并将同步到您的工作站,但该目录的内容将不同于 parent 流中使用的内容(它们不同的确切方式在您的控制之下,因为您相应地定义了流)。
文档和一些例子在这里:http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html
和这里:
http://www.perforce.com/sites/default/files/pdf/Streams-ebook.pdf
我相信我已经解决了这个问题。明确地说,我希望版本控制完全忽略该文件夹。我在 Unity 中使用 p4connect,它一直想在我的软件仓库中包含不必要的东西。
我所要做的就是将这一行添加到路径框中的父流中:
排除 current/Library/...
如果您要排除的文件夹特定于您的计算机,则在本地设置 P4IGNORE 是将其排除在添加到软件仓库中的最简单方法。
http://www.perforce.com/blog/120214/new-20121-p4ignore
您将 P4IGNORE 设置为某个名称,例如 "p4ignore.txt",创建一个具有该名称的文件,并向其中添加 "Libraries"——随后的 "p4 add" 命令将跳过找到的路径在 P4IGNORE 文件中,因此这些文件永远不会添加到软件仓库中。
如果这是该流的所有工作区共有的东西(例如,这是一个构建工件,每个人都将生成并且没有人应该签入),您想要做的是添加一个 "exclude" 到流的路径(这将从该流生成的分支视图和客户端视图中排除它)。例如:
Paths:
share ...
exclude Libraries/...
"exclude Libraries/..." 与您添加到客户端视图的排除行基本相同,只是您将其指定为相对路径,您不需要指定映射的两边, "exclude" 类型隐含了“-”。 "remap" 类型是如果你想保留这些文件但在不同的仓库位置,这在这里听起来不适用。
有关定义流视图的更多信息:
http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html
我正在使用 perforce 的可视化客户端,我想从工作区中排除一个目录。在使用流之前,我只是导航到我的工作区,在树中找到文件夹,然后将其排除(我已经在我发现的许多其他相关问题中找到了这个解决方案)。但是,现在我正在使用流,它不会让我这样做,显然我必须编辑流映射。
所以我尝试在编辑流时将这一行添加到重新映射的框中:
-//NumberPlus/current/Library/... //nplus-mainline/current/Library/
但是我得到一个错误:
Error in stream specification.
Error detected at line 24
Null directory (//) not allowed in '-//NumberPlus/current/Library/...'.
编辑:我在 Windows 8.1,澄清一下。
如果客户端工作区切换到特定流,您不能只编辑其映射。流的全部意义在于您的工作区映射是直接从流定义生成的。所以这是一个功能。
还不完全清楚
- 您根本不需要流中的目录,或者
- 在流中包含该目录是有效的,但您不想将其同步到您的工作站,或者
- 您希望目录同步到您的工作站,但您希望目录具有不同的内容(例如,来自具有不同版本库的其他流。
但是,对于所有这些情况,我怀疑前进的最佳途径是为当前流定义一个新的 child 流。
您需要使用 "share"、"exclude"、"isolate" 和 "import" 映射类型定义路径映射。
例如,如果您根本不需要 Library/... 目录,您可以 "exclude" 从 parent 中获取它。
那么该流将根本没有该目录,并且当您同步到该流时,它(当然)也不会出现在您的工作站上。
如果您想在 Library/... 目录中拥有不同的代码副本,以便它成为与 parent 的故意分歧点,您可以 "isolate"它来自您的 parent 以提交您自己的自定义版本,或 "import" 来自另一个流以使用该流的 Library/... 目录。
在任何一种情况下,该目录都将成为流的一部分,并将同步到您的工作站,但该目录的内容将不同于 parent 流中使用的内容(它们不同的确切方式在您的控制之下,因为您相应地定义了流)。
文档和一些例子在这里:http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html 和这里: http://www.perforce.com/sites/default/files/pdf/Streams-ebook.pdf
我相信我已经解决了这个问题。明确地说,我希望版本控制完全忽略该文件夹。我在 Unity 中使用 p4connect,它一直想在我的软件仓库中包含不必要的东西。
我所要做的就是将这一行添加到路径框中的父流中:
排除 current/Library/...
如果您要排除的文件夹特定于您的计算机,则在本地设置 P4IGNORE 是将其排除在添加到软件仓库中的最简单方法。
http://www.perforce.com/blog/120214/new-20121-p4ignore
您将 P4IGNORE 设置为某个名称,例如 "p4ignore.txt",创建一个具有该名称的文件,并向其中添加 "Libraries"——随后的 "p4 add" 命令将跳过找到的路径在 P4IGNORE 文件中,因此这些文件永远不会添加到软件仓库中。
如果这是该流的所有工作区共有的东西(例如,这是一个构建工件,每个人都将生成并且没有人应该签入),您想要做的是添加一个 "exclude" 到流的路径(这将从该流生成的分支视图和客户端视图中排除它)。例如:
Paths:
share ...
exclude Libraries/...
"exclude Libraries/..." 与您添加到客户端视图的排除行基本相同,只是您将其指定为相对路径,您不需要指定映射的两边, "exclude" 类型隐含了“-”。 "remap" 类型是如果你想保留这些文件但在不同的仓库位置,这在这里听起来不适用。
有关定义流视图的更多信息: http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html