gerrit/Documentation/cmd-receive-pack.txt
Shawn Pearce 69928a6d06 Add options to refs/for/ magic branch syntax
Git doesn't want to modify the network protocol to support passing
data from the git push client to the server. Work around this by
embedding option data into a new style of reference specification:

  refs/for/master%r=alice,cc=bob,cc=charlie,topic=options

is now parsed by the server as:

  - set topic to "options"
  - CC charlie and bob
  - add reviewer alice
  - for branch refs/heads/master

If % is used the "extra information" after the branch name is
parsed as options with args4j. Each option is delimited by ",".

Selecting publish vs. draft should be done with options draft or
publish, appearing anywhere in the refspec after the % marker:

  refs/for/master%draft
  refs/for/master%draft,r=alice
  refs/for/master%r=alice,draft
  refs/for/master%r=alice,publish

Change-Id: I895bd1218c2099b5b45cac943039bbd12565370c
2013-02-27 16:07:30 -08:00

91 lines
2.3 KiB
Plaintext

git-receive-pack
================
NAME
----
git-receive-pack - Receive what is pushed into the repository
SYNOPSIS
--------
[verse]
'git receive-pack'
[--reviewer <address> | --re <address>]
[--cc <address>]
<project>
DESCRIPTION
-----------
Invoked by 'git push' and updates the project's repository with
the information fed from the 'git push' end.
End users can supply options to this command by passing them through
to 'git push', which will relay them automatically.
OPTIONS
-------
<project>::
The remote repository that will receive the pushed objects,
and create (or update) changes. Within Gerrit Code Review
this is the name of a project. The optional leading `/`
and or trailing `.git` suffix will be removed, if supplied.
--reviewer <address>::
--re <address>::
Automatically add <address> as a reviewer to any change.
Deprecated, use `refs/for/branch%r=address` instead.
--cc <address>::
Carbon-copy <address> on the created or updated changes.
Deprecated, use `refs/for/branch%cc=address` instead.
ACCESS
------
Any user who has configured an SSH key.
EXAMPLES
--------
Send a review for a change on the master branch to charlie@example.com:
=====
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com
=====
Send reviews, but tagging them with the topic name 'bug42':
=====
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com,topic=bug42
=====
Also CC two other parties:
=====
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
=====
Configure a push macro to perform the last action:
====
git config remote.charlie.url ssh://review.example.com:29418/project
git config remote.charlie.push HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
====
afterwards `.git/config` contains the following:
----
[remote "charlie"]
url = ssh://review.example.com:29418/project
push = HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
----
and now sending a new change for review to charlie, CC'ing both
alice and bob is much easier:
====
git push charlie
====
SEE ALSO
--------
* link:user-upload.html[Uploading Changes]
GERRIT
------
Part of link:index.html[Gerrit Code Review]