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

时间:2009-08-12 20:44:54

标签: perforce

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

Submit aborted -- fix problems then use 'p4 submit -c XXXX'.
Some file(s) could not be transferred from client.

我在网站上阅读了另一个关于文件类型可能不正确的解决方案。

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

9 个答案:

答案 0 :(得分:11)

通常,如果更改列表中的文件在客户端上不存在,则会在提交时看到此错误,因此无法将其传输到服务器。至少有两个条件可能导致此问题: -

  • 首先,Perforce允许您将文件添加到不存在的更改列表(通过p4 add)。只需输入提示并输入p4 add blahblah.txt(假设blahblah.txt不存在)。 Perforce会 愉快地将文件添加到默认的更改列表中。如果您尝试提交 那个更改列表(并且文件仍然不存在),那么你将获得 上述错误)。

  • 其次,您可以p4 edit一个文件,然后在本地删除它,然后尝试 并提交文件(或文件所在的更改列表)。您 会得到同样的错误。

如果您正在使用命令行或p4win(或我假设的p4v),那么将会有输出信息告诉您有问题的文件。您可能会看到如下行:

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

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

答案 1 :(得分:3)

解决大变更集提交失败的问题

我最近提交的变更集中包含 400,000+个文件,但由于错误而失败:

Submit aborted -- fix problems then use 'p4 submit -c 11111'.

控制台缓冲区中没有足够的历史记录来查看失败的内容和成功的内容。所以我运行了错误消息中建议的命令并将stdout输出到文件

p4 submit -c 11111 > p4_submit_11111.txt

当这个运行时,错误(stderr)输出到命令行,允许我解决问题(如其他答案中所述)。在我的情况下,这是我添加到变更集中的文件,但自删除后,根据first point in Mark's answer

open for read: /home/myUserName/yada/_files.txt: No such file or directory

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

$  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

此提交成功。

答案 2 :(得分:2)

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

p4 add -t binary <fileset>

答案 3 :(得分:1)

当这种情况经常发生时,这是因为您无法访问这些文件,也无权将其推入。

当我遇到这种情况时,我将变更清单拆分成碎片以找到罪犯。这可以通过多种方式完成。如果你需要指针,可以提出一个新问题。

答案 4 :(得分:1)

另一个原因: P4认为ANSI编码的文件是&lt; Unicode&gt;。

ANSI文件通常不能被视为UTF-8文件(P4调用<unicode>)因为not all byte sequences in UTF-8 encoding are valid和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编码的,但Perforce 会自动且错误将其标记为<unicode>(UTF -8)。

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

  • 如果与文件相关的应用程序允许,将文件转换为 UTF-8 并保留文件类型<unicode>
    通常,这是更好的解决方案 - 您可以为国际和特殊字符准备好文件。

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

答案 5 :(得分:0)

Perforce也可能不喜欢文件的命名。

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

答案 6 :(得分:0)

就我而言,我有一个“撤消撤消”更改列表,在此列表中我解决了先前提交的问题。为了解决该问题,我对更改列表中显示的另一个文件进行了更改,但是,当我尝试提交时,它显示了错误(提交已中止-解决问题,然后使用“ p4 Submit -c xxxx”。)

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

解决方案:我再次将其签出,然后可以提交。

答案 7 :(得分:0)

p4恢复-a ---恢复所有失败的文件。

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

p4提交-c'变更列表'。

答案 8 :(得分:0)

创建违规文件的备份 删除工作区上的那些文件 将备份粘贴到原始位置 提交。