| gerrit replicate |
| ================ |
| |
| NAME |
| ---- |
| gerrit replicate - Manually trigger replication, to recover a node |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'ssh' -p <port> <host> 'gerrit replicate' \ |
| [\--url <PATTERN>] \ |
| \{\--all | <PROJECT> ...} |
| |
| DESCRIPTION |
| ----------- |
| Schedules replication of the specified projects to all configured |
| replication destinations, or only those whose URLs match the pattern |
| given on the command line. |
| |
| Normally Gerrit automatically schedules replication whenever it |
| makes a change to a managed Git repository. However, there are |
| other reasons why an administrator may wish to trigger replication: |
| |
| * Destination disappears, then later comes back online. |
| + |
| If a destination went offline for a period of time, when it comes |
| back, it may be missing commits that it should have. Triggering a |
| replication run for all projects against that URL will update it. |
| |
| * After repacking locally, and using `rsync` to distribute the new |
| pack files to the destinations. |
| + |
| If the local server is repacked, and then the resulting pack files |
| are sent to remote peers using `rsync -a \--delete-after`, there |
| is a chance that the rsync missed a change that was added during |
| the rsync data transfer, and the rsync will remove that changes's |
| data from the remote, even though the automatic replication pushed |
| it there in parallel to the rsync. |
| + |
| Its a good idea to run replicate with `\--all` to ensure all |
| projects are consistent after the rsync is complete. |
| |
| * After deleting a ref by hand. |
| + |
| If a ref must be removed (e.g. to purge a change or patch set |
| that shouldn't have been created, and that must be eradicated) |
| that delete must be done by direct git access on the local, |
| managed repository. Gerrit won't know about the delete, and is |
| unable to replicate it automatically. Triggering replication on |
| just the affected project can update the mirrors. |
| |
| ACCESS |
| ------ |
| Caller must be a member of the privileged 'Administrators' group. |
| |
| SCRIPTING |
| --------- |
| This command is intended to be used in scripts. |
| |
| OPTIONS |
| ------- |
| \--all:: |
| Schedule replicating for all projects. |
| |
| \--url=<PATTERN>:: |
| Replicate only to replication destinations whose URL |
| contains the substring <PATTERN>. This can be useful to |
| replicate only to a previously down node, which has been |
| brought back online. |
| |
| EXAMPLES |
| -------- |
| Replicate every project, to every configured remote: |
| |
| ==== |
| $ ssh -p 29418 review.example.com gerrit replicate --all |
| ==== |
| |
| Replicate only to `srv2` now that it is back online: |
| |
| ==== |
| $ ssh -p 29418 review.example.com gerrit replicate --url=srv2 --all |
| ==== |
| |
| Replicate only the `tools/gerrit` project, after deleting a ref |
| locally by hand: |
| |
| ==== |
| $ git --git-dir=/home/git/tools/gerrit.git update-ref -d refs/changes/00/100/1 |
| $ ssh -p 29418 review.example.com gerrit replicate tools/gerrit |
| ==== |
| |
| SEE ALSO |
| -------- |
| |
| * link:config-replication.html[Git Replication/Mirroring] |
| |
| GERRIT |
| ------ |
| Part of link:index.html[Gerrit Code Review] |