首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Perforce行结束

设置Perforce行结束
EN

Stack Overflow用户
提问于 2012-05-23 21:46:26
回答 3查看 7.7K关注 0票数 7

我正在使用perforce来管理一些代码。我在本地机器和unix机器上设置了一个工作区。然而,最近perforce开始在行尾添加^M个字符,这导致在unix环境中运行代码时出现问题。在编辑文件时,如何在本地设置perforce不执行此操作。我正在使用Notepad++进行本地编辑

EN

回答 3

Stack Overflow用户

发布于 2012-11-30 06:37:40

我建议对这两个客户端都使用Unix行结尾。

Unix行尾,不管名称如何,都会告诉perforce客户端而不是在文件同步时修改行尾,而不是原来的提交方式。在两个客户端上都设置了此设置后,如果您在Windows上创建一个文件并将其同步到Unix,它将仍然具有Windows行结尾,但在Unix上应该不会造成问题,并且perforce不会删除/添加导致^M的字符。

一个小缺点是,Windows计算机将需要Unix行结束识别实用程序,如Notepad++,但这听起来对您来说不是问题。

在我们的团队环境中,Unix,Mac和Windows都在同一个仓库中使用,我们所有的客户端都被Unix服务器上的一个简单的一行触发器强制使用Unix行结尾,这样就没有人会遇到这个问题(它也会强制提交不变的和rmdir,但您可以选择剥离它们):

代码语言:javascript
复制
clientspec form-in client "sed -i -e s/LineEnd.*/LineEnd:unix/ -e s/submitunchanged/revertunchanged/ -e s/normdir/rmdir/ %formfile%"
票数 7
EN

Stack Overflow用户

发布于 2012-05-24 02:21:22

听起来您需要在客户端规范中将LineEnd选项设置为"share“。

请参阅:http://www.perforce.com/perforce/doc.current/manuals/cmdref/client.html#1040665

票数 5
EN

Stack Overflow用户

发布于 2018-11-27 10:41:05

Perforce文档试图简化其EOL设置。它失败了,因为EOL问题总是很复杂,不能简化。这里总结了所有不同的p4 client设置“真正”做了些什么。这是通过慢慢阅读关于这个主题的整个Perforce文档,一些other stackoverflow answers,当然还有一些试验和错误(提示:p4 client + p4 diff -f ...)来学到的。

  • unix:没有转换,因为Perforce假设它的内部数据库完全是‘LF标准化的’,即使这不是严格执行的!More below.
  • win:在输入时转换CRLF -> LF,在output
  • local:上转换LF -> CRLF的默认值。在Windows上执行win转换,在macOS X、Linux和任何其他Unix上不执行(unix)转换-包括Windows子系统Linux.
  • share:= "Cleanup CRLF“。在输入时将CRLF转换为LF,在output.
  • mac:pre-macOS上没有转换,所以让我们忽略它以保持事情稍微简单一些

与通常的情况一样,the caveat间接描述了关键的设计问题,这比该主题的所有其他文档都要详细:

例如,在unix工作区中保存以CRLF行结尾的文本文件,然后提交该文件,会导致文件存储在仓库中,并且每行末尾都有额外的CR字符。当这些文件同步到其他unix工作空间时,它们将具有CRLF行结束符,而不是正确的LF行结束符;当这些文件同步到win工作区时,它们将具有CRCRLF行结束符(因为原始文件中的每个LF都转换为CRLF行结束符)。

请注意,同一页上的前面语句给出了(错误!)印象中的“一切都是LF内部”。

虽然没有在内部严格执行LF,但Perforce手册警告说,当在内部发现一些非LF结束行时,一些操作可能会遇到困难。希望在存储CRLF时只出现spurious but harmless ^M characters?好消息是,lone CRs和之前的macOS现在已经死了。

PS:除非为时已晚,否则使用unix并让编辑器处理行尾;而不是版本控制。几乎所有的编辑器都很擅长这一点,而且比版本控制更好。例如,在版本控制中没有终止转换是将一些build.sh和一些其他build.bat文件放在同一位置的唯一实用方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10721294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档