Clean up basic inaccuracies in documentation

Correct various mistakes in documentation and remove unnecessary
paragraphs.

Change-Id: Ia16095c88e7873bd815791a32ae3e93ed4ac6d54
This commit is contained in:
Darragh Bailey 2016-11-14 18:09:01 +00:00
parent e85a2bad98
commit b23fcdf571
2 changed files with 53 additions and 59 deletions

View File

@ -141,7 +141,7 @@ commands.
any part of commit message (e.g., other headers).
Current git-upstream version supports the following features
Git-upstream currently supports the following features
- **Single upstream branch import**
@ -164,11 +164,11 @@ fully re-reviewed or merged into master and pushed.
- **Detailed logging**
git-upstream can output to both console and log file simultaneously.
Multiple levels and these are managed separately for log file and
console output. This means jobs run by Jenkins can save a detailed log
file separately as an artefact while printing status information to the
console if those running the jobs dont wish to have the console spammed
with the details.
Multiple log levels are supported, and these are managed separately for
log file and console output. This means jobs run by Jenkins can save a
detailed log file separately as an artefact while printing status
information to the console if those running the jobs dont wish to have
the console spammed with the details.
- **Dropping of changes that appear upstream**
@ -179,9 +179,9 @@ that have appeared on the upstream branch since the last import point.
Once the list of changes to be re-applied has been determined (and those
to be dropped have been pruned), the tool can open an editor (controlled
by your git editor settings) for users to review those changes to be
by a user's git editor settings) for users to review those changes to be
made and allow them to perform further operations such as re-ordering,
dropping of obsolete changes, squashing.
dropping of obsolete changes, and squashing.
- **Dropping local changes**

View File

@ -1,16 +1,11 @@
Workflows
=========
.. note:: this guide assumes that you are using a branch named *master*
.. note:: This guide assumes that you are using a branch named *master*
to maintain your new features or bug fixes that sit on top of the
upstream code of some project (probably somewhat related to
OpenStack).
It is also assumed you are tracking releases, which is only one of
the possible approaches to upstream tracking. Another approach would
be tracking the master tip of a project. Of course even other
strategies are possible.
Importing from upstream: using git-upstream
-------------------------------------------
@ -185,8 +180,8 @@ Environment File Plugin (finally!).
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
Import those changes simply cherry-picking the two commits. Dont forget
to push (review!) your changes.
Import those changes by simply cherry-picking the two commits. Dont
forget to push (review!) your changes.
.. code:: bash
@ -197,7 +192,7 @@ to push (review!) your changes.
Importing new versions from upstream
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Days passes and finally a new releases comes out.
Time passes and finally a new releases comes out.
.. code:: bash
@ -207,23 +202,17 @@ Days passes and finally a new releases comes out.
xargs git push --tags origin
A lot of work has been done upstream and we need to rebase our master
onto the upstream master branch. In this process we must skip all the
commits we already cherry-picked some days ago, of course.
.. note:: the rebasing for this example is trivial but it is just to
break the ice. Later in this guide we will address rebasing
conflicts that can occur in the real world.
Create a new local branch with the new release tag as a starting point
.. code:: bash
git branch import/0.6.0 0.6.0
onto the upstream master branch. In this process we want to skip all
the commits cherry-picked some days ago, where they have merged
upstream.
Running git-upstream
~~~~~~~~~~~~~~~~~~~~
Finally, it is time to run git-upstream! Before doing so make sure the
Identify the commit/tag/branch to import from, in this example we'll use
``0.6.0`` as a tag for a recent release we want to import.
Now, it is time to run git-upstream! Before doing so make sure the
current branch is master
.. code:: bash
@ -232,7 +221,7 @@ current branch is master
.. code:: bash
git-upstream import import/0.6.0
git-upstream import 0.6.0
Searching for previous import
Starting import of upstream
Successfully created import branch
@ -249,9 +238,9 @@ current branch is master
What has just happened?
git-upstream has created a new branch named ``import/0.6.0-base`` which
tip is set to the commit pointed by the release tag ``0.6.0``, and has
rebased all changes present in our local master which were not already
present in the upstream new release (``import/0.6.0-base``) onto
tip is branched from the release tag ``0.6.0``, and has rebased all
changes present in our local master which were not already present in
the upstream new release (``import/0.6.0-base``) onto
``import/0.6.0-base``.
You can see that running the following command
@ -263,10 +252,11 @@ You can see that running the following command
For this trivial example, the only commit not present in the upstream
release was about the customisation of the .gitreview file.
The default strategy git-upstream uses to find duplicate entries is the
comparison of Change-id entries in commit messages. Of course, its not
possible to compare directly the SHA1 for a commit because the
cherry-picking changes the information used for SHA1 calculation
The default strategy git-upstream uses to find duplicate entries is
exactly the same as ``git-rebase``, which works for both cherry-picked
and rebased commits. Additionally it also looks at Change-Id entries
in commit messages where found, as these help identify patches that were
changed before being accepted upstream when using Gerrit for reviews.
.. note:: A git commit SHA1 is generated from the following information:
@ -276,12 +266,27 @@ cherry-picking changes the information used for SHA1 calculation
- tree SHA1 (hierarchy of directories and files within the commit)
- list of the SHA1's of the parent commits
This prevents usage of the commit SHA1 as a method of finding
duplicates. Git-upstream makes uses of git's internal patch-id to
find identical changes. Git-patch-id generates an id based on the
the changes made to the tree, which can be used to identify
different commits with the exact same code changes as a duplicate
commit.
Git-upstream's makes use of Change-Id's from Gerrit to identify
additional commits that have the same intention, but are different
due to changes made at the request of the upstream. The final patch
being slight different cannot be matched using git-patch-id as it
will return a different output to the current carried patch.
--------
The local branch ``import/0.6.0`` now contains our local changes rebased
onto the new upstream release. git-upstream has also merged this branch
with the local master branch (with "ours" strategy) to allow the normal
workflow (committing/merging to master for review).
with the local master branch (with a custom merge strategy equivalent to
the inverse of 'ours', which is not to be confused with the 'ours' option
to the recursive merge strategy) to allow the normal workflow
(committing/merging to master for review).
.. note:: The "final" merging step is not mandatory. Of course you can
keep a separate branch for each new import. On one hand this
@ -362,28 +367,17 @@ Depending on the type of conflict, you will could:
upstream code. You can later resume rebasing process issuing
``git rebase --continue``
Currently git-upstream can't resume the rebasing process. So, if needed,
the final "merging" steps have to be performed manually:
By default git-upstream should automatically be re-called as the final step
of the rebasing process. Unless however you have used the option
``--no-merge`` as an argument to the import command.
In such cases, where you wish to subsequently finish, the ``import``
subcommand provides a ``--finish`` option to assist:
.. code:: bash
git merge -s ours --no-commit <import-xxxx>
Replacing tree contents with those from the import branch
.. code:: bash
git read-tree -u --reset <import-xxxx>
Committing merge commit
.. code:: bash
git commit --no-edit
.. note:: git-upstream performs exactly those steps in order to replace
the content of ``master`` branch with the import branch preserving the
history.
git checkout master
git upstream import --finish --import-branch import/0.5.0 0.5.0
Integration with Gerrit
-----------------------