Files
git-upstream/doc/source/subcommands.rst
Darragh Bailey 65cb8e2004 Add basic documentation and migrate README & USAGE
Where documentation is being moved about, corrections will be avoided
to allow for easier following of conversion separated from rewriting.

* Set up some simple documentation to describe basic details of
  git-upstream and installation.
* Migrate details from README into dedicated subcommands rst doc.
* Consolidate installation instructions from USAGE into
  installation rst page.
* Move remainder of USAGE into dedicated workflows rst and match the
  existing markdown layout.

Change-Id: Ie73d64ae7cb0e96060729638da382c901d5d68e7
2016-11-14 15:18:54 +00:00

178 lines
6.0 KiB
ReStructuredText

Git-Upstream Subcommands
========================
import
------
Description
~~~~~~~~~~~
Import code from specified upstream branch. Creates an import branch
from the specified upstream branch, and optionally merges additional
branches given as arguments. Current branch, unless overridden by the
``--into`` option, is used as the target branch from which a list of
changes to apply onto the new import is constructed based on the
specified strategy. Once complete it will merge and replace the contents
of the target branch with those from the import branch, unless
``--no-merge`` is specified.
Usage
~~~~~
::
git upstream import [-h] [-d] [-i] [-f] [--merge] [--no-merge]
[-s <strategy>] [--into <branch>]
[--import-branch <import-branch>]
[<upstream-branch>] [<branches> [<branches> ...]]
Arguments
~~~~~~~~~
::
positional arguments:
<upstream-branch> Upstream branch to import. Must be specified if you
wish to provide additional branches.
<branches> Branches to additionally merge into the import branch
using default git merging behaviour
optional arguments:
-h, --help show this help message and exit
-d, --dry-run Only print out the list of commits that would be
applied.
-i, --interactive Let the user edit the list of commits before applying.
-f, --force Force overwrite of existing import branch if it
exists.
--merge Merge the resulting import branch into the target
branch once complete
--no-merge Disable merge of the resulting import branch
-s <strategy>, --strategy <strategy>
Use the given strategy to re-apply locally carried
changes to the import branch. (default: drop)
--into <branch> Branch to take changes from, and replace with imported
branch.
--import-branch <import-branch>
Name of import branch to use
drop
----
Description
~~~~~~~~~~~
Mark a commit as dropped. Marked commits will be skipped during the
upstream rebasing process.
See also the "git upstream import" command.
Usage
~~~~~
::
git upstream drop [-h] [-a <author>] <commit>
Arguments
~~~~~~~~~
::
positional arguments:
<commit> Commit to be marked as dropped
optional arguments:
-h, --help show this help message and exit
-a <author>, --author <author>
Git author for the mark
Note
~~~~
Commits will be marked with git notes in the namespace
``refs/notes/upstream-merge``.
To list of commit id marked with a note, run
``git notes --ref refs/notes/upstream-merge``.
To show a specific note run
``git notes --ref refs/notes/upstream-merge show <marked commit sha1>``
As ``drop`` uses git notes to mark commits that have to be skipped
during import, notes should be present on the cloned copy of your
repository. Thus, if you are going to create notes on a system and
perform the actual import on a different system, **notes must be present
on the latter**.
You can push notes directly to git repository on the target system or
push them in a different repository and then pull notes from your target
system.
supersede
---------
Description
~~~~~~~~~~~
Mark a commit as superseded by a set of change-ids. Marked commits will
be skipped during the upstream rebasing process **only if all the
specified change-ids are present in ``<upstream-branch>`` during
import**. If you want to unconditionally drop a commit, use the ``drop``
command instead.
See also the "git upstream import" command.
Usage
~~~~~
::
git upstream supersede [-h] [-f] [-u <upstream-branch>]
<commit> <change id> [<change id> ...]
Arguments
~~~~~~~~~
::
positional arguments:
<commit> Commit to be marked as superseded
<change id> Change id which makes <commit> obsolete. The change id
must be present in <upstream-branch> to drop <commit>.
If more than one change id is specified, all must be
present in <upstream-branch> to drop <commit>
optional arguments:
-h, --help show this help message and exit
-f, --force Apply the commit mark even if one or more change ids
could not be found. Use this flag carefully as commits
will not be dropped during import command execution as
long as all associated change ids are present in the
local copy of the upstream branch
-u <upstream-branch>, --upstream-branch <upstream-branch>
Search change ids values in <upstream-branch> branch
(default: upstream/master)
Note
~~~~
*This command doesn't perform the actual drop*. Commits to be dropped
during the next import, will be marked with git notes in the namespace
``refs/notes/upstream-merge``. There is no need to retain notes after an
import dropped the correspondent commits, of course it doesn't harm
keeping them either.
To list of commit id marked with a note, run
``git notes --ref refs/notes/upstream-merge``.
To show a specific note run
``git notes --ref refs/notes/upstream-merge show <marked commit sha1>``.
As ``supersede`` uses git notes to mark commits that have to be skipped
during import, notes should be present on the cloned copy of your
repository. Thus, if you are going to create notes on a system and
perform the actual import on a different system, **notes must be present
on the latter**. You can push notes directly to git repository on the
target system or push them in a different repository and then pull notes
from your target system.