def fetch(self, module): if not os.path.exists(module.fetchto): os.mkdir(module.fetchto) cur_dir = os.getcwd() os.chdir(module.fetchto) basename = path.url_basename(module.url) mod_path = os.path.join(module.fetchto, basename) cmd = "svn checkout {0} " + module.basename if module.revision: cmd = cmd.format(module.url + '@' + module.revision) else: cmd = cmd.format(module.url) success = True logging.info("Checking out module %s" % mod_path) logging.debug(cmd) if os.system(cmd) != 0: success = False os.chdir(cur_dir) module.isfetched = True module.path = os.path.join(module.fetchto, module.basename) return success
def fetch(self, module): if module.source != fetch.GIT: raise ValueError("This backend should get git modules only.") if not os.path.exists(module.fetchto): os.mkdir(module.fetchto) cur_dir = os.getcwd() if module.branch is None: module.branch = "master" basename = path.url_basename(module.url) mod_path = os.path.join(module.fetchto, basename) logging.info("Fetching git module: %s" % mod_path) if basename.endswith(".git"): basename = basename[:-4] # remove trailing .git if module.isfetched: update_only = True else: update_only = False if update_only: logging.info("Updating module %s" % mod_path) cmd = "(cd {0} && git checkout {1})" cmd = cmd.format(mod_path, module.branch) else: logging.info("Cloning module %s" % mod_path) cmd = "(cd {0} && git clone -b {2} {1})" cmd = cmd.format(module.fetchto, module.url, module.branch) success = True logging.debug("Running %s" % cmd) if os.system(cmd) != 0: success = False if module.revision is not None and success is True: logging.debug("cd %s" % mod_path) os.chdir(mod_path) cmd = "git checkout " + module.revision logging.debug("Running %s" % cmd) if os.system(cmd) != 0: success = False os.chdir(cur_dir) module.isfetched = True module.path = mod_path return success
def basename(self): from util import path if self.source == fetch.SVN: return path.svn_basename(self.url) else: return path.url_basename(self.url)