3

让每个人都在 Perforce 中为一个项目创建同一个客户端似乎毫无意义,那么,有没有人可以在 Perforce 中创建一个“公共”客户端,每个人都可以从中同步?

编辑:我的意思是像你在 Perforce 中根据客户规范创建的客户

4

4 回答 4

3

我相信,如果您使用术语“工作区”而不是“客户端”,则更容易理解架构。Perforce 应用程序在本地磁盘的指定区域(称为工作区)中管理文件。顾名思义,您的工作区是您进行大部分工作的地方。即使在同一个工作站上,您也可以拥有多个客户端工作区。

由于两个不同的用户通常在不同的工作站或笔记本电脑上独立工作,因此他们每个人都需要自己的代码副本,并且每个人都需要自己的工作空间,以便他们可以控制何时与服务器中的更改同步。

如果你和我试图在一个工作站上共享一个代码副本,我们很快就会发现自己对谁的更改是谁的更改感到困惑;我们更容易独立工作,并将我们的更改合并为单独的提交到服务器。

如果您的问题是客户端定义很复杂,视图定义非常复杂,那么您可能希望研究“模板客户端”功能:使用您喜欢的视图和选项设置一个主客户端,然后您的其他用户可以使用“client -t”创建从模板客户端复制视图和选项详细信息的工作区定义。

于 2013-01-07T14:47:03.720 回答
2

可以这样做,但不建议这样做。由于 Perforce 会在服务器端记录同步到每个客户端的文件,因此您可能会遇到以下情况:

  1. 用户 Fred 使用共享客户端进行同步并获得一组新文件。
  2. 在提交任何更改之前,用户 Jim 使用共享客户端进行同步,但什么也得不到,因为 Perforce 服务器认为客户端已经拥有最新的文件集。

Jim 可以使用“p4 sync -f”来解决这个问题,这将强制将所有最新文件同步到他的工作区,但这是围绕 Perforce 设计使用方式的一个混搭。

Perforce 客户端在服务器上占用的资源方面非常轻量级,因此最好不要共享客户端。

我试图在在线 Perforce 文档中找到关于为什么不应共享客户端的更完整解释,但这并不是很有帮助。如果您碰巧有一本,那么“Practical Perforce”一书有我见过的最好的概述。

于 2013-01-06T23:32:43.833 回答
0

使用 Bryan 提到的模板工作区,或考虑使用流。在流框架中,您只需定义一次流视图(组合),就会自动生成工作区。

于 2013-01-07T15:22:47.803 回答
0

p4 sync -f 太慢了。因为首先它将删除您本地的所有文件,然后从中央仓库重新加载文件!有一个棘手的方法。当想要同步 -f 时,它是创建一个 haslist 并进行同步。细节是1,获取clientspec,2,将其保存到本地。3、删除客户端 4、使用保存的clientspec创建一个相同的客户端。因此我们节省了删除本地文件的时间。

于 2013-05-24T16:57:23.923 回答