package Ġno . el hub . dev xp . auto changelog . project Ċ Ċ import Ġio . github . ser pro 6 9 . k faker . F aker Ċ import Ġio . kot est . core . spec . style . Describe Spec Ċ import Ġio . kot est . matchers . collections . should Contain Exactly Ċ import Ġio . kot est . matchers . collections . should Have Size Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . string . should Start With Ċ import Ġno . el hub . dev xp . auto changelog . extensions . delete Ċ import Ġno . el hub . dev xp . auto changelog . extensions . description Ċ import Ġno . el hub . dev xp . auto changelog . git . Git Commit Ċ import Ġno . el hub . dev xp . auto changelog . git . Git Message Ċ import Ġorg . eclipse . j git . api . Git Ċ import Ġorg . eclipse . j git . lib . ObjectId Ċ import Ġorg . eclipse . j git . rev walk . Rev Commit Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . time . LocalDate Ċ Ċ class ĠGit Repo Test Ġ: ĠDescribe Spec ({ ĊĠĠĠ Ġdescribe (" Test Repository ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Ġ= ĠGit Repo ( Test Repository . git ) ĊĠĠĠĠĠĠĠ Ġcontext (" git Ġlog ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġgit Ġref Ġfor Ġa Ġgiven Ġversion ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . find Tag Ref ( Semantic Version ( 1 , Ġ 1 , Ġ 0 )) ?. name ĠshouldBe Ġ" refs / tags / v 1 . 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġfind Ġa Ġcommit Ġfor Ġa Ġgiven Ġref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġrepo . find Commit Id ( Semantic Version ( 1 , Ġ 1 , Ġ 0 )) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . find Commit ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ?. short Message Ġshould Start With Ġ" Merge Ġpull Ġrequest Ġ# 1 9 7 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġfind Ġa Ġparent Ġfor Ġa Ġgiven Ġref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġrepo . find Commit Id ( Semantic Version ( 1 , Ġ 1 , Ġ 0 )) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . find Parent ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ?. short Message ĠshouldBe Ġ" Bump ĠRuby Ġversion Ġto Ġ 2 . 4 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġlog Ġof Ġcommit Ġranges ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= ĠObjectId . fromString (" 5 f 0 6 9 6 2 bf 9 a 4 8 4 a 3 5 a 3 a 3 7 c 2 4 f 3 9 3 3 a 9 1 6 8 e 9 0 ff ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠObjectId . fromString (" c 2 5 aae 9 ec 6 3 0 c 5 4 6 9 9 9 a 5 cd 6 2 7 4 0 6 3 9 7 4 6 ef bc 1 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . log ( start , Ġend ). toList () Ġshould Have Size Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġentire Ġlog ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . log (). toList () Ġshould Have Size Ġ 4 9 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" construct ing ĠGit Log ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġgit : ĠGit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFiles . create Temp Directory (" test - git ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Ġ= ĠGit . init (). set Directory ( path . to File ()). call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Initial ĠCommit ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Second Ġcommit \ n \ n Release Ġversion Ġ 0 . 1 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 1 . 0 "). set Force Update ( true ). call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Third Ġ 1 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Third Ġ 2 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Third Ġ 3 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Third Ġcommit \ n \ n Release Ġversion Ġ 0 . 2 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( false ). setName (" v 0 . 2 . 0 "). set Force Update ( true ). call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Four th Ġ 1 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Four th Ġ 2 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Four th Ġ 3 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Four th Ġcommit \ n \ n Release Ġversion Ġ 0 . 3 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 3 . 0 "). set Force Update ( true ). call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" F ifth Ġcommit \ n \ n Add Ġtemp 5 . txt Ġfile ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Six th Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠafterEach Ġ{ Ġpath . delete () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġconstructed ĠGit Log Ġout Ġof Ġa Ġsequence Ġof Ġcommits ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Repo ( git ). construct Log (). commits Ġshould Have Size Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġconstructed Ġlog Ġwith Ġthe Ġ' end ' Ġcommit ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommit Ġ= Ġgit . add Commit ( path , Ġ" Se vent h Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 4 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Commit Ġ= Ġgit . add Commit ( path , Ġ" E ighth Ġcommit \ n \ n Release Ġversion Ġ 0 . 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 5 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Repo ( git ). construct Log ( end Ġ= Ġcommit . id ). commits Ġshould Contain Exactly ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Commit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Message (" E ighth Ġcommit ", ĠlistOf (" Release Ġversion Ġ 0 . 5 . 0 ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Commit . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġconstructed Ġlog Ġwith Ġthe Ġ' start ' Ġcommit ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommit Ġ= Ġgit . add Commit ( path , Ġ" Se vent h Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 4 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" E ighth Ġcommit \ n \ n Release Ġversion Ġ 0 . 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 5 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Repo ( git ). construct Log ( start Ġ= Ġcommit . id ). commits Ġshould Have Size Ġ 1 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġconstructed Ġlog Ġconsisting Ġof Ġcommits Ġwith Ġlinked ĠJIRA ĠIssues ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse vent h Ġ= Ġgit . add Commit ( path , Ġ" Se vent h Ġcommit \ n \ n Commit Ġdescription \ n \ n $ jira Issues ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( false ). setName (" v 0 . 4 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe ighth Ġ= Ġgit . add Commit ( path , Ġ" E ighth Ġcommit \ n \ n Release Ġversion Ġ 0 . 5 . 0 \ n \ n $ jira Issues ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( true ). setName (" v 0 . 5 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Repo ( git ). construct Log Ġ{ Ġit . description . contains ( jira Issues ) Ġ}. commits Ġshould Contain Exactly ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Commit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Message (" E ighth Ġcommit ", ĠlistOf (" Release Ġversion Ġ 0 . 5 . 0 ", Ġj ira Issues )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ighth . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Commit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGit Message (" Se vent h Ġcommit ", ĠlistOf (" Commit Ġdescription ", Ġj ira Issues )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse vent h . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 4 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġa Ġreversed Ġchange list Ġfrom Ġthe Ġlog Ġof Ġcommits ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠGit Repo ( git ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcl Ġ= Ġr . create Change list ( r . construct Log ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl . changes . entries Ġshould Contain Exactly Ġchange list . changes . entries . reversed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġnot Ġhave ĠUN RELEASE D Ġsection Ġin Ġthe Ġchangelog Ġif ĠHEAD Ġis Ġat Ġgit Ġtag Ġwith Ġa Ġpreceding Ġtag ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( false ). setName (" v 0 . 4 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . add Commit ( path , Ġ" Test Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit . tag (). set Annotated ( false ). setName (" v 0 . 5 . 0 "). set Force Update ( true ). call () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠGit Repo ( git ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcl Ġ= Ġr . create Change list ( r . construct Log ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl . changes [ Un released ] ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ Ċ private Ġfun ĠGit . add Commit ( repo Path : ĠPath , Ġmessage : ĠString ): ĠRev Commit Ġ{ ĊĠĠĠ Ġrepo Path . resolve ("${ faker . random . random String ( 1 0 )}. txt "). to File (). createNew File () ĊĠĠĠ Ġadd (). add File pattern (". "). call () ĊĠĠĠ Ġreturn Ġcommit (). setMessage ( message ). call () Ċ } Ċ Ċ private Ġval Ġfaker Ġ= ĠFaker () Ċ Ċ private Ġconst Ġval Ġj ira Issues Ġ= Ġ" J IRA ĠIssues : ĠTD - 1 8 7 2 " Ċ Ċ private Ġval Ġchange list Ġ= ĠChange list ( ĊĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠ ĠUn released Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Six th Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" F ifth Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 3 . 0 ") Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= ĠChangelog Entry . Release ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠSemantic Version (" 0 . 3 . 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Four th Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Four th Ġ 3 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Four th Ġ 2 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Four th Ġ 1 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 2 . 0 ") Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= ĠChangelog Entry . Release ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠSemantic Version (" 0 . 2 . 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Third Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Third Ġ 3 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Third Ġ 2 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Third Ġ 1 Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠSemantic Version (" 0 . 1 . 0 ") Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= ĠChangelog Entry . Release ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠSemantic Version (" 0 . 1 . 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Second Ġcommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChangelog Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreaking Change Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠlistOf (" Initial ĠCommit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ ) Ċ