【问题标题】:PHP line breaks being messed up by GITPHP 换行符被 GIT 搞砸了
【发布时间】:2009-09-01 10:56:34
【问题描述】:

我们的网站有一个部分经常更改以匹配用户。 (示例已大大简化)。

user:Mike
last visit:Yesterday

用于更新内容的方法[我现在无法更改]是 php 在 html 网页中搜索默认内容,并在将其提供给用户之前将其替换为新内容。

$stats = "user:Mike
last visit:Yesterday";
$defaults = "user:Guest
last visit:None";
$code = implode($stats, explode($defaults, $code));

在我们开始用 GIT 备份网站之前一切都很好[我们是一个贪吃的惩罚者]。

似乎git改变了html页面中的换行符,因此php再也找不到原文了。

我不明白换行符是如何存储或更改的,但有时我在提交期间从 GIT 收到错误,说它必须更改换行符,并提供“解锁”或“继续”。

随后网站无法正常工作,直到我将默认文本从外部存储的副本复制/粘贴到该页面 - 并且不要进行提交。

我知道我可以使用正则表达式进行搜索/替换,但页面看到足够的使用情况让我避免不必要的表达式。

我的本​​地机器运行 Windows。服务器运行 Unix。

【问题讨论】:

    标签: php git newline


    【解决方案1】:

    http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

    crlf

    此属性控制 行尾约定。

    设置 设置 crlf 属性 path 旨在将路径标记为 “文本文件。 core.autocrlf 转换 无需猜测即可发生 内容类型按检查。

    取消设置取消设置 crlf 属性 路径告诉 git 不要尝试任何 签入时的行尾转换或 结帐。

    通过为有问题的文件指定 crlfUnset 来告诉 git 不要转换 CRLF,问题应该会消失。

    【讨论】:

    • 请帮我理解如何做到这一点?
    • progit.org/book/ch7-2.html 应该让您对 gitattributes 文件的工作方式有一个更加用户友好的概述。但具体来说,您要做的是进入包含不应进行 CRLF 转换的文件的目录,并在其中创建一个名为 .gitattributes 的文件,并将行 *.html -crlf 作为其内容。这将阻止 git 为该目录中的任何 .html 文件转换 CRLF。
    【解决方案2】:

    检查您是否没有将core.autocrlf 设置为“输入”(例如,使用“git config --get core.autocrlf”)。

    此配置变量使 Git 将 MS Windows 行尾约定“\r\n”(CRLF)转换为 UNIX 约定“\n”(LF)。有关详细信息,请参阅git-config 联机帮助页; crlf gitattribute 即Dav mentioned in answer 是为了有更精细的选择。

    【讨论】:

      【解决方案3】:

      它似乎正在将 Windows 换行符(\r\n0x0D0A)转换为 Unix 换行符(\n 或 0x0A)。如果您的 HTML 包含 Windows 行结尾,则无法搜索以字符串中间结尾的 Unix 样式行。您可以像这样明确说明您想要哪一个:

      $stats = "user:Mike\r\nlast visit:Yesterday";
      

      或者:

      $stats = "user:Mike\nlast visit:Yesterday";
      

      【讨论】:

      • 实际内容很长很复杂,我不能用\r\n替换[人类设计师需要的]空格。如果有办法让 \r\n 以及在编辑器中显示的新行,那很好 - 可以做到吗?作为记录,在切换到 GIT 之前,即使我的机器是 Windows 机器也没有问题。
      • 当 GIT 抛出换行错误时,“继续”和“解锁”选项有区别吗?
      • 我不是 Git 用户,所以我不能说。不过,Dav 似乎有解决方案。
      【解决方案4】:

      在安装过程中,mysGit 提供了保留换行符的选项。

      升级后问题就解决了。

      【讨论】:

        猜你喜欢
        • 2022-01-05
        • 2021-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-17
        • 1970-01-01
        • 2020-02-15
        • 1970-01-01
        相关资源
        最近更新 更多