void (ChangelistBuilder builder, Set<FilePath> dirtyFiles, Collection<HgChange> alreadyProcessed) { // exclude already processed for (HgChange c : alreadyProcessed) { dirtyFiles.remove(c.beforeFile().toFilePath()); dirtyFiles.remove(c.afterFile().toFilePath()); } final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); final FileDocumentManager fileDocumentManager = FileDocumentManager.getInstance(); for (FilePath filePath : dirtyFiles) { final VirtualFile vf = filePath.getVirtualFile(); if (vf != null && fileDocumentManager.isFileModified(vf)) { final VirtualFile root = vcsManager.getVcsRootFor(vf); if (root != null && HgUtil.isHgRoot(root)) { final HgRevisionNumber beforeRevisionNumber = new HgWorkingCopyRevisionsCommand(myProject).firstParent(root); final ContentRevision beforeRevision = (beforeRevisionNumber == null ? null : HgContentRevision.create(myProject, new HgFile(myProject, vf), beforeRevisionNumber)); builder.processChange(new Change(beforeRevision, CurrentContentRevision.create(filePath), FileStatus.MODIFIED), myVcsKey); } } } }