diff --git a/build.sbt b/build.sbt index 9ef218a..f0d62f7 100644 --- a/build.sbt +++ b/build.sbt @@ -55,7 +55,7 @@ "com.zaxxer" % "HikariCP" % "4.0.2", "com.typesafe" % "config" % "1.4.1", "fr.brouillard.oss.security.xhub" % "xhub4j-core" % "1.1.0", - "com.github.bkromhout" % "java-diff-utils" % "2.1.1", + "io.github.java-diff-utils" % "java-diff-utils" % "4.9", "org.cache2k" % "cache2k-all" % "1.6.0.Final", "net.coobird" % "thumbnailator" % "0.4.13", "com.github.zafarkhaja" % "java-semver" % "0.9.0", @@ -260,11 +260,6 @@ ) -licenseOverrides := { - case DepModuleInfo("com.github.bkromhout", "java-diff-utils", _) => - LicenseInfo(LicenseCategory.Apache, "Apache-2.0", "http://www.apache.org/licenses/LICENSE-2.0") -} - Test / testOptions ++= { if (scala.util.Properties.isWin) { Seq( diff --git a/src/main/scala/gitbucket/core/service/PullRequestService.scala b/src/main/scala/gitbucket/core/service/PullRequestService.scala index fd68a8a..23093de 100644 --- a/src/main/scala/gitbucket/core/service/PullRequestService.scala +++ b/src/main/scala/gitbucket/core/service/PullRequestService.scala @@ -1,9 +1,10 @@ package gitbucket.core.service +import com.github.difflib.DiffUtils +import com.github.difflib.patch.DeltaType import gitbucket.core.model.{CommitComments => _, Session => _, _} import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile.profile.blockingApi._ -import difflib.{Delta, DiffUtils} import gitbucket.core.service.RepositoryService.RepositoryInfo import gitbucket.core.api.JsonFormat import gitbucket.core.controller.Context @@ -441,16 +442,17 @@ case Left(oldLine) => updateCommitCommentPosition(commentId, newCommitId, Some(oldLine), None) case Right(newLine) => var counter = newLine - patch.getDeltas.asScala.filter(_.getOriginal.getPosition < newLine).foreach { delta => + patch.getDeltas.asScala.filter(_.getSource.getPosition < newLine).foreach { delta => delta.getType match { - case Delta.TYPE.CHANGE => - if (delta.getOriginal.getPosition <= newLine - 1 && newLine <= delta.getOriginal.getPosition + delta.getRevised.getLines.size) { + case DeltaType.CHANGE => + if (delta.getSource.getPosition <= newLine - 1 && newLine <= delta.getSource.getPosition + delta.getTarget.getLines.size) { counter = -1 } else { - counter = counter + (delta.getRevised.getLines.size - delta.getOriginal.getLines.size) + counter = counter + (delta.getTarget.getLines.size - delta.getSource.getLines.size) } - case Delta.TYPE.INSERT => counter = counter + delta.getRevised.getLines.size - case Delta.TYPE.DELETE => counter = counter - delta.getOriginal.getLines.size + case DeltaType.INSERT => counter = counter + delta.getTarget.getLines.size + case DeltaType.DELETE => counter = counter - delta.getSource.getLines.size + case DeltaType.EQUAL => // Do nothing } } if (counter >= 0) {