def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print >> sys.stderr, "error: '%s' is not a valid name" % nb sys.exit(1) nb = args[0] err = [] all = self.GetProjects(args[1:]) pm = Progress('Abandon %s' % nb, len(all)) for project in all: pm.update() if not project.AbandonBranch(nb): err.append(project) pm.end() if err: if len(err) == len(all): print >> sys.stderr, 'error: no project has branch %s' % nb else: for p in err: print >>sys.stderr,\ "error: %s/: cannot abandon %s" \ % (p.relpath, nb) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: projects = ['.',] # start it in the local project by default all_projects = self.GetProjects(projects) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() # If the current revision is a specific SHA1 then we can't push back # to it so substitute the manifest default revision instead. if IsId(project.revisionExpr): project.revisionExpr = self.manifest.default.revisionExpr if not project.StartBranch(nb): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)
def Execute(self, opt, args): if not opt.all and not args: self.Usage() if not opt.all: nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) else: args.insert(0,None) nb = "'All local branches'" err = defaultdict(list) success = defaultdict(list) all_projects = self.GetProjects(args[1:]) pm = Progress('Abandon %s' % nb, len(all_projects)) for project in all_projects: pm.update() if opt.all: branches = project.GetBranches().keys() else: branches = [nb] for name in branches: status = project.AbandonBranch(name) if status is not None: if status: success[name].append(project) else: err[name].append(project) pm.end() width = 25 for name in branches: if width < len(name): width = len(name) if err: for br in err.keys(): err_msg = "error: cannot abandon %s" %br print(err_msg, file=sys.stderr) for proj in err[br]: print(' '*len(err_msg) + " | %s" % proj.relpath, file=sys.stderr) sys.exit(1) elif not success: print('error: no project has local branch(es) : %s' % nb, file=sys.stderr) sys.exit(1) else: print('Abandoned branches:', file=sys.stderr) for br in success.keys(): if len(all_projects) > 1 and len(all_projects) == len(success[br]): result = "all project" else: result = "%s" % ( ('\n'+' '*width + '| ').join(p.relpath for p in success[br])) print("%s%s| %s\n" % (br,' '*(width-len(br)), result),file=sys.stderr)
def ValidateOptions(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): self.OptionParser.error("'%s' is not a valid name" % nb)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: print("error: at least one project must be specified", file=sys.stderr) sys.exit(1) all_projects = self.GetProjects(projects) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() # If the current revision is a specific SHA1 then we can't push back # to it so substitute the manifest default revision instead. if IsId(project.revisionExpr): project.revisionExpr = self.manifest.default.revisionExpr if not project.StartBranch(nb): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print >> sys.stderr, "error: '%s' is not a valid name" % nb sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: print >> sys.stderr, "error: at least one project must be specified" sys.exit(1) all = self.GetProjects(projects) pm = Progress('Starting %s' % nb, len(all)) for project in all: pm.update() if not project.StartBranch(nb): err.append(project) pm.end() if err: for p in err: print >>sys.stderr,\ "error: %s/: cannot start %s" \ % (p.relpath, nb) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print >>sys.stderr, "error: '%s' is not a valid name" % nb sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: print >>sys.stderr, "error: at least one project must be specified" sys.exit(1) all = self.GetProjects(projects) pm = Progress('Starting %s' % nb, len(all)) for project in all: pm.update() if not project.StartBranch(nb): err.append(project) pm.end() if err: for p in err: print >>sys.stderr,\ "error: %s/: cannot start %s" \ % (p.relpath, nb) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print >>sys.stderr, "error: '%s' is not a valid name" % nb sys.exit(1) nb = args[0] err = [] all = self.GetProjects(args[1:]) pm = Progress('Abandon %s' % nb, len(all)) for project in all: pm.update() if not project.AbandonBranch(nb): err.append(project) pm.end() if err: if len(err) == len(all): print >>sys.stderr, 'error: no project has branch %s' % nb else: for p in err: print >>sys.stderr,\ "error: %s/: cannot abandon %s" \ % (p.relpath, nb) sys.exit(1)
def ValidateOptions(self, opt, args): if not opt.all and not args: self.Usage() if not opt.all: nb = args[0] if not git.check_ref_format("heads/%s" % nb): self.OptionParser.error("'%s' is not a valid branch name" % nb) else: args.insert(0, "'All local branches'")
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) nb = args[0] err = [] success = [] all_projects = self.GetProjects(args[1:]) pm = Progress('Abandon %s' % nb, len(all_projects)) for project in all_projects: pm.update() status = project.AbandonBranch(nb) if status is not None: if status: success.append(project) else: err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot abandon %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1) elif not success: print('error: no project has branch %s' % nb, file=sys.stderr) sys.exit(1) else: print('Abandoned in %d project(s):\n %s' % (len(success), '\n '.join(p.relpath for p in success)), file=sys.stderr)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: projects = [ '.', ] # start it in the local project by default all_projects = self.GetProjects(projects, missing_ok=bool(self.gitc_manifest)) # This must happen after we find all_projects, since GetProjects may need # the local directory, which will disappear once we save the GITC manifest. if self.gitc_manifest: gitc_projects = self.GetProjects(projects, manifest=self.gitc_manifest, missing_ok=True) for project in gitc_projects: if project.old_revision: project.already_synced = True else: project.already_synced = False project.old_revision = project.revisionExpr project.revisionExpr = None # Save the GITC manifest. gitc_utils.save_manifest(self.gitc_manifest) # Make sure we have a valid CWD if not os.path.exists(os.getcwd()): os.chdir(self.manifest.topdir) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() if self.gitc_manifest: gitc_project = self.gitc_manifest.paths[project.relpath] # Sync projects that have not been opened. if not gitc_project.already_synced: proj_localdir = os.path.join( self.gitc_manifest.gitc_client_dir, project.relpath) project.worktree = proj_localdir if not os.path.exists(proj_localdir): os.makedirs(proj_localdir) project.Sync_NetworkHalf() sync_buf = SyncBuffer(self.manifest.manifestProject.config) project.Sync_LocalHalf(sync_buf) project.revisionId = gitc_project.old_revision # If the current revision is immutable, such as a SHA1, a tag or # a change, then we can't push back to it. Substitute with # dest_branch, if defined; or with manifest default revision instead. branch_merge = '' if IsImmutable(project.revisionExpr): if project.dest_branch: branch_merge = project.dest_branch else: branch_merge = self.manifest.default.revisionExpr if not project.StartBranch(nb, branch_merge=branch_merge): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: print("error: at least one project must be specified", file=sys.stderr) sys.exit(1) proj_name_to_gitc_proj_dict = {} if self.gitc_manifest: all_projects = self.GetProjects(projects, manifest=self.gitc_manifest, missing_ok=True) for project in all_projects: if project.old_revision: project.already_synced = True else: project.already_synced = False project.old_revision = project.revisionExpr proj_name_to_gitc_proj_dict[project.name] = project project.revisionExpr = None # Save the GITC manifest. gitc_utils.save_manifest(self.gitc_manifest) all_projects = self.GetProjects(projects, missing_ok=bool(self.gitc_manifest)) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() if self.gitc_manifest: gitc_project = proj_name_to_gitc_proj_dict[project.name] # Sync projects that have already been opened. if not gitc_project.already_synced: proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir, project.relpath) project.worktree = proj_localdir if not os.path.exists(proj_localdir): os.makedirs(proj_localdir) project.Sync_NetworkHalf() sync_buf = SyncBuffer(self.manifest.manifestProject.config) project.Sync_LocalHalf(sync_buf) project.revisionExpr = gitc_project.old_revision # If the current revision is a specific SHA1 then we can't push back # to it; so substitute with dest_branch if defined, or with manifest # default revision instead. branch_merge = '' if IsId(project.revisionExpr): if project.dest_branch: branch_merge = project.dest_branch else: branch_merge = self.manifest.default.revisionExpr if not project.StartBranch(nb, branch_merge=branch_merge): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)
def Execute(self, opt, args): if not opt.all and not args: self.Usage() if not opt.all: nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) else: args.insert(0, None) nb = "'All local branches'" err = defaultdict(list) success = defaultdict(list) all_projects = self.GetProjects(args[1:]) pm = Progress('Abandon %s' % nb, len(all_projects)) for project in all_projects: pm.update() if opt.all: branches = project.GetBranches().keys() else: branches = [nb] for name in branches: status = project.AbandonBranch(name) if status is not None: if status: success[name].append(project) else: err[name].append(project) pm.end() width = 25 for name in branches: if width < len(name): width = len(name) if err: for br in err.keys(): err_msg = "error: cannot abandon %s" % br print(err_msg, file=sys.stderr) for proj in err[br]: print(' ' * len(err_msg) + " | %s" % proj.relpath, file=sys.stderr) sys.exit(1) elif not success: print('error: no project has local branch(es) : %s' % nb, file=sys.stderr) sys.exit(1) else: print('Abandoned branches:', file=sys.stderr) for br in success.keys(): if len(all_projects) > 1 and len(all_projects) == len( success[br]): result = "all project" else: result = "%s" % ( ('\n' + ' ' * width + '| ').join(p.relpath for p in success[br])) print("%s%s| %s\n" % (br, ' ' * (width - len(br)), result), file=sys.stderr)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: print("error: at least one project must be specified", file=sys.stderr) sys.exit(1) if self.gitc_manifest: all_projects = self.GetProjects(projects, manifest=self.gitc_manifest, missing_ok=True) for project in all_projects: if project.old_revision: project.already_synced = True else: project.already_synced = False project.old_revision = project.revisionExpr project.revisionExpr = None # Save the GITC manifest. gitc_utils.save_manifest(self.gitc_manifest) all_projects = self.GetProjects(projects, missing_ok=bool(self.gitc_manifest)) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() if self.gitc_manifest: gitc_project = self.gitc_manifest.paths[project.relpath] # Sync projects that have not been opened. if not gitc_project.already_synced: proj_localdir = os.path.join( self.gitc_manifest.gitc_client_dir, project.relpath) project.worktree = proj_localdir if not os.path.exists(proj_localdir): os.makedirs(proj_localdir) project.Sync_NetworkHalf() sync_buf = SyncBuffer(self.manifest.manifestProject.config) project.Sync_LocalHalf(sync_buf) project.revisionId = gitc_project.old_revision # If the current revision is a specific SHA1 then we can't push back # to it; so substitute with dest_branch if defined, or with manifest # default revision instead. branch_merge = '' if IsId(project.revisionExpr): if project.dest_branch: branch_merge = project.dest_branch else: branch_merge = self.manifest.default.revisionExpr if not project.StartBranch(nb, branch_merge=branch_merge): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)
def Execute(self, opt, args): if not args: self.Usage() nb = args[0] if not git.check_ref_format('heads/%s' % nb): print("error: '%s' is not a valid name" % nb, file=sys.stderr) sys.exit(1) err = [] projects = [] if not opt.all: projects = args[1:] if len(projects) < 1: projects = ['.',] # start it in the local project by default all_projects = self.GetProjects(projects, missing_ok=bool(self.gitc_manifest)) # This must happen after we find all_projects, since GetProjects may need # the local directory, which will disappear once we save the GITC manifest. if self.gitc_manifest: gitc_projects = self.GetProjects(projects, manifest=self.gitc_manifest, missing_ok=True) for project in gitc_projects: if project.old_revision: project.already_synced = True else: project.already_synced = False project.old_revision = project.revisionExpr project.revisionExpr = None # Save the GITC manifest. gitc_utils.save_manifest(self.gitc_manifest) # Make sure we have a valid CWD if not os.path.exists(os.getcwd()): os.chdir(self.manifest.topdir) pm = Progress('Starting %s' % nb, len(all_projects)) for project in all_projects: pm.update() if self.gitc_manifest: gitc_project = self.gitc_manifest.paths[project.relpath] # Sync projects that have not been opened. if not gitc_project.already_synced: proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir, project.relpath) project.worktree = proj_localdir if not os.path.exists(proj_localdir): os.makedirs(proj_localdir) project.Sync_NetworkHalf() sync_buf = SyncBuffer(self.manifest.manifestProject.config) project.Sync_LocalHalf(sync_buf) project.revisionId = gitc_project.old_revision # If the current revision is immutable, such as a SHA1, a tag or # a change, then we can't push back to it. Substitute with # dest_branch, if defined; or with manifest default revision instead. branch_merge = '' if IsImmutable(project.revisionExpr): if project.dest_branch: branch_merge = project.dest_branch else: branch_merge = self.manifest.default.revisionExpr if not project.StartBranch(nb, branch_merge=branch_merge): err.append(project) pm.end() if err: for p in err: print("error: %s/: cannot start %s" % (p.relpath, nb), file=sys.stderr) sys.exit(1)