Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/Cleanup.java @ 365:a1d70e112d47
Add logging for cleanup
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Mon, 30 Jan 2012 10:41:01 +0400 |
parents | 53b430731041 |
children | a75f2b73b1d8 |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial; import com.intellij.openapi.diagnostic.Logger; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.Settings; import jetbrains.buildServer.serverSide.impl.LogUtil; import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.vcs.VcsManager; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.*; /** * @author dmitry.neverov */ public class Cleanup implements Runnable { private static Logger LOG = Logger.getInstance(Cleanup.class.getName()); 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> mercurialRoots = new ArrayList<VcsRoot>(); for (VcsRoot root : myVcsManager.getAllRegisteredVcsRoots()) { if (isMercurialRoot(root)) mercurialRoots.add(root); } logRegisteredMercurialRoots(mercurialRoots); return mercurialRoots; } private boolean isMercurialRoot(VcsRoot root) { return Constants.VCS_NAME.equals(root.getVcsName()); } private void deleteDirs(Collection<File> dirs) { logUnusedLocalClones(dirs); for (File dir : dirs) { myMirrorManager.lockDir(dir); try { myMirrorManager.forgetDir(dir); FileUtil.delete(dir); } finally { myMirrorManager.unlockDir(dir); } } } private void logRegisteredMercurialRoots(@NotNull List<VcsRoot> roots) { StringBuilder sb = new StringBuilder(); sb.append("Registered mercurial roots: "); Iterator<VcsRoot> iter = roots.iterator(); while (iter.hasNext()) { sb.append(LogUtil.describe(iter.next())); if (iter.hasNext()) sb.append(", "); } LOG.debug(sb.toString()); } private void logUnusedLocalClones(@NotNull Collection<File> dirs) { StringBuilder sb = new StringBuilder(); sb.append("Unused local clones: "); Iterator<File> iter = dirs.iterator(); while (iter.hasNext()) { sb.append(iter.next().getAbsolutePath()); if (iter.hasNext()) sb.append(", "); } LOG.info(sb.toString()); } }