Create a new topic branch.

def start(config, bugnumber=""):
    """Create a new topic branch."""
    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)