void (String s) { LOG.debug("update for: " + s); //todo check canceled - check VCS's ready for asynchronous queries // get last remote revision for file final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(s)); final ItemLatestState state; final DiffProvider diffProvider = myVcsRoot.getVcs().getDiffProvider(); if (vf == null) { // doesnt matter if directory or not state = diffProvider.getLastRevision(getFilePath(s, false)); } else { state = diffProvider.getLastRevision(vf); } final VcsRevisionNumber newNumber = (state == null) || state.isDefaultHead() ? UNKNOWN : state.getNumber(); final Pair<VcsRoot, VcsRevisionNumber> oldPair; // update value in cache synchronized (myLock) { oldPair = myData.get(s); myData.put(s, Pair.create(myVcsRoot, newNumber)); } if (oldPair == null || oldPair.getSecond().compareTo(newNumber) != 0) { LOG.debug("refresh triggered by " + s); mySomethingChanged = true; } }