From bd4fc86db14f2b0c220fc3e0d1aca10df1adebfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 15 Jun 2020 17:03:54 +0200 Subject: [PATCH] Only use LF for line breaks in diffs Git uses LF for line breaks in diffs, not CR or other delimiters. When we are using other delimiters for diving diff output into lines, too, we can get errors because diff lines can contain CRs. When we try to split such lines, we get exceptions because these lines cannot be parsed --- CHANGELOG.md | 1 + .../src/main/java/sonia/scm/repository/spi/GitHunkParser.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e1db72664..39ba68b55b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixes configuration of jetty listener address with system property `jetty.host` ([#1173](https://github.com/scm-manager/scm-manager/pull/1173), [#1174](https://github.com/scm-manager/scm-manager/pull/1174)) - Fixes loading plugin bundles with context path `/` ([#1182](https://github.com/scm-manager/scm-manager/pull/1182/files), [#1181](https://github.com/scm-manager/scm-manager/issues/1181)) - Sets the new plugin center URL once ([#1184](https://github.com/scm-manager/scm-manager/pull/1184)) +- Diffs with CR characters are parsed correctly ([#1185](https://github.com/scm-manager/scm-manager/pull/1185)) ## [2.0.0] - 2020-06-04 ### Added diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHunkParser.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHunkParser.java index 197c1ed03a..9b2abd378a 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHunkParser.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHunkParser.java @@ -49,7 +49,7 @@ final class GitHunkParser { public List parse(String content) { List hunks = new ArrayList<>(); - try (Scanner scanner = new Scanner(content).useDelimiter("[\n\r\u2028\u2029\u0085]+")) { + try (Scanner scanner = new Scanner(content).useDelimiter("\n")) { while (scanner.hasNext()) { String line = scanner.next(); if (line.startsWith("@@")) {