aaronpuchert added a comment. In D124563#3478978 <https://reviews.llvm.org/D124563#3478978>, @aaronpuchert wrote:
> Git will apply the LF -> CRLF transformation when it checks out itself. Git > doesn't show the file as modified because after cleaning the file (i.e. > applying CRLF -> LF) it's the same as in the index. One way to look at this is that the two filters //clean// (for checking in) and //smudge// (for checking out) are neither left nor right inverses of each other. - The composition //clean// ∘ //smudge// not being the identity caused our original problem of files showing up modified with no way to fix it: no checked-out file could reproduce the checked-in file. - The composition //smudge// ∘ //clean// not being the identity caused the intermittent issue after `arc patch`: the file didn't show up as modified, even though it wasn't what Git would produce on checkout. The documentation says that //clean// should be <https://www.git-scm.com/docs/gitattributes> a projection <https://en.wikipedia.org/wiki/Projection_(mathematics)>: > For best results, `clean` should not alter its output further if it is run > twice ("clean→clean" should be equivalent to "clean") We should also have //clean// ∘ //smudge// ∘ //clean// = //clean//, and that's what `git add --renormalize` uses: by checking in cleaned files we're in the subset of files on which //clean// ∘ //smudge// is the identity. In fact in our case //clean// should even be the equalizer <https://en.wikipedia.org/wiki/Equaliser_(mathematics)> of //smudge// ∘ //clean// and the identity on checked-in files, that is be able to produce every file that survives the round-trip. In case you needed an advertisement for category theory <https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/>. ;) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124563/new/ https://reviews.llvm.org/D124563 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits