// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 Ġ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 Ġcom . jetbrains . change Reminder Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vcs . FilePath Ċ import Ġcom . intellij . openapi . vcs . Project Level V cs Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . vcs . log . data . index . V cs Log Persistent Index Ċ import Ġcom . intellij . vcs . log . impl . V cs Log Manager Ċ import Ġgit 4 idea . Git V cs Ċ Ċ fun Ġget Git Root Files ( project : ĠProject , Ġfiles : ĠCollection < FilePath >): ĠMap < Virtual File , ĠCollection < FilePath >> Ġ{ ĊĠ Ġval Ġroot Files Ġ= ĠHashMap < Virtual File , ĠHashSet < FilePath >>() ĊĠ Ġval Ġproject Level V cs Manager Ġ= ĠProject Level V cs Manager . getInstance ( project ) ĊĠ Ġfiles . forEach Ġ{ ĠfilePath Ġ-> ĊĠĠĠ Ġval Ġfile V cs Ġ= Ġproject Level V cs Manager . get V cs Root Object For ( filePath ) ĊĠĠĠ Ġif Ġ( file V cs Ġ!= Ġnull Ġ&& Ġfile V cs . vcs Ġis ĠGit V cs ) Ġ{ ĊĠĠĠĠĠ Ġroot Files . get Or Put ( file V cs . path ) Ġ{ ĠHashSet () Ġ}. add ( filePath ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġroot Files Ċ } Ċ Ċ fun Ġ< T , ĠK > ĠMutable Map < T , ĠK >. retain All ( keys : ĠCollection < T >) Ġ= ĊĠ Ġthis . keys . subtract ( keys ). forEach Ġ{ ĊĠĠĠ Ġthis . remove ( it ) ĊĠ Ġ} Ċ Ċ internal Ġfun ĠProject . get Git Roots () Ġ= ĠProject Level V cs Manager . getInstance ( this ). all V cs Roots . filter Ġ{ Ġit . vcs Ġis ĠGit V cs Ġ} Ċ Ċ internal Ġfun ĠProject . any Git Roots For Indexing (): ĠBoolean Ġ{ ĊĠ Ġval Ġgit Roots Ġ= Ġthis . get Git Roots () ĊĠ Ġval Ġroots For Index Ġ= ĠV cs Log Persistent Index . getRoot s For Indexing ( V cs Log Manager . find Log Providers ( git Roots , Ġthis )) ĊĊĠ Ġreturn Ġroots For Index . isNotEmpty () Ċ }