使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台
Posted
技术标签:
【中文标题】使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台【英文标题】:Using p4 zip and unzip to export files from one perforce server to another 【发布时间】:2020-09-05 20:01:34 【问题描述】:我试图在我的 depot 文件夹中从 2015.2 到 2019 perforce 服务器导出文件及其修订历史。另外,我希望 perforce 在我的新服务器上创建新用户,对应于我原始 2015 回购中的提交者/提交者.
Perforce 复制对于我当前的任务来说看起来有点过头了,然后我在 perforce 的 website 上看到了这篇文章,其中提到了 P4 zip。
这看起来可以解决我的问题,但这篇文章有一些我无法理解的问题。
假设我正在从 server1_ip:port 移动数据 --> server2_ip:port
我目前正在执行这些步骤
使用
制作要复制的文件夹的 zipp4 remote my_remote_spec
,设置
Address: server1_ip:port
DepotMap://depot/... //depot2/...
p4 -p server1_ip:port zip -o test.zip -r my_remote_spec -A //depot/...
。但是在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。
另外,当我尝试使用超级用户时,即使没有提示任何错误,我也找不到 test.zip。
-
上面的命令不是应该在我运行它的目录中生成一个 zip 文件吗?
是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令?
最后,在从运行在 1666 和 1777 上的服务器传输文件中提到的文件为什么是第三个端口 1667。
【问题讨论】:
【参考方案1】:在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。
这是预期的:
C:\Perforce\test>p4 help zip
zip -- Package a set of files and their history for use by p4 unzip
...
The zip command requires super permission granted by p4 protect.
上面的命令不是应该在我运行它的目录中生成一个 zip 文件吗?
类似于p4 admin checkpoint
,压缩文件被写入服务器机器(相对于服务器根目录,如果你不指定绝对路径),而不是被传输到本地客户端目录。这在文档中没有明确说明(这似乎是一个疏忽),但是如果您查看运行 zip 的服务器的根目录,您应该在那里找到您的 test.zip
。
是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令?
是的,每当您对特定服务器运行命令时,您都需要登录到该服务器。对于p4 unzip
,您至少需要第二台服务器上的admin
权限。
最后,从文件中为什么在从 1666 和 1777 上运行的服务器传输文件时提到了第三个端口 1667。
我很确定这是一个错字;写这篇文章的人开始使用端口 1666 和 1777,中途改变了主意,并且没有校对。 :)
【讨论】:
谢谢,这很有帮助。一个小问题,有问题的两台服务器在不同的机器上,因此在第二台服务器上解压缩之前,我应该将 test.zip 放在第二台服务器的根目录中吗?另外,为了清楚起见,上面答案中的服务器根目录是指 P4ROOT? 以上都同意! 解压前一切顺利,解压时我收到提示Cannot import '//depot/path/to/a/file/in/depot.java' because it is in an unknown depot
的以下消息。由于此解压缩操作是在新/空服务器上完成的,因此我还创建了 '//depot/path/to/a/file/in/depot/' 排序的空目录,但此错误仍然存在
您可能需要运行p4 depot depot
来创建depot
depot?
我的目标是,如果目录/软件仓库一开始不存在,它们就会被创建。以上是关于使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台的主要内容,如果未能解决你的问题,请参考以下文章