[
https://issues.apache.org/jira/browse/HBASE-29388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
guluo resolved HBASE-29388.
---------------------------
Assignee: guluo
Resolution: Fixed
> 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
> Assignee: guluo
> Priority: Major
> Labels: pull-request-available
>
> 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]
> {code:java}
> // 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();
> }
> } {code}
>
> 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)