package Ġcom . github . mon os oul . git . update index . extended Ċ Ċ import Ġcom . github . mon os oul . git . update index . extended . logging . Slf 4 j Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vcs . changes . V cs Dirty Scope Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . vcs Util . V cs Util Ċ import Ġgit 4 idea . commands . Git Ċ import Ġgit 4 idea . commands . Git Command Result Ċ import Ġgit 4 idea . commands . Git Line Handler Ċ Ċ class ĠExtended Update Index Task ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġval Ġselected Files : ĠIterable < Virtual File >, ĊĠĠĠ Ġval Ġcommand : ĠExtended Update Index Command Ċ ) Ġ: ĠTask . Background able ( project , Ġ" Running Ġgit Ġupdate - index ") Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġby ĠS lf 4 j ĊĊĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Files ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġfile To V cs Root ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ({ Ġ(_, Ġv cs Root ) Ġ-> Ġv cs Root Ġ}, Ġ{ Ġ( file , Ġ_) Ġ-> Ġfile Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġ( vcs Root , Ġfiles ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Index Line Handler Factory ( command , Ġv cs Root , Ġfiles ). run And Log () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . forEach ( vcs Dirty Scope Manager :: file Dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠGit Line Handler . run And Log () Ġ= Ġrun ( Git . getInstance () :: run Command ) ĊĠĠĠĠĠĠĠ Ġ. take Unless ( Git Command Result :: success ) ĊĠĠĠĠĠĠĠ Ġ? . let ( Git Command Result :: getError Output ) ĊĠĠĠĠĠĠĠ Ġ? . forEach ( logger :: error ) ĊĊĠĠĠ Ġprivate Ġval ĠProject . update Index Line Handler Factory : ĠUpdate Index Line Handler Factory ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Service ( Update Index Line Handler Factory :: class . java ) ĊĊĠĠĠ Ġprivate Ġval ĠProject . vcs Dirty Scope Manager : ĠV cs Dirty Scope Manager ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠV cs Dirty Scope Manager . getInstance ( this ) ĊĊĠĠĠ Ġprivate Ġfun ĠProject . file To V cs Root ( file : ĠVirtual File ) Ġ= ĠV cs Util . get V cs Root For ( this , Ġfile )?. let Ġ{ Ġfile Ġto Ġit Ġ} Ċ }