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,
or have been granted
link:access-control.html#capability_startReplication[the 'Start Replication' global capability].

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]
