]> source.dussan.org Git - jgit.git/commit
Improve footer parsing to allow multiline footers. 64/1172664/2
authorKamil Musin <kamilm@google.com>
Fri, 24 Nov 2023 14:17:26 +0000 (15:17 +0100)
committerKamil Musin <kamilm@google.com>
Fri, 24 Nov 2023 14:39:02 +0000 (15:39 +0100)
commit340cc787a0d14a0698d757a919ccd77e0a129fb0
tree839a9ad48fe2c544eb08b7c0cdb8de968b71b707
parent2a739ad2c1e948b34f6644eca39aa75fe020309d
Improve footer parsing to allow multiline footers.

According to the https://git-scm.com/docs/git-interpret-trailers the
CGit supports multiline trailers. Subsequent lines of such multiline
trailers have to start with a whitespace.

We also rewrite the original parsing code to make it easier to work
with. The old code had pointers moving both backwards and forwards at
the same time. In the rewritten code we first find the start of the last
paragraph and then do all the parsing.

Since all the getters of the FooterLine return String, I've considered
rewriting the parsing code to operate on strings. However the original
code seems to be written with the idea, that the data is only lazily
copied in getters and no extra allocations should be performed during
original parsing (ex. during RevWalk). The changed code keeps to this
idea.

Bug: Google b/312440626
Change-Id: Ie1e3b17a4a5ab767b771c95f00c283ea6c300220
org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/FooterLineTest.java
org.eclipse.jgit/src/org/eclipse/jgit/revwalk/FooterLine.java
org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevCommit.java