Beispiel #1
0
def init(args):
    """Initializes repository"""
    man = load_manifest()

    for (name, project) in man.projects.iteritems():
        logging.warn("Initializing project: %s" % name)
        clone_remote = man.remotes[project.from_remote]
        clone_url = clone_remote.fetch % name
        p = GitCommand(
            None,
            ["clone", "-o", project.from_remote, "-n", clone_url, project.dir])
        p.Wait()

        repo = GitRepo(workdir_for_project(project))
        if repo.command(["show-ref", "-q", "HEAD"]) != 0:
            # There is no HEAD (maybe origin/master doesnt exist) so check out the tracking
            # branch
            repo.check_command([
                "checkout", "--track", "-b", project.tracking_branch,
                project.remote_refspec
            ])
        else:
            repo.check_command(["checkout"])

    ensure_remotes([])
    fetch([])
    checkout_branches([])
Beispiel #2
0
def hard_reset_branches(args):
    """Hard-resets your tracking branches to match the remotes."""
    checkout_branches(args)
    man = load_manifest()
    for (name, project) in man.projects.iteritems():
        print >> sys.stderr, "Hard resetting tracking branch in project: %s" % name
        repo = GitRepo(workdir_for_project(project))
        repo.check_command(["reset", "--hard", project.remote_refspec])
Beispiel #3
0
def hard_reset_branches(args):
  """Hard-resets your tracking branches to match the remotes."""
  checkout_branches(args)
  man = load_manifest()
  for (name, project) in man.projects.iteritems():
    print >>sys.stderr, "Hard resetting tracking branch in project: %s" % name
    repo = GitRepo(workdir_for_project(project))
    repo.check_command(["reset", "--hard", project.remote_refspec])
Beispiel #4
0
def checkout_branches(args):
    """Checks out the tracking branches listed in the manifest."""

    ensure_tracking_branches([])
    if check_dirty([]) and '-f' not in args:
        raise Exception("Cannot checkout new branches with dirty projects.")

    man = load_manifest()
    for (name, project) in man.projects.iteritems():
        print >> sys.stderr, "Checking out tracking branch in project: %s" % name
        repo = GitRepo(workdir_for_project(project))
        # Check that sucker out
        repo.check_command(["checkout", project.tracking_branch])
Beispiel #5
0
def checkout_branches(args):
  """Checks out the tracking branches listed in the manifest."""

  ensure_tracking_branches([])
  if check_dirty([]) and '-f' not in args:
    raise Exception("Cannot checkout new branches with dirty projects.")
  
  man = load_manifest()
  for (name, project) in man.projects.iteritems():
    print >>sys.stderr, "Checking out tracking branch in project: %s" % name
    repo = GitRepo(workdir_for_project(project))
    # Check that sucker out
    repo.check_command(["checkout", project.tracking_branch])
Beispiel #6
0
def ensure_remotes(args):
  """Ensure that remotes are set up"""
  man = load_manifest()
  for (proj_name, project) in man.projects.iteritems():
    repo = GitRepo(workdir_for_project(project))
    for remote_name in project.remotes:
      remote = man.remotes[remote_name]
      new_url = remote.fetch % proj_name

      p = repo.command_process(["config", "--get", "remote.%s.url" % remote_name],
                               capture_stdout=True)
      if p.Wait() == 0:
        cur_url = p.stdout.strip()
        if cur_url != new_url:
          repo.check_command(["config", "--set", "remote.%s.url" % remote_name, new_url])
      else:
        repo.check_command(["remote", "add", remote_name, new_url])
Beispiel #7
0
def ensure_remotes(args):
    """Ensure that remotes are set up"""
    man = load_manifest()
    for (proj_name, project) in man.projects.iteritems():
        repo = GitRepo(workdir_for_project(project))
        for remote_name in project.remotes:
            remote = man.remotes[remote_name]
            new_url = remote.fetch % proj_name

            p = repo.command_process(
                ["config", "--get",
                 "remote.%s.url" % remote_name],
                capture_stdout=True)
            if p.Wait() == 0:
                cur_url = p.stdout.strip()
                if cur_url != new_url:
                    repo.check_command([
                        "config", "--set",
                        "remote.%s.url" % remote_name, new_url
                    ])
            else:
                repo.check_command(["remote", "add", remote_name, new_url])
Beispiel #8
0
def init(args):
  """Initializes repository"""
  man = load_manifest()

  for (name, project) in man.projects.iteritems():
    logging.warn("Initializing project: %s" % name)
    clone_remote = man.remotes[project.from_remote]
    clone_url = clone_remote.fetch % name
    p = GitCommand(None, ["clone", "-o", project.from_remote, "-n", clone_url, project.dir])
    p.Wait()

    repo = GitRepo(workdir_for_project(project))
    if repo.command(["show-ref", "-q", "HEAD"]) != 0:
      # There is no HEAD (maybe origin/master doesnt exist) so check out the tracking
      # branch
      repo.check_command(["checkout", "--track", "-b", project.tracking_branch,
                        project.remote_refspec])
    else:
      repo.check_command(["checkout"])

  ensure_remotes([])
  fetch([])
  checkout_branches([])