在 Perforce P4 中,我可以在没有 "Stream" 的情况下从 "Depot" 获取文件吗?

Can I get files from "Depot" without a "Stream" in Perforce P4?

所以我一直在阅读 p4 命令行工具的 helix-core 文档,因为我不能在我当前的机器上使用可视化客户端。我正在尝试找到一种方法从服务器上的本地仓库获取最新文件,该仓库存储了我和我的团队正在处理的项目。

我找到了 sync 命令,但它需要流。如果我没记错的话,在为团队或服务器设置可视化客户端时,我从来不需要定义一个,所以即使我有一个也找不到。管理工具只向我显示这样的 depot://depot/myFiles,如果我没有记错的话,这是在创建服务器时创建的默认本地 depot。所以我一直想知道是否可以在没有流的情况下像在可视化客户端中一样 "get latest" 或者我如何找到这个 depot 正在使用的流。

tl;dr:你想做的是 "workspace",而不是 "stream"。 运行 p4 client 创建工作区。

Depot 在 Perforce 中有两种基本类型:streamlocal(又名 "classic")。 depot 的类型是在 Perforce 管理员创建时设置的。一台服务器可以有任意数量的 depot。

stream 软件仓库中,文件被组织成流,默认情况下采用顶级软件仓库目录的形式,例如//stream/main//stream/rel1。流可以配置为代表实际软件仓库目录之外的文件,但在最简单的形式中,每个流仅对应于软件仓库中的一个目录,包括一个 mainline 流和通常从该目录分支的许多其他流主线。 流库中的每个文件都在一个流中。您可以运行 p4 streams 命令查看所有流的列表。

local depot 中,没有流。您可以在任何地方添加任何文件。通常文件被组织到平行的顶级目录中,这些目录相互分支,例如//local/main//local/rel1,但没有守卫 rails 引导你走向这个方向。

在任何一种 depot 中,您都需要创建一个 客户端工作区 来同步和提交文件。每个工作区都有一个 客户端视图 ,它在库文件和工作区文件之间创建映射;客户端视图在您同步时获取 depot 文件并将它们放入您的工作区,并在您提交时获取工作区文件并将它们放入 depot。每个工作区对于特定客户端计算机(客户端根目录)上的特定目录都是唯一的——您必须为您工作的每台本地计算机创建一个新的工作区!

  • stream 库中,当您创建工作区时,您指定要处理的 Stream客户端视图 会自动为您生成,将您的工作区根目录映射到流中的文件。不允许您手动修改此视图;如果你想改变视图,你需要改变流,这将自动更新与该流关联的所有客户端的视图(因此一个流可能有很多客户端,但它们将始终共享一个一致的视图 - 主要流的功能是集中客户端视图管理。
  • local depot 中,当您创建工作区时,您自己定义了一个 View。默认情况下,当您在具有单个本地软件仓库的服务器上创建工作空间时,客户端视图会将整个软件仓库映射到工作空间根目录。您可以自己编辑 View 以将 depot 中的任意路径映射到工作空间中的任意路径,因此您可以完全控制要同步的 depot 文件以及每个文件的去向。

要从命令行创建客户端工作区,运行:

p4 client

这将打开一个包含客户端规范的编辑器。适当地编辑 StreamView 字段。请注意,客户端工作区的默认名称是它所在的客户端计算机的主机名;如果你想改变这个,运行 p4 set P4CLIENT=your-client-name 在 运行ning p4 client 之前。保存客户端规范,退出编辑器,您将看到类似 "client saved".

的消息

现在您可以同步了:

p4 sync

这将使用您当前的客户端规范(您刚刚定义的客户端规范)将文件从软件仓库同步到您的工作区。您只需在第一次设置新客户端计算机时创建客户端规范,但您可以随时再次 运行 p4 client 进行修改。