// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġgit 4 idea . diff Ċ Ċ import Ġcom . intellij . openapi . vcs . FilePath Ċ import Ġcom . intellij . openapi . vcs . V cs Exception Ċ import Ġcom . intellij . openapi . vcs . changes . Content Revision Ċ import Ġcom . intellij . openapi . vcs . history . V cs Revision Number Ċ import Ġcom . intellij . vcs Util . V cs Util Ċ import Ġcom . intellij . vcs Util . V cs Util . get FilePath Ċ import Ġgit 4 idea . index . Git Index Util Ċ import Ġgit 4 idea . repo . Git Repository Ċ Ċ abstract Ġclass ĠGit Sub module Content Revision ( private Ġval Ġsubmodule : ĠGit Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġrevision Number : ĠV cs Revision Number ) Ġ: ĠContent Revision Ġ{ ĊĊĠ Ġoverride Ġfun ĠgetFile (): ĠFilePath Ġ{ ĊĠĠĠ Ġreturn ĠV cs Util . get FilePath ( sub module . root ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Revision Number (): ĠV cs Revision Number Ġ{ ĊĠĠĠ Ġreturn Ġrevision Number ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠCom mitted ( private Ġval Ġparent Repo : ĠGit Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubmodule : ĠGit Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Number : ĠV cs Revision Number ) Ġ: ĠGit Sub module Content Revision ( sub module , Ġrevision Number ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent (): ĠString ? Ġ{ ĊĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġget FilePath ( sub module . root ) ĊĠĠĠĠĠ Ġval Ġls Tree Ġ= ĠGit Index Util . list Tree ( parent Repo , ĠlistOf ( filePath ), Ġrevision Number ) ĊĠĠĠĠĠ Ġif Ġ( ls Tree . size Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠV cs Exception (" Unexpected Ġoutput Ġof Ġls - tree Ġcommand Ġfor Ġsubmodule Ġ[$ filePath ] Ġat Ġ[$ revision Number ]: Ġ$ ls Tree ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġtree Ġ= Ġls Tree [ 0 ] ĊĠĠĠĠĠ Ġif Ġ( tree Ġ! is ĠGit Index Util . St aged Sub repo ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠV cs Exception (" Unexpected Ġtype Ġof Ġls - tree Ġfor Ġsubmodule Ġ[$ filePath ] Ġat Ġ[$ revision Number ]: Ġ$ tree ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( tree . path Ġ!= ĠfilePath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠV cs Exception (" Sub module Ġpath Ġ[ ${ sub module . root . path }] Ġdoesn 't Ġmatch Ġthe Ġls - tree Ġoutput Ġpath Ġ[ ${ tree . path . path }] ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġtree . blob Hash ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠCurrent ( private Ġval Ġsubmodule : ĠGit Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Number : ĠV cs Revision Number ) Ġ: ĠGit Sub module Content Revision ( sub module , Ġrevision Number ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetContent (): ĠString ? Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsubmodule . current Revision ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġcreate Revision ( parent Repo : ĠGit Repository , Ġsubmodule : ĠGit Repository , Ġrevision Number : ĠV cs Revision Number ): ĠContent Revision Ġ{ ĊĠĠĠĠĠ Ġreturn ĠGit Sub module Content Revision . Commit ted ( parent Repo , Ġsubmodule , Ġrevision Number ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġcreate Current Revision ( sub module : ĠGit Repository ): ĠContent Revision Ġ{ ĊĠĠĠĠĠ Ġreturn ĠGit Sub module Content Revision . Current ( sub module , ĠV cs Revision Number . NULL ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } ĊĊ