view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/LocalRepositoryUtil.java @ 2:ebcad5c4378e

utility added
author Pavel.Sher
date Mon, 14 Jul 2008 19:46:11 +0400
parents
children 7047f643747f
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import jetbrains.buildServer.TempFiles;
import jetbrains.buildServer.util.FileUtil;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Pavel.Sher
 *         Date: 14.07.2008
 */
public class LocalRepositoryUtil {
  private final static TempFiles myTempFiles = new TempFiles();
  private final static Map<String, File> myRepositories = new HashMap<String, File>();
  static {
    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
      public void run() {
        myTempFiles.cleanup();
      }
    }));
  }

  public static File prepareRepository(@NotNull String repPath) throws IOException {
    File repository = myRepositories.get(repPath);
    if (repository != null) return repository;
    final File tempDir = myTempFiles.createTempDir();
    FileUtil.copyDir(new File(repPath), tempDir);
    FileUtil.rename(new File(tempDir, "hg"), new File(tempDir, ".hg"));
    myRepositories.put(repPath, tempDir);
    return tempDir;
  }
}