Perforce p4提交中止错误-如何解决

Perforce p4提交中止错误-如何解决,perforce,Perforce,p4签入失败,出现以下错误: Submit aborted -- fix problems then use 'p4 submit -c XXXX'. Some file(s) could not be transferred from client. 我在网站上读到了另一个解决方案,关于文件类型可能有多不正确 如何获取有关p4中错误的更多信息?通常情况下,这是因为您没有访问文件的权限,或者没有将文件推入的权限 当这种情况发生在我身上时,我会将变更列表分解成碎片,以找到违规者。这可以通过多种方

p4签入失败,出现以下错误:

Submit aborted -- fix problems then use 'p4 submit -c XXXX'.
Some file(s) could not be transferred from client.
我在网站上读到了另一个解决方案,关于文件类型可能有多不正确


如何获取有关p4中错误的更多信息?

通常情况下,这是因为您没有访问文件的权限,或者没有将文件推入的权限


当这种情况发生在我身上时,我会将变更列表分解成碎片,以找到违规者。这可以通过多种方式实现。如果需要指针,请提出新问题。

通常,当变更列表中的某个文件在客户端不存在,因此无法传输到服务器时,您会在提交时看到此错误。至少有两种情况会导致此问题:-

  • 首先,Perforce允许您将文件添加到变更列表中(通过
    p4)
    添加不存在的
    )。只需在提示符处输入
    p4 add即可
    blahblah.txt
    (假设blahblah.txt不存在)。执行遗嘱 愉快地将文件添加到默认更改列表中。如果你尝试提交 更改列表(文件仍然不存在),然后您将获得 上述错误)

  • 其次,您可以
    p4编辑一个文件,然后在本地删除它,然后重试
    并提交文件(或文件所在的变更列表)。你
    将得到相同的错误

如果您使用的是命令行或p4win(我想是p4v),那么将有输出告诉您有问题的文件。您可能会看到这样的行:

open for read: d:\path\to\file\somefile.txt: The system cannot find the file specified.

此错误将告诉您该文件不存在。此输出将显示在p4win的输出窗格中,或显示在p4命令行的输出输出中。

有时p4无法提交包含异常编码的文件。要解决此问题,请还原它们,然后使用

p4 add -t binary <fileset>
p4添加-t二进制文件

另一个原因:P4认为ANSI编码的文件是无效的。

ANSI文件通常不能被视为UTF-8文件(P4调用
),因为在这种情况下,和P4会产生以下错误:

Translation of file content failed near line 384 file D:\P4
\etc\file.txt
Submit aborted -- fix problems then use 'p4 submit -c 125'.
Some file(s) could not be transferred from client.
在这种情况下,检查第384行发现它包含字符
ľ
,并且该文件是用ANSI编码的,但它会自动错误地将其标记为
(UTF-8)

解决方案:Performce文件类型和实际文件内容必须同步

  • 如果与文件相关的应用程序允许,请将文件转换为UTF-8,并保留文件类型

    一般来说,这是一个更好的解决方案—您可以为国际字符和特殊字符准备好文件

  • 如果文件必须保存在ANSI中,请将文件类型更改为


    • 性能也可能不喜欢文件的命名

      e、 g。example@somefile.txt:系统找不到指定的文件

      解决大型变更集提交失败的问题 我最近不得不提交一个变更集,该变更集包含400000+个文件,但由于错误而失败:

      Submit aborted -- fix problems then use 'p4 submit -c 11111'.
      
      控制台缓冲区中没有足够的历史记录来查看失败和成功的内容。因此,我运行了错误消息中建议的命令,并将stdout输出到一个文件

      p4 submit -c 11111 > p4_submit_11111.txt
      
      运行时,错误(stderr)被输出到命令行,允许我解决问题(如其他答案中所述)。在我的情况下,它是一个我添加到变更集中但后来被删除的文件,根据:

      所以为了解决这个问题,我刚刚从变更集中恢复了它

      $  p4 revert  /home/myUserName/yada/_files.txt
      //P4Root/Proj1/yada/_files.txt#none - was add, unlocked and abandoned
      
      。。。然后使用相同的命令重新提交变更列表:

      p4 submit -c 11111 > p4_submit_11111.txt
      
      此提交成功。

      在我的案例中,我有一个“撤消”变更列表,其中我正在修复前一次提交的问题。为了解决这个问题,我对变更列表中显示的另一个文件进行了更改,但是,当我尝试提交时,它显示了错误(提交被中止——修复问题,然后使用“p4 submit-c xxxx”。)

      我在P4V客户端中右键单击时注意到该文件“未签出”(即使它在变更列表中显示为已修改)

      解决方案:我再次手动签出它,然后可以很好地提交。

      p4 revert-a---还原所有失败的文件

      p4打开---显示需要提交的文件


      p4提交-c“变更列表”。

      创建有问题文件的备份 删除工作区中的那些文件 将备份粘贴到原始位置
      提交。

      在P4 Eclipse插件中,打开“P4日志控制台”查看丢失的文件路径。将文本文件保留为二进制文件类型并不能系统地解决添加3
      时遇到的问题。原始
      文件——三个文件中的一个被检测为“UTF-16”,而不是二进制文件。Perforce似乎在添加文件时尝试检测编码。还原并使用此命令修复了此问题。将文件添加到变更列表时,这是一个重要的考虑事项(
      p4 add-f
      必须用于添加包含
      @#*…/%[0-9]
      )的文件),但这不应影响变更列表的提交,只应影响将文件添加到变更列表。有关详细信息,请参阅此链接中的“保留字符”:
      p4 submit -c 11111 > p4_submit_11111.txt