问题标签 [lf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
172 浏览

python - 单个文件中的多行结尾

基本上我正在尝试转换大量文件的行尾。虽然我正在做一个lazyread并使用正则表达式来替换行尾

为了查找文件是否已经存在于所需的行尾中,我放置了一个 if 语句,如下所述:

基本上这运作良好。

由于我将以懒惰的方式读取文件,因此我想知道在整个文件的一大块中,行尾是否是所需的行尾,这是否意味着整个文件都在所需的行尾中?

请澄清我的疑问。

0 投票
1 回答
1678 浏览

newline - How to specify line endings (CRLF)

We're using Swagger Codegen 2.4.5 to generate models from our API. Everything is working exactly as we need with one relatively minor exception.

We're generating C# models, and as per windows these are typically stored with CRLF line endings. Whenever we run the generator these files are generated with the LF line endings.

We'd like all the models to be generated with CRLF instead of LF. Is there a way to modify this behaviour?

I've looked into how mustache is used - a bit - and read through the general command line options for codegen and the csharp specific options (java -jar swagger-codegen-cli-2.4.5.jar config-help -l csharp), and couldn't find anything.

For further clarification:

Currently this is a problem as each time you checkout then run generation again, then models appear as changed. This is simply because they're now encoded with LF line-endings, whereas git has checked them out as CRLF (which we cannot change)

The only other option I can think of at the moment, is to rewrite each file in the project with CRLF after the generation process has completed. I'd prefer it if there was a way via the generator tho.

0 投票
2 回答
1555 浏览

git - 我真的需要在 .gitattributes 中指定所有二进制文件吗

我已经阅读了Git 文档,该文档表明我可以明确地将某些文件设置为文本,因此它们的行尾会自动更改或作为二进制文件以确保它们不受影响。

但是,我也读到 Git 非常擅长检测二进制文件,这让我觉得这不是必需的。所以我的问题是我真的需要为我的存储库中的每个文件扩展名指定这些显式设置吗?我已经看到一些建议对所有图像文件扩展名都这样做。

0 投票
2 回答
78 浏览

c# - 使用 C# 从文件中删除 LF

我必须在 C# 中编写一个脚本才能从文件中删除“LF”。

文件结构如下:

我想要这个:

谢谢 !

0 投票
0 回答
1615 浏览

batch-file - 在Windows批处理中将CRLF文件转换为LF

我在 Windows 中创建文件,因此它们会自动创建为 CRLF 文件;我需要它们是 LF 文件。

这些文件是由批处理脚本创建的,然后使用它们并在之后删除它们,所以我需要在批处理脚本中完成更改,所以我不能一次性使用Change EOL on multiple files 中给出的答案。我正在使用 MinGW64,因此也没有 PowerShell,这意味着Powershell v2: Replace CRLF with LF也无法解决我的问题。我真的需要通过 MinGW64 cmd 在批处理脚本中完成它。

我认为用 sed 删除 CR 部分很容易,但我已经尝试了所有我能想到的方法以及我在互联网上找到的所有方法,但它们都不起作用。

我试过那些:

我也试过用 ^ 转义 $ 和 \ 字符。我还尝试了所有不带双引号的 sed (但不是单引号,在 cmd 中不起作用)。所有这些都是“工作”,我的意思是没有错误。他们什么都不做,CR 还在这里。

我什至尝试过对文件进行 hexdump,然后sed s/0d//对这个文件进行一个,但是不,那些0d只是不想删除!

任何想法?我在这个“预期容易”的事情上苦苦挣扎:'(

0 投票
1 回答
2075 浏览

git - VSCode在文件保存时将CRFL更改为LF,即使没有,git也会记录更改

我注意到 VSCode 中有一个奇怪的行为,当我保存文件时,即使我不做任何更改,我也可以在右下角看到它从 CRLF 更改为 LF。即使我做了几处更改,git 也会同时跟踪添加和删除的额外行。

我在 Windows 上工作,到目前为止我没有任何问题,它刚刚开始发生。我尝试在 VSCode 中将 EOL 的全局设置设置为 CRLF,并将 Prettier 扩展也设置为 CRLF(因为我无法禁用它),但问题仍然存在。

我是新手,在网上找不到类似的问题,只是说明如何设置 CRLF。

0 投票
1 回答
619 浏览

git - 如何在行分隔符更改的情况下将文件提交到 git(得到“没有提交”)

我需要为拉取请求更新一些文件,以便它们具有与项目其余部分匹配的行分隔符。我已经在 notepad++ 中将这些文件从 LF 更改为 CRLF(无法弄清楚如何在 intellij 中进行操作),现在我正在尝试提交此更改 - 仅此而已。

无论我如何尝试提交和推送更改 - 我都“没有什么可提交的”。Intellij 一开始似乎注意到了差异,因为当我右键单击并提交 repo 时,它选择了这些文件进行提交 - 然后提交失败并出现相同的错误。

0 投票
0 回答
97 浏览

git - 简单的 git clone 会破坏许多具有幻像、不可重置的“已修改”状态(LF 相关?)的文件 - 如何修复本地、远程或新克隆?

我经常使用的 Github 存储库(Python gensim)中最近的一些更改甚至在新克隆中也产生了明显的问题(对于带有 git-2.17.1 的 Ubuntu 系统):在克隆之后,几乎所有文件都已经显示为“已修改” ',即使是正常的 'git checkout --' 也无法重置这种不需要的、有效的虚假状态。(因此,不可能在该工作目录中做任何有用的事情,甚至切换到 alt 分支。)

具体来说,在一个全新的目录中,我运行:

它似乎成功了。但是,agit status会立即显示很多很多修改过的文件:

尝试类似的东西git checkout -- jupyter_home.png没有效果:它仍然显示为已修改。

尝试git diff打印一堆以下类型的警告,即使是二进制文件类型(如 PNG),也显示惊人的每个文件差异:

虽然我最初在 Ubuntu 上遇到过这种情况,但它在 MacOS 下也可以在较小程度上重现。(只有 8 个文件,而不是 140 多个文件,以损坏的“修改”状态到达。)

我强烈怀疑最近的提交添加了一个.gitattributes包含以下内容的文件:

但是,我不知道仅此一项会如何破坏工作目录,并且删除它对 . 报告的状态没有立即影响git status

我希望能够制作一个没有这个问题的新克隆 - 但我也想了解并修复任何触发这种新行为的远程问题,以便其他人可以做一个clone没有问题的简单操作,并且没有无意行尾编辑损坏二进制文件的风险。

我怎样才能修复我的克隆,或者在没有这个问题的情况下进行新的克隆?是否可以修复远程存储库本身以防止它咬其他只想要工作克隆而无需其他本地配置更改的人?

(FWIW 没有一个core.autocrlf配置选项经常针对类似问题提出建议,如果在 之前设置clone,会以任何方式改变问题 - 不是git config --global core.autocrlf true,,git config --global core.autocrlf false也不是git config --global core.autocrlf input。)

0 投票
1 回答
129 浏览

git - Windows 上的 Git pull(git smc 客户端)不尊重 .gitattributes 的 eol=lf

我正在从事最初在 Unix 环境中开发的项目。

这样的项目有一个 .gitattributes 文件,强制 eol=lf 超过标准 crlf-lf 转换

*.sh text eol=lf

我的理解是告诉 git“保留原来的 LF 行结尾”。

当我克隆这个存储库时,在拉取完成的那一刻,如果我这样做git status了,一些文件被标记为已更改(特别是 .sh 文件)

git diff节目

其中 FileContent 是文件中的所有文本。

我尝试过了:

  • git reset --hard
  • git update-index --assume-unchanged
  • git config --global core.autocrlf false
  • git config --global core.eol lf
  • dos2unix在单个文件上
  • 使用我的编辑器将特定文件的行尾更改为 \n (Phpstorm)

没有人对这个问题产生影响。

我也试过:

  • git rm --cached -rf 。-> 这删除了项目中的很多文件
  • 重新获取特定分支(`git fetch; git checkout HEAD path/)
  • 混帐添加 --renormalize 。-> 所有 .sh 文件都显示为已修改(按照上述配置从分支重新获取文件后只有 1 个)
  • git diff --ignore-all-space 什么都不显示
  • od path/file.sh显示文件的二进制版本(在设置上述配置之前实际上是文本)

如何让 git 尊重文件的eol=of价值.sh


编辑:通过删除索引rm .git/index并执行git reset --hard HEAD后,问题就消失了

另外(供参考):没有尝试 - core.autocrlf 为 false

0 投票
2 回答
35 浏览

sed - 从文件中删除换行符不起作用

我尝试使用 sed 从包含模式的行中删除换行符。我的台词是:

我希望它看起来像这样:

我的代码是:

代码不会改变任何东西。事实上,即使我删除模式并寻找 \n 它仍然不起作用

这似乎适用于所有线路:

但我不能让它只适用于包含 SourceField 的行。

我想了解为什么第一行不起作用,以及如何调整第二行以仅与包含该模式的行一起使用。

任何帮助,将不胜感激。

谢谢!