diffplug / diffplug/spotless

`ratchetFrom` doesn't support merge conflicts

オープン
#1,504 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Java
スター
5.6k
フォーク
559
平均マージ
1日 14時間
マージ済み PR(30日)
43

説明

This is an edge case.

I consider a local repository, during a merge conflict. I end with some files being removed locally, but in conflict with the remote head: during the conflict-management process, I end with something like:
```

cleanthat git status
On branch IntroduceSpotLess
Your branch is up to date with 'origin/IntroduceSpotLess'.

You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)

Unmerged paths:
(use "git add/rm ..." as appropriate to mark resolution)
deleted by us: java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java

Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: java/src/test/java/eu/solven/cleanthat/language/java/refactorer/test/ARefactorerCases.java
modified: java/src/test/java/eu/solven/cleanthat/language/java/refactorer/test/ATestCases.java

```
Here, `I'm moving java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java` into `java/src/test/java/eu/solven/cleanthat/language/java/refactorer/test/ARefactorerCases.java`

I end with an issue like:

```
[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.30.0:apply (applySpotless) on project java: Unable to format file /Users/blacelle/workspace3/cleanthat/java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.30.0:apply (applySpotless) on project java: Unable to format file /Users/blacelle/workspace3/cleanthat/java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java
...
Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to format file /Users/blacelle/workspace3/cleanthat/java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java
at com.diffplug.spotless.maven.SpotlessApplyMojo.process (SpotlessApplyMojo.java:51)
at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:214)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
...
Caused by: java.nio.file.NoSuchFileException: /Users/blacelle/workspace3/cleanthat/java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java
at sun.nio.fs.UnixException.translateToIOException (UnixException.java:92)
at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:111)
at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:116)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel (UnixFileSystemProvider.java:219)
at java.nio.file.Files.newByteChannel (Files.java:370)
at java.nio.file.Files.newByteChannel (Files.java:421)
at java.nio.file.Files.readAllBytes (Files.java:3205)
at com.diffplug.spotless.PaddedCell.calculateDirtyState (PaddedCell.java:189)
at com.diffplug.spotless.maven.SpotlessApplyMojo.process (SpotlessApplyMojo.java:45)
at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:214)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
...
```
where we try to clean a file whicle it does not exists.

I suppose it relates with the `ratchetFrom` feature (which is set to `origin/main `in my configuration).

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

`git status` に表示されるマージコンフリクト状態を、削除された `java/src/test/java/eu/solven/cleanthat/language/java/rules/test/ATestCases.java` と変更された `ARefactorerCases.java` を含む状態で再現し、その後、Maven プラグインが `origin/main` に設定された `ratchetFrom` をどのように処理するかを調べてください。Spotless Maven apply goal を実行し、フォーマット処理が削除されたパスを読み取ろうとしなくなったことを確認してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
git, java
領域
build-system, tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。