Perforce:保持Perforce不改变文本文件格式

问题描述:

有没有办法告诉Perforce在没有将文件类型设置为二进制文件的情况下保留文本文件?或者,除此之外,有没有办法告诉Perforce客户端比较二进制文件?二进制通常是不可取的,因为我失去了区分能力。Perforce:保持Perforce不改变文本文件格式

澄清:如果我编辑窗口客户端上的* .txt文件并对其进行更改,则新行将按照DOS格式具有CR + LF。但是如果我在一个Unix客户端上同步P4,它将只有LF。无论Perforce客户端在哪里居住,我都需要Perforce保持原样。

这就是说,我有一个解决方法:将文件类型设置为二进制文件;和/或创建一个文本文件设置为“文本”的分支,并定期将其集成回主线,在该主线中将文本文件设置为“二进制”。但这是一个非常复杂的解决方法,应该是一个非常简单的问题。

最后,我在Perforce Windows客户端2006.2。

在此先感谢。

将您的所有客户端/工作区规范设置为'unix'行尾。那么当您在Windows上签入时不会进行转换。

http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/

+0

好的。这好多了。虽然不理想,但要比创建单独的分支要好得多。谢谢! – hythlodayr 2010-02-01 15:09:44

+0

链接已更新至:http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/ – 2013-05-01 04:31:39

给文件一个不同的扩展名。

+1

不可以,因为这些应该是生产质量文件。人们应该能够无缝和无障碍地同步并复制到环境中。同样,unix2dos也不是一个选项。 – hythlodayr 2010-01-28 19:09:46

如果在客户端上正确设置了LineEnd选项,则在同步到不同平台时,Perforce客户端可以正确处理行结束。也许你有你的错误?打开您的客户端规格并根据您的需要设置LineEnd选项。

检查出this KB article在他们的网站上获取更多信息。下面是摘录:

在服务器端,Perforce的处理 使用Unix风格的LF 行结束的所有文本文件。虽然Perforce公司存储在 操作系统的本机线 终止约定(在 的Windows,Unix上的LF CR/LF)在磁盘上 服务器存档文件,所有行结束 标准化为Unix风格的LF 行结束内部Perforce 服务器操作,例如p4 sync,p4 submit和p4 diff。

在客户工作区侧,Perforce的 处理行结束的由每个 clientspec全局选项确定 。当您使用p4同步将文本文件 同步到客户端工作区时,或 将它们提交回带有p4提交的Perforce服务器 时,它们的行尾数为 ,如 clientspec LineEnd部分所述。

+0

我很害怕这个,但是谢谢你的文章。简而言之,我们的Unix perforce客户端(和文件服务器)必须能够容纳Windows和Unix文本文件的混合。 更糟糕的是:我们有Perforce服务器损坏的某些本地化文本文件(类似于Java属性文件)。唉,唯一的解决方案是将事物设置为二元。 – hythlodayr 2010-01-28 21:19:25

+0

@hythlodayr:您目前是否与Perforce签有支持合同?如果是这样,你可以给他们打个电话。也许他们知道一些可以让它按照你想要的方式行事的技巧。 – raven 2010-01-28 21:34:57

+0

麻烦的是,它不起作用,Perforce拒绝承认错误。 默认情况下,如果您从具有Windows行结束符的* nix提交文件,或反之亦然,Perforce会破坏所有文本文件。 – Richard1403832 2017-10-03 09:32:48

当添加要考虑二进制文件的Perforce,使用命令p4 add-t选项覆盖类型映射表中的文本文件。请参阅文档here。这里给出的例子是p4 add -t binary file.pdf

我刚才遇到完全相同的问题,但有一个更好的解决方案,不涉及改变客户的规格(这是国际化的,并不是所有的我有写权限)。

我们所有的客户都是Windows的PC,但Cygwin的包括Perforce的仓库内。 Cygwin是Unix的Windows实现,并且要求文本文件使用LF作为行尾。

旧版本的Cygwin的可能的解决方案是使用“文本”选项,这意味着文件可以有CR + LF行结束挂载根。然而,在升级到Cygwin 1.7.9时,这不再起作用,因为除非将它们写入/ etc/fstab,否则挂载是暂时的。我没有设法完成这项工作。

幸运的是,Perforce的大师坐在我旁边想出了更改文件类型的解决方案二进制+ d,使用相同的RCS增量补丁存储为文本文件,但没有结束转换的自动线。

我可以成功diff的这些“文本”文件,我的本地工作区和仓库之间。