/**
  * Update index (delete and remove files)
  *
  * @param project the project
  * @param root a vcs root
  * @param added added/modified files to commit
  * @param removed removed files to commit
  * @param exceptions a list of exceptions to update
  * @return true if index was updated successfully
  */
 private static boolean updateIndex(
     final Project project,
     final VirtualFile root,
     final Collection<FilePath> added,
     final Collection<FilePath> removed,
     final List<VcsException> exceptions) {
   boolean rc = true;
   if (!added.isEmpty()) {
     try {
       GitFileUtils.addPaths(project, root, added);
     } catch (VcsException ex) {
       exceptions.add(ex);
       rc = false;
     }
   }
   if (!removed.isEmpty()) {
     try {
       GitFileUtils.delete(project, root, removed, "--ignore-unmatch");
     } catch (VcsException ex) {
       exceptions.add(ex);
       rc = false;
     }
   }
   return rc;
 }
 /** {@inheritDoc} */
 public List<VcsException> scheduleMissingFileForDeletion(List<FilePath> files) {
   ArrayList<VcsException> rc = new ArrayList<VcsException>();
   Map<VirtualFile, List<FilePath>> sortedFiles;
   try {
     sortedFiles = GitUtil.sortFilePathsByGitRoot(files);
   } catch (VcsException e) {
     rc.add(e);
     return rc;
   }
   for (Map.Entry<VirtualFile, List<FilePath>> e : sortedFiles.entrySet()) {
     try {
       final VirtualFile root = e.getKey();
       GitFileUtils.delete(myProject, root, e.getValue());
       markRootDirty(root);
     } catch (VcsException ex) {
       rc.add(ex);
     }
   }
   return rc;
 }