70a712729b63047b9760b72d3e2b0a45ff176646
   1import os
   2import subprocess
   3
   4
   5class GitImporter(object):
   6    """An importer for testgit repositories.
   7
   8    This importer simply delegates to git fast-import.
   9    """
  10
  11    def __init__(self, repo):
  12        """Creates a new importer for the specified repo.
  13        """
  14
  15        self.repo = repo
  16
  17    def do_import(self, base):
  18        """Imports a fast-import stream to the given directory.
  19
  20        Simply delegates to git fast-import.
  21        """
  22
  23        dirname = self.repo.get_base_path(base)
  24        if self.repo.local:
  25            gitdir = self.repo.gitpath
  26        else:
  27            gitdir = os.path.abspath(os.path.join(dirname, '.git'))
  28        path = os.path.abspath(os.path.join(dirname, 'git.marks'))
  29
  30        if not os.path.exists(dirname):
  31            os.makedirs(dirname)
  32
  33        args = ["git", "--git-dir=" + gitdir, "fast-import", "--quiet", "--export-marks=" + path]
  34
  35        if os.path.exists(path):
  36            args.append("--import-marks=" + path)
  37
  38        child = subprocess.Popen(args)
  39        if child.wait() != 0:
  40            raise CalledProcessError