# git-drover(1) Manual Page

## NAME

git-drover - Apply a commit from the trunk to a release branch, or from one release branch to another.

## SYNOPSIS

    git drover

## DESCRIPTION

`git drover` is NOT IMPLEMENTED yet. See the EXAMPLE section for the equivalent sequence of commands to run.

## EXAMPLE

### PREREQUISITES

Before working with branches, you must `gclient sync --with_branch_heads` at least once to fetch the branches.

#### Merge Example

    # Make sure we have the most up-to-date branch sources.
    $ git fetch

    # Here's a commit (from some.committer) that we want to 'drover'.
    $ git log -n 1 --pretty=fuller
    commit 4a00a0c3c1bb01f11b42cb70f3ad587026cec02b
    Author:     some.committer <some.committer@chromium.org>
    AuthorDate: Thu Apr 10 08:54:46 2014 +0000
    Commit:     some.committer <some.committer@chromium.org>
    CommitDate: Thu Apr 10 08:54:46 2014 +0000

        This change needs to go to branch 9999

    # Checkout the branch we want to 'drover' to.
    $ git checkout -b drover_9999 branch-heads/9999
    Branch drover_9999 set up to track remote ref refs/branch-heads/9999.

    # Now do the 'drover'.
    # IMPORTANT!!! Do Not leave off the '-x' flag
    $ git cherry-pick -x 4a00a0c3c1bb01f11b42cb70f3ad587026cec02b
    [drover_9999 19d3d0b] This change needs to go to branch 9999
     Author: some.committer <some.committer@chromium.org>
     Date: Thu Apr 10 08:54:46 2014 +0000
     1 file changed, 1 insertion(+)
     create mode 100644 modified_file

    # That took the code authored by some.committer and committed it to
    # the branch by the person who drovered it (i.e. you).
    $ git log -n 1 --pretty=fuller
    commit 19d3d0b9d8f802df8e2fd563cbc919679d310ecd
    Author:     some.committer <some.committer@chromium.org>
    AuthorDate: Thu Apr 10 08:54:46 2014 +0000
    Commit:     you <you@chromium.org>
    CommitDate: Thu Apr 10 09:11:36 2014 +0000

        This change needs to go to branch 9999

        (cherry picked from commit 4a00a0c3c1bb01f11b42cb70f3ad587026cec02b)

    # Looks good. Ship it!
    $ git cl upload
    # Wait for LGTM or TBR it.
    $ git cl land
    # Or skip the LGTM/TBR and just 'git cl land --bypass-hooks'

#### Revert Example

    # Make sure we have the most up-to-date branch sources.
    $ git fetch

    # Checkout the branch with the change we want to revert.
    $ git checkout -b drover_9999 branch-heads/9999
    Branch drover_9999 set up to track remote ref refs/branch-heads/9999.

    # Here's the commit we want to revert.
    $ git log -n 1
    commit 590b333cbc04d13da67b2a1c5282835d4f27e398
    Author: some.committer <some.committer@chromium.org>
    Date:   Thu Apr 10 08:54:46 2014 +0000

        This change is horribly broken.

    # Now do the revert.
    $ git revert 590b333cbc04d13da67b2a1c5282835d4f27e398

    # That reverted the change and committed the revert.
    $ git log -n 1
    commit 6f541155a9adf98f4e7f94dd561d022fb022d43f
    Author: you <you@chromium.org>
    Date:   Thu Apr 10 09:11:36 2014 +0000

        Revert "This change is horribly broken."

        This reverts commit 590b333cbc04d13da67b2a1c5282835d4f27e398.

    # As with old drover, reverts are generally OK to commit without LGTM.
    $ git cl upload -r some.committer@chromium.org --send-mail
    $ git cl land --bypass-hooks

## SEE ALSO

git-cherry-pick(1), git-revert(1)

## CHROMIUM DEPOT_TOOLS

Part of the chromium depot_tools(7) suite. These tools are meant to assist with the development of chromium and related projects. Download the tools from here.