code: def start(config, bugnumber=""):
      
      repo = config.repo
  
      if bugnumber:
          summary, bugnumber, url = get_summary(config, bugnumber)
      else:
          url = None
          summary = None
  
      if summary:
          summary = input('Summary ["{}"]: '.format(summary)).strip() or summary
      else:
          summary = input("Summary: ").strip()
  
      branch_name = ""
      if bugnumber:
          if is_github({"bugnumber": bugnumber, "url": url}):
              branch_name = "{}-".format(bugnumber)
          else:
              branch_name = "{}-".format(bugnumber)
  
      def clean_branch_name(string):
          string = re.sub(r"\s+", " ", string)
          string = string.replace(" ", "-")
          string = string.replace("->", "-").replace("=>", "-")
          for each in "@%^&:'\"/(),[]{}!.?`$<>#*;=":
              string = string.replace(each, "")
          string = re.sub("-+", "-", string)
          string = string.strip("-")
          return string.lower().strip()
  
      branch_name += clean_branch_name(summary)
  
      if not branch_name:
          error_out("Must provide a branch name")
  
      # Check that the branch doesn't already exist
      found = list(find(repo, branch_name, exact=True))
      if found:
          error_out("There is already a branch called {!r}".format(found[0].name))
  
      new_branch = repo.create_head(branch_name)
      new_branch.checkout()
      if config.verbose:
          click.echo("Checkout out new branch: {}".format(branch_name))
  
      save(config.configfile, summary, branch_name, bugnumber=bugnumber, url=url)
docs: Create a new topic branch.