Esempio n. 1
0
def git_cl_uploader(config, message, file_list):
    """Create a commit in the current git branch; upload via git-cl.

    Assumes that you are already on the branch you want to be on.

    Args:
        config: (roll_deps.DepsRollConfig) object containing options.
        message: (string) the commit message, can be multiline.
        file_list: (list of strings) list of filenames to pass to `git add`.

    Returns:
        The output of `git cl issue`, if not config.skip_cl_upload, else ''.
    """

    git, vsp = config.git, config.vsp
    svn_info = str(get_svn_revision(config, 'HEAD'))

    for filename in file_list:
        assert os.path.exists(filename)
        vsp.check_call([git, 'add', filename])

    vsp.check_call([git, 'commit', '-q', '-m', message])

    git_cl = [
        git, 'cl', 'upload', '-f', '--bypass-hooks', '--bypass-watchlists'
    ]
    if config.cc_list:
        git_cl.append('--cc=%s' % config.cc_list)
    if config.reviewers_list:
        git_cl.append('--reviewers=%s' % config.reviewers_list)

    git_try = [
        git, 'cl', 'try', '-m', 'tryserver.chromium', '--revision', svn_info
    ]
    git_try.extend([arg for bot in config.cl_bot_list for arg in ('-b', bot)])

    branch_name = git_utils.git_branch_name(vsp.verbose)

    if config.skip_cl_upload:
        space = '   '
        print 'You should call:'
        print '%scd %s' % (space, os.getcwd())
        misc_utils.print_subprocess_args(space, [git, 'checkout', branch_name])
        misc_utils.print_subprocess_args(space, git_cl)
        if config.cl_bot_list:
            misc_utils.print_subprocess_args(space, git_try)
        print
        return ''
    else:
        vsp.check_call(git_cl)
        issue = vsp.strip_output([git, 'cl', 'issue'])
        if config.cl_bot_list:
            vsp.check_call(git_try)
        return issue
Esempio n. 2
0
def git_cl_uploader(config, message, file_list):
    """Create a commit in the current git branch; upload via git-cl.

    Assumes that you are already on the branch you want to be on.

    Args:
        config: (roll_deps.DepsRollConfig) object containing options.
        message: (string) the commit message, can be multiline.
        file_list: (list of strings) list of filenames to pass to `git add`.

    Returns:
        The output of `git cl issue`, if not config.skip_cl_upload, else ''.
    """

    git, vsp = config.git, config.vsp
    svn_info = str(get_svn_revision(config, 'HEAD'))

    for filename in file_list:
        assert os.path.exists(filename)
        vsp.check_call([git, 'add', filename])

    vsp.check_call([git, 'commit', '-q', '-m', message])

    git_cl = [git, 'cl', 'upload', '-f',
              '--bypass-hooks', '--bypass-watchlists']
    if config.cc_list:
        git_cl.append('--cc=%s' % config.cc_list)
    if config.reviewers_list:
        git_cl.append('--reviewers=%s' % config.reviewers_list)

    git_try = [
        git, 'cl', 'try', '-m', 'tryserver.chromium', '--revision', svn_info]
    git_try.extend([arg for bot in config.cl_bot_list for arg in ('-b', bot)])

    branch_name = git_utils.git_branch_name(vsp.verbose)

    if config.skip_cl_upload:
        space = '   '
        print 'You should call:'
        print '%scd %s' % (space, os.getcwd())
        misc_utils.print_subprocess_args(space, [git, 'checkout', branch_name])
        misc_utils.print_subprocess_args(space, git_cl)
        if config.cl_bot_list:
            misc_utils.print_subprocess_args(space, git_try)
        print
        return ''
    else:
        vsp.check_call(git_cl)
        issue = vsp.strip_output([git, 'cl', 'issue'])
        if config.cl_bot_list:
            vsp.check_call(git_try)
        return issue
