guluo created HBASE-29388: ----------------------------- Summary: mvn spotless:apply changes line endings (CRLF to LF) on Windows Key: HBASE-29388 URL: https://issues.apache.org/jira/browse/HBASE-29388 Project: HBase Issue Type: Bug Environment: hbase master Reporter: guluo
For master branch, after executing `mvn spotless:apply` on Windows, executing `git diff` commands would display warnings message: "warning: LF will be replaced by CRLF in **", as fallow. warning: LF will be replaced by CRLF in CHANGES.txt. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in LICENSE.txt. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in NOTICE.txt. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in README.md. The file will have its original line endings in your working directory ... And core.autolf = true or unset core.autolf in my .gitconfig, the results are all the same. This issue doesn't exist on Linux, I'm unsure if it occurs on macOS. I checked the commit history and found that this might have been caused by HBASE-29344 The reason. spotless may change line endings (CRLF to LF) spotless introduce a feature in version 2.40.0 : Set the default line endings to be GIT_ATTRIBUTES_FAST_ALLSAME. Details see: [https://github.com/diffplug/spotless/commit/54c0af2bb701fc1b0756b8ff1bfd568d0c43bf65] [https://github.com/diffplug/spotless/pull/1838/files] // spotless // GitAttributesLineEndings.LazyAllTheSame.calculateState() protected String calculateState() throws Exception { var files = toFormat.get().iterator(); if (files.hasNext()) { Runtime runtime = new RuntimeInit(projectDir).atRuntime(); return runtime.getEndingFor(files.next()); } else { // I suspect this code might convert some CRLF files to LF format after executing 'mvn spotless:apply' on Windows return LineEnding.UNIX.str(); } } My solution: Introduce a tag in Spotless's configuration while still using the previously default LineEnding.GIT_ATTRIBUTES <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> <version>${spotless.version}</version> <configuration> <lineEndings>GIT_ATTRIBUTES</lineEndings> </configuration> </plugin> -- This message was sent by Atlassian Jira (v8.20.10#820010)