有没有办法告诉Perforce单独保留文本文件而不将文件类型设置为二进制文件?或者除此之外,有没有办法告诉Perforce客户端区分二进制文件?二进制通常是不可取的,因为我失去了diff的能力。
澄清一下:如果我在窗口客户端上编辑并更改* .txt文件,则换行符将按照DOS格式提供CR + LF。但是,如果我在Unix客户端上进行P4同步,它将只有LF。无论Perforce客户端在哪里,我都需要Perforce保持格式不变。
那就是说,我确实有一个解决办法:将文件类型设置为二进制;和/或创建一个文本文件设置为“文本”的分支,并定期集成回主线,文本文件设置为“二进制”。但对于应该是一个非常简单的问题,这是一个过于复杂的解决方法。
最后,我在 Perforce Windows客户端2006.2。
提前致谢。
答案 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)
为文件提供不同的扩展名。