def add_codereview_message(codereview_url, message, checkout_path,
                           skip_cl_upload, verbose, reviewers, cclist):
    """Add a message to a given codereview.

    Args:
        codereview_url: (string) we will extract the issue number from
            this url, or this could simply be the issue number.
        message: (string) will be passed to `git cl upload -m $MESSAGE`
        checkout_path: (string) location of the git
            repository checkout to be used.
        skip_cl_upload: (boolean) if true, don't actually
            add the message and keep the temporary branch around.
        verbose: (boolean) print out details useful for debugging.
        reviewers: (string) comma-separated list of reviewers
        cclist: (string) comma-separated list of addresses to be
            carbon-copied
    """
    # pylint: disable=I0011,R0913
    git = git_utils.git_executable()
    issue = codereview_url.strip('/').split('/')[-1]
    vsp = misc_utils.VerboseSubprocess(verbose)
    if skip_cl_upload:
        branch_name = 'issue_%s' % issue
    else:
        branch_name = None
    upstream = 'origin/master'

    with misc_utils.ChangeDir(checkout_path, verbose):
        vsp.check_call([git, 'fetch', '-q', 'origin'])

        with git_utils.ChangeGitBranch(branch_name, upstream, verbose):
            vsp.check_call([git, 'cl', 'patch', issue])

            git_upload = [
                git, 'cl', 'upload', '-t', 'bot report', '-m', message]
            if cclist:
                git_upload.append('--cc=' + cclist)
            if reviewers:
                git_upload.append('--reviewers=' + reviewers)

            if skip_cl_upload:
                branch_name = git_utils.git_branch_name(verbose)
                space = '    '
                print 'You should call:'
                misc_utils.print_subprocess_args(space, ['cd', os.getcwd()])
                misc_utils.print_subprocess_args(
                    space, [git, 'checkout', branch_name])
                misc_utils.print_subprocess_args(space, git_upload)
            else:
                vsp.check_call(git_upload)
                print vsp.check_output([git, 'cl', 'issue'])
def add_codereview_message(codereview_url, message, checkout_path,
                           skip_cl_upload, verbose, reviewers, cclist):
    """Add a message to a given codereview.

    Args:
        codereview_url: (string) we will extract the issue number from
            this url, or this could simply be the issue number.
        message: (string) will be passed to `git cl upload -m $MESSAGE`
        checkout_path: (string) location of the git
            repository checkout to be used.
        skip_cl_upload: (boolean) if true, don't actually
            add the message and keep the temporary branch around.
        verbose: (boolean) print out details useful for debugging.
        reviewers: (string) comma-separated list of reviewers
        cclist: (string) comma-separated list of addresses to be
            carbon-copied
    """
    # pylint: disable=I0011,R0913
    git = git_utils.git_executable()
    issue = codereview_url.strip('/').split('/')[-1]
    vsp = misc_utils.VerboseSubprocess(verbose)
    if skip_cl_upload:
        branch_name = 'issue_%s' % issue
    else:
        branch_name = None
    upstream = 'origin/master'

    with misc_utils.ChangeDir(checkout_path, verbose):
        vsp.check_call([git, 'fetch', '-q', 'origin'])

        with git_utils.ChangeGitBranch(branch_name, upstream, verbose):
            vsp.check_call([git, 'cl', 'patch', issue])

            git_upload = [
                git, 'cl', 'upload', '-t', 'bot report', '-m', message]
            if cclist:
                git_upload.append('--cc=' + cclist)
            if reviewers:
                git_upload.append('--reviewers=' + reviewers)

            if skip_cl_upload:
                branch_name = git_utils.git_branch_name(verbose)
                space = '    '
                print 'You should call:'
                misc_utils.print_subprocess_args(space, ['cd', os.getcwd()])
                misc_utils.print_subprocess_args(
                    space, [git, 'checkout', branch_name])
                misc_utils.print_subprocess_args(space, git_upload)
            else:
                vsp.check_call(git_upload)
                print vsp.check_output([git, 'cl', 'issue'])