Gerrit Code Review - Project Configuration ========================================== Create Through SSH ------------------ Creating a new repository over SSH is perhaps the easiest way to configure a new project: ==== ssh -p 29418 review.example.com gerrit create-project --name new/project ==== See link:cmd-create-project.html[gerrit create-project] for more details. Manual Creation --------------- Projects may also be manually created. Create Git Repository ~~~~~~~~~~~~~~~~~~~~~ Create a Git repository under gerrit.basePath: ==== git --git-dir=$base_path/new/project.git init ==== [TIP] By tradition the repository directory name should have a `.git` suffix. To also make this repository available over the anonymous git:// protocol, don't forget to create a `git-daemon-export-ok` file: ==== touch $base_path/new/project.git/git-daemon-export-ok ==== Register Project ~~~~~~~~~~~~~~~~ Either restart the server, or flush the `project_list` cache: ==== ssh -p 29418 localhost gerrit flush-caches --cache project_list ==== [[submit_type]] Change Submit Action -------------------- The method Gerrit uses to submit a change to a project can be modified by any project owner through the project console, `Projects` > `List` > my/project. The following methods are supported: * Fast Forward Only + This method produces a strictly linear history. All merges must be handled on the client, prior to uploading to Gerrit for review. + To submit a change, the change must be a strict superset of the destination branch. That is, the change must already contain the tip of the destination branch at submit time. * Merge If Necessary + This is the default for a new project. + If the change being submitted is a strict superset of the destination branch, then the branch is fast-forwarded to the change. If not, then a merge commit is automatically created. This is identical to the classical `git merge` behavior, or `git merge --ff`. * Always Merge + Always produce a merge commit, even if the change is a strict superset of the destination branch. This is identical to the behavior of `git merge --no-ff`, and may be useful if the project needs to follow submits with `git log --first-parent`. * Cherry Pick + Always cherry pick the patch set, ignoring the parent lineage and instead creating a brand new commit on top of the current branch head. + When cherry picking a change, Gerrit automatically appends onto the end of the commit message a short summary of the change's approvals, and a URL link back to the change on the web. The committer header is also set to the submitter, while the author header retains the original patch set author. + Note that Gerrit ignores patch set dependencies when operating in cherry-pick mode. Submitters must remember to submit changes in the right order since inter-change dependencies will not be enforced for them. [[rebase_if_necessary]] * Rebase If Necessary + If the change being submitted is a strict superset of the destination branch, then the branch is fast-forwarded to the change. If not, then the change is automatically rebased and then the branch is fast-forwarded to the change. 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 the same file has also been changed on the other side of the merge. If `Automatically resolve conflicts` is enabled, Gerrit will try to do a content merge when a path conflict occurs. Registering Additional Branches ------------------------------- Branches can be created over the SSH port by any `git push` client, if the user has been granted the `Create Reference` access right. Additional branches can also be created through the web UI, assuming at least one commit already exists in the project repository. A project owner can create additional branches under `Projects` > `List` > my/project > `Branches`. Enter the new branch name, and the starting Git revision. Branch names that don't start with `refs/` will automatically have `refs/heads/` prefixed to ensure they are a standard Git branch name. Almost any valid SHA-1 expression can be used to specify the starting revision, so long as it resolves to a commit object. Abbreviated SHA-1s are not supported. GERRIT ------ Part of link:index.html[Gerrit Code Review]