首页 > 解决方案 > 使用 p4 zip 和 unzip 将文件从一个 perforce 服务器导出到另一个

问题描述

我试图从 2015.2 到 2019 perforce 服务器在我的 depot 文件夹中导出文件及其修订历史记录。此外,我希望 perforce 在我的新服务器上创建新用户,该用户对应于我最初的 2015 回购中的提交者/提交者。

对于我当前的任务,Perforce 复制看起来有点矫枉过正,然后我在 perforce 的网站上看到了这篇文章,其中提到了 P4 zip。

这看起来可以解决我的问题,但是这篇文章有一些我无法理解的问题。

假设我正在从 server1_ip:port --> server2_ip:port 移动数据

我目前正在执行这些步骤

  1. 制作要复制的文件夹的zip

    • p4 remote my_remote_spec, 环境
    • Address: server1_ip:port
    • DepotMap://depot/... //depot2/...
  2. p4 -p server1_ip:port zip -o test.zip -r my_remote_spec -A //depot/.... 但是在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。

此外,当我尝试使用超级用户时,即使没有提示任何错误,我也找不到 test.zip。

  1. 上面的命令不是应该在我运行它的目录中生成一个 zip 文件吗?
  2. 是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令?
  3. 最后,在从运行在 1666 和 1777 上的服务器传输文件中提到的为什么是第三个端口 1667 的文档中。

标签: version-controlperforcedvcsperforce-client-specp4java

解决方案


在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。

这是预期的:

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 文件被写入服务器计算机(相对于服务器根目录,如果您不指定绝对路径),而不是传输到本地客户端目录。这在文档中没有明确说明(这似乎是一个疏忽),但是如果您查看运行 zip 的服务器的根目录,您应该在test.zip那里找到您的。

是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令?

是的,每当您对特定服务器运行命令时,您都需要登录到该服务器。在这种情况下,p4 unzip您至少需要admin第二台服务器的权限。

最后,在从运行在 1666 和 1777 上的服务器传输文件中提到的为什么是第三个端口 1667 的文档中。

我很确定这是一个错字。写这篇文章的人开始使用端口 1666 和 1777,中途改变了主意,并且没有校对。:)


推荐阅读