Index: org/netbeans/modules/vcscore/caching/VcsCache.java =================================================================== RCS file: /shared/data/helm/cvs/repository/vcscore/src/org/netbeans/modules/vcscore/caching/VcsCache.java,v retrieving revision 1.61 diff -c -r1.61 VcsCache.java *** org/netbeans/modules/vcscore/caching/VcsCache.java 12 Nov 2003 17:34:37 -0000 1.61 --- org/netbeans/modules/vcscore/caching/VcsCache.java 1 Apr 2004 18:12:48 -0000 *************** *** 259,264 **** --- 259,290 ---- if (doesStrategyApply(dir, strategy, CacheHandler.STRAT_REFRESH) || doesStrategyApply(dir, strategy, CacheHandler.STRAT_DISK)) { refreshStrategyWhenNonLocal.put(dir.getAbsolutePath(), new Integer(strategy)); + refreshParentIfNecessary(dir, strategy); + } + } else { + CacheDir[] subdirs = dir.getSubDirs(); + for (int i = 0; i < subdirs.length; i++) { + if (subdirs[i].isLocal()) continue; + Integer refresh = (Integer) refreshStrategyWhenNonLocal.remove(subdirs[i].getAbsolutePath()); + if (refresh != null) { + loadDir(subdirs[i], refresh.intValue(), null); + } + } + } + } + + private void refreshParentIfNecessary(CacheDir dir, int strategy) { + //System.out.println("refreshParentIfNecessary("+dir.getAbsolutePath()+", "+strategy+")"); + CacheDir parent = dir.getParent(); + if (parent != null) { + Integer refresh = (Integer) refreshStrategyWhenNonLocal.get(parent.getAbsolutePath()); + if (refresh != null) { + refreshParentIfNecessary(parent, strategy); + } else { + if (!((VcsCacheDir) parent).isBeingLoaded()) { + //System.out.println("REFRESHING NECESSARY PARENT: "+parent); + loadDir(parent, strategy, null); + } } } } *************** *** 664,670 **** sDir = origDir; handler.addCacheLocker(locker, sDir); } ! Integer refresh = (Integer) refreshStrategyWhenNonLocal.get(sDir.getAbsolutePath()); if (refresh != null) { loadDir(sDir, refresh.intValue(), null); } --- 690,696 ---- sDir = origDir; handler.addCacheLocker(locker, sDir); } ! Integer refresh = (Integer) refreshStrategyWhenNonLocal.remove(sDir.getAbsolutePath()); if (refresh != null) { loadDir(sDir, refresh.intValue(), null); }