def from_checkout(cls, path): repo = GitRepo(path) names = Git.get_remotes(path) for name in names: remote = Remote(repo, name) repo.remotes[name] = remote for url in ['url', 'pushurl']: key = StrFmt.fmt_remote_key(name, url) val = Git.get_conf_key(path, key) if val: remote.urls[url] = val return repo
def set_remotes_in_checkout(self): logger.info('Setting remotes in checkout') # remove remotes not in model remotes_names = Git.get_remotes(self.path) names = filter(lambda n: n not in self.remotes, remotes_names) for name in names: Git.remove_remote(self.path, name) # add remotes not in checkout names = filter(lambda n: n not in remotes_names, self.remotes.keys()) for name in names: Git.add_remote(self.path, name, self.remotes[name].urls['url']) # overwrite urls in checkout for remote in self.remotes.values(): for key, val in remote.urls.items(): key = StrFmt.fmt_remote_key(remote.name, key) Git.set_conf_key(self.path, key, val)