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

时间:2010-01-28 18:47:02

标签: perforce file-format

有没有办法告诉Perforce单独保留文本文件而不将文件类型设置为二进制文件?或者除此之外,有没有办法告诉Perforce客户端区分二进制文件?二进制通常是不可取的,因为我失去了diff的能力。

澄清一下:如果我在窗口客户端上编辑并更改* .txt文件,则换行符将按照DOS格式提供CR + LF。但是,如果我在Unix客户端上进行P4同步,它将只有LF。无论Perforce客户端在哪里,我都需要Perforce保持格式不变。

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

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

提前致谢。

5 个答案:

答案 0 :(得分:9)

将所有客户端/工作区规范设置为“unix”行尾。当您在Windows上登记时,不会进行任何转换。

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

答案 1 :(得分:5)

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

在其网站上查看this KB article了解详情。这是一段摘录:

  

在服务器端,Perforce进程   所有文本文件都使用Unix风格的LF   行结束。虽然是Perforce商店   磁盘上的服务器归档文件   操作系统的本机线   终止公约(CR / LF on   Windows,LF on Unix),所有行结尾   被标准化为Unix风格的LF   内部Perforce的行尾   服务器操作,例如p4 sync,p4   提交和p4差异。

     

在客户端工作区方面,Perforce   确定线路终端的处理   通过每个的全局选项   clientspec。同步文本文件时   到p4同步的客户端工作区,或   将它们提交回Perforce服务器   随着p4提交,他们的行结尾是   按照规定转换   clientspec LineEnd部分。

答案 2 :(得分:3)

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

我们所有的客户都是Windows PC,但Cygwin包含在Perforce Depot中。 Cygwin是Unix的Windows实现,要求文本文件使用LF作为行结尾。

旧版Cygwin的可能解决方案是使用“text”选项挂载根,这意味着文件可以具有CR + LF行结尾。但是,在升级到Cygwin 1.7.9时,这不再起作用,因为挂载是瞬态的,除非它们被写入/ etc / fstab。我没有设法做到这一点。

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

我可以在本地工作区和软件仓库之间成功区分这些“文本”文件。

答案 3 :(得分:1)

将要作为二进制文件的文本文件添加到Perforce时,请使用带p4 add选项的-t命令覆盖类型映射表。请参阅文档here。给出的示例是p4 add -t binary file.pdf

答案 4 :(得分:-5)

为文件提供不同的扩展名。