Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Cleanup.java @ 356:53b430731041 remote-run/TW-19984
TW-19984 ensure map file cleaned as well
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 27 Jan 2012 19:34:03 +0400 |
parents | |
children | a1d70e112d47 |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.Settings; import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.util.filters.Filter; import jetbrains.buildServer.util.filters.FilterUtil; import jetbrains.buildServer.vcs.VcsManager; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; /** * @author dmitry.neverov */ public class Cleanup implements Runnable { private final VcsManager myVcsManager; private final MirrorManager myMirrorManager; private final HgPathProvider myHgPathProvider; public Cleanup(@NotNull final VcsManager vcsManager, @NotNull final MirrorManager mirrorManager, @NotNull final HgPathProvider hgPathProvider) { myVcsManager = vcsManager; myMirrorManager = mirrorManager; myHgPathProvider = hgPathProvider; } public void run() { Map<String, File> allMirrorDirs = myMirrorManager.getMappings(); for (VcsRoot root : mercurialVcsRoots()) { allMirrorDirs.remove(urlOf(root)); } deleteDirs(allMirrorDirs.values()); } private String urlOf(VcsRoot root) { Settings s = new Settings(myHgPathProvider, root); return s.getRepositoryUrlWithCredentials(); } private Collection<VcsRoot> mercurialVcsRoots() { List<VcsRoot> roots = new ArrayList<VcsRoot>(myVcsManager.getAllRegisteredVcsRoots()); FilterUtil.filterCollection(roots, new Filter<VcsRoot>() { public boolean accept(@NotNull final VcsRoot root) { return Constants.VCS_NAME.equals(root.getVcsName()); } }); return roots; } private void deleteDirs(Collection<File> dirs) { for (File dir : dirs) { myMirrorManager.lockDir(dir); try { myMirrorManager.forgetDir(dir); FileUtil.delete(dir); } finally { myMirrorManager.unlockDir(dir); } } } }