Merge changes Iee1d8835,Id1f4172d into stable-2.9
* changes: Add a section about the submit type to the project owner guide Document project options
This commit is contained in:
@@ -219,6 +219,66 @@ You may also enable link:user-upload.html#auto_merge[auto-merge on
|
|||||||
push] to benefit from the automatic merge/rebase on server side while
|
push] to benefit from the automatic merge/rebase on server side while
|
||||||
pushing directly into the repository.
|
pushing directly into the repository.
|
||||||
|
|
||||||
|
[[project-options]]
|
||||||
|
== Project Options
|
||||||
|
|
||||||
|
As project owner you can control several options on your project.
|
||||||
|
The different options are described in the
|
||||||
|
link:project-setup.html#project_options[Project Options] section.
|
||||||
|
|
||||||
|
To see the options of your project
|
||||||
|
|
||||||
|
- go to the Gerrit WebUI
|
||||||
|
- click on the `Projects` > `List` menu entry
|
||||||
|
- find your project in the project list and click on it
|
||||||
|
- click on the `General` menu entry
|
||||||
|
|
||||||
|
[[submit-type]]
|
||||||
|
=== Submit Type
|
||||||
|
|
||||||
|
An important decision for a project is the choice of the submit type
|
||||||
|
and the content merge setting (aka `Automatically resolve conflicts`).
|
||||||
|
The link:project-setup.html#submit_type[submit type] is the method
|
||||||
|
Gerrit uses to submit a change to the project. The submit type defines
|
||||||
|
what Gerrit should do on submit of a change if the destination branch
|
||||||
|
has moved while the change was in review. The
|
||||||
|
link:project-setup.html#content_merge[content merge] setting applies
|
||||||
|
if the same files have been modified concurrently and tells Gerrit
|
||||||
|
whether it should attempt a content merge for these files.
|
||||||
|
|
||||||
|
When choosing the submit type and the content merge setting one must
|
||||||
|
weigh development comfort against the safety of not breaking the
|
||||||
|
destination branch.
|
||||||
|
|
||||||
|
The most restrictive submit type is
|
||||||
|
link:project-setup.html#fast_forward_only[Fast Forward Only]. Using
|
||||||
|
this submit type means that after submitting one change all other open
|
||||||
|
changes for the same destination branch must be rebased manually. This
|
||||||
|
is quite burdensome and in practice only feasible for branches with
|
||||||
|
very few changes. On the other hand, if changes are verified before
|
||||||
|
submit, e.g. automatically by a CI integration, with this submit type,
|
||||||
|
you can be sure that the destination branch never gets broken.
|
||||||
|
|
||||||
|
Choosing link:project-setup.html#merge_if_necessary[Merge If Necessary]
|
||||||
|
as submit type makes the life for developers more comfortable,
|
||||||
|
especially if content merge is enabled. If this submit strategy is used
|
||||||
|
developers only need to rebase manually if the same files have been
|
||||||
|
modified concurrently or if the content merge on such a file fails. The
|
||||||
|
drawback with this submit type is that there is a risk of breaking
|
||||||
|
the destination branch, e.g. if one change moves a class into another
|
||||||
|
package and another change imports this class from the old location.
|
||||||
|
Experience shows that in practice `Merge If Necessary` with content
|
||||||
|
merge enabled works pretty well and breaking the destination branch
|
||||||
|
happens rarely. This is why this setting is recommended at least for
|
||||||
|
development branches. You likely want to start with
|
||||||
|
`Merge If Necessary` with content merge enabled and only switch to a
|
||||||
|
more restrictive policy if you are facing issues with the build and
|
||||||
|
test stability of the destination branches.
|
||||||
|
|
||||||
|
Please note that there are other submit types available; they are
|
||||||
|
described in the link:project-setup.html#submit_type[Submit Type]
|
||||||
|
section.
|
||||||
|
|
||||||
GERRIT
|
GERRIT
|
||||||
------
|
------
|
||||||
Part of link:index.html[Gerrit Code Review]
|
Part of link:index.html[Gerrit Code Review]
|
||||||
|
@@ -44,13 +44,17 @@ Either restart the server, or flush the `project_list` cache:
|
|||||||
ssh -p 29418 localhost gerrit flush-caches --cache project_list
|
ssh -p 29418 localhost gerrit flush-caches --cache project_list
|
||||||
====
|
====
|
||||||
|
|
||||||
|
[[project_options]]
|
||||||
|
== Project Options
|
||||||
|
|
||||||
[[submit_type]]
|
[[submit_type]]
|
||||||
== Submit Type
|
=== Submit Type
|
||||||
|
|
||||||
The method Gerrit uses to submit a change to a project can be
|
The method Gerrit uses to submit a change to a project can be
|
||||||
modified by any project owner through the project console, `Projects` >
|
modified by any project owner through the project console, `Projects` >
|
||||||
`List` > my/project. The following methods are supported:
|
`List` > my/project. The following methods are supported:
|
||||||
|
|
||||||
|
[[fast_forward_only]]
|
||||||
* Fast Forward Only
|
* Fast Forward Only
|
||||||
+
|
+
|
||||||
This method produces a strictly linear history. All merges must
|
This method produces a strictly linear history. All merges must
|
||||||
@@ -60,6 +64,7 @@ To submit a change, the change must be a strict superset of the
|
|||||||
destination branch. That is, the change must already contain the
|
destination branch. That is, the change must already contain the
|
||||||
tip of the destination branch at submit time.
|
tip of the destination branch at submit time.
|
||||||
|
|
||||||
|
[[merge_if_necessary]]
|
||||||
* Merge If Necessary
|
* Merge If Necessary
|
||||||
+
|
+
|
||||||
This is the default for a new project.
|
This is the default for a new project.
|
||||||
@@ -69,6 +74,7 @@ branch, then the branch is fast-forwarded to the change. If not,
|
|||||||
then a merge commit is automatically created. This is identical
|
then a merge commit is automatically created. This is identical
|
||||||
to the classical `git merge` behavior, or `git merge --ff`.
|
to the classical `git merge` behavior, or `git merge --ff`.
|
||||||
|
|
||||||
|
[[always_merge]]
|
||||||
* Always Merge
|
* Always Merge
|
||||||
+
|
+
|
||||||
Always produce a merge commit, even if the change is a strict
|
Always produce a merge commit, even if the change is a strict
|
||||||
@@ -76,6 +82,7 @@ superset of the destination branch. This is identical to the
|
|||||||
behavior of `git merge --no-ff`, and may be useful if the
|
behavior of `git merge --no-ff`, and may be useful if the
|
||||||
project needs to follow submits with `git log --first-parent`.
|
project needs to follow submits with `git log --first-parent`.
|
||||||
|
|
||||||
|
[[cherry_pick]]
|
||||||
* Cherry Pick
|
* Cherry Pick
|
||||||
+
|
+
|
||||||
Always cherry pick the patch set, ignoring the parent lineage
|
Always cherry pick the patch set, ignoring the parent lineage
|
||||||
@@ -105,9 +112,88 @@ When Gerrit tries to do a merge, by default the merge will only
|
|||||||
succeed if there is no path conflict. A path conflict occurs when
|
succeed if there is no path conflict. A path conflict occurs when
|
||||||
the same file has also been changed on the other side of the merge.
|
the same file has also been changed on the other side of the merge.
|
||||||
|
|
||||||
|
[[content_merge]]
|
||||||
If `Automatically resolve conflicts` is enabled, Gerrit will try
|
If `Automatically resolve conflicts` is enabled, Gerrit will try
|
||||||
to do a content merge when a path conflict occurs.
|
to do a content merge when a path conflict occurs.
|
||||||
|
|
||||||
|
=== State
|
||||||
|
|
||||||
|
This setting defines the state of the project. A project can have the
|
||||||
|
following states:
|
||||||
|
|
||||||
|
- `Active`:
|
||||||
|
+
|
||||||
|
The project is active and users can see and modify the project according
|
||||||
|
to their access rights on the project.
|
||||||
|
|
||||||
|
- `Read Only`:
|
||||||
|
+
|
||||||
|
The project is read only and all modifying operations on it are
|
||||||
|
disabled. E.g. this means that pushing to this project fails for all
|
||||||
|
users even if they have push permissions assigned on it.
|
||||||
|
+
|
||||||
|
Setting a project to this state is an easy way to temporary close a
|
||||||
|
project, as you can keep all write access rights in place and they will
|
||||||
|
become active again as soon as the project state is set back to
|
||||||
|
`Active`.
|
||||||
|
+
|
||||||
|
This state also makes sense if a project was moved to another location.
|
||||||
|
In this case all new development should happen in the new project and
|
||||||
|
you want to prevent that somebody accidentally works on the old
|
||||||
|
project, while keeping the old project around for old references.
|
||||||
|
|
||||||
|
- `Hidden`:
|
||||||
|
+
|
||||||
|
The project is hidden and only visible to project owners. Other users
|
||||||
|
are not able to see the project even if they have read permissions
|
||||||
|
granted on the project.
|
||||||
|
|
||||||
|
=== Require Change-Id
|
||||||
|
|
||||||
|
The `Require Change-Id in commit message` option defines whether a
|
||||||
|
link:user-changeid.html[Change-Id] in the commit message is required
|
||||||
|
for pushing a commit for review. If this option is set, trying to push
|
||||||
|
a commit for review that doesn't contain a Change-Id in the commit
|
||||||
|
message fails with link:error-missing-changeid.html[missing Change-Id
|
||||||
|
in commit message footer].
|
||||||
|
|
||||||
|
It is recommended to set this option and use a
|
||||||
|
link:user-changeid.html#create[commit-msg hook] (or other client side
|
||||||
|
tooling like EGit) to automatically generate Change-Id's for new
|
||||||
|
commits. This way the Change-Id is automatically in place when changes
|
||||||
|
are reworked or rebased and uploading new patch sets gets easy.
|
||||||
|
|
||||||
|
If this option is not set, commits can be uploaded without a Change-Id,
|
||||||
|
but then users have to remember to copy the assigned Change-Id from the
|
||||||
|
change screen and insert it manually into the commit message when they
|
||||||
|
want to upload a second patch set.
|
||||||
|
|
||||||
|
=== Maximum Git Object Size Limit
|
||||||
|
|
||||||
|
This option defines the maximum allowed Git object size that
|
||||||
|
receive-pack will accept. If an object is larger than the given size
|
||||||
|
the pack-parsing will abort and the push operation will fail.
|
||||||
|
|
||||||
|
With this option users can be prevented from uploading commits that
|
||||||
|
contain files which are too large.
|
||||||
|
|
||||||
|
Normally the link:config-gerrit.html#receive.maxObjectSizeLimit[maximum
|
||||||
|
Git object size limit] is configured globally for a Gerrit server. At
|
||||||
|
the project level, the maximum Git object size limit can be further
|
||||||
|
reduced, but not extended. The displayed effective limit shows the
|
||||||
|
maximum Git object size limit that is actually used on the project.
|
||||||
|
|
||||||
|
The defined maximum Git object size limit is inherited by any child
|
||||||
|
project.
|
||||||
|
|
||||||
|
=== Require Signed-off-by
|
||||||
|
|
||||||
|
The `Require Signed-off-by in commit message` option defines whether a
|
||||||
|
link:user-signedoffby.html[Signed-off-by] line in the commit message is
|
||||||
|
required for pushing a commit. If this option is set, trying to push a
|
||||||
|
commit that doesn't contain a Signed-off-by line in the commit message
|
||||||
|
fails with link:error-not-signed-off-by.html[not Signed-off-by
|
||||||
|
author/committer/uploader in commit message footer].
|
||||||
|
|
||||||
== Registering Additional Branches
|
== Registering Additional Branches
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user