blob: 146b06f5c004cb53f69033d63cdf94785a11f3f7 [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _gitreview:
2
andrewbcddab22018-08-06 17:40:31 -04003*******************************
John DeNisco06dcd452018-07-26 12:45:10 -04004Merging FD.io VPP documents
andrewbcddab22018-08-06 17:40:31 -04005*******************************
John DeNisco06dcd452018-07-26 12:45:10 -04006
7This section describes how to get FD.io VPP documents reviewed and merged.
8
andrewbcddab22018-08-06 17:40:31 -04009Setup
10========
John DeNisco06dcd452018-07-26 12:45:10 -040011
andrewbcddab22018-08-06 17:40:31 -040012If you don't have a Linux Foundation ID, `create one here. <https://identity.linuxfoundation.org/>`_
John DeNisco06dcd452018-07-26 12:45:10 -040013
andrewbcddab22018-08-06 17:40:31 -040014With your Linux Foundation ID credentials sign into `Gerrit Code Review at gerrit.fd.io <https://gerrit.fd.io/r/login/%23%2Fq%2Fstatus%3Aopen>`_
John DeNisco06dcd452018-07-26 12:45:10 -040015
andrewbcddab22018-08-06 17:40:31 -040016`Install git-review, <https://www.mediawiki.org/wiki/Gerrit/git-review>`_ which is a "command-line tool for Git / Gerrit to submit a change or to fetch an existing one."
John DeNisco06dcd452018-07-26 12:45:10 -040017
andrewbcddab22018-08-06 17:40:31 -040018If you're on Ubuntu, install keychain:
19
20.. code-block:: console
21
22 $ sudo apt-get install keychain
23
24ssh keys
25-------------
26
27To get FD.io VPP documents reviewed the VPP repository should be cloned with ssh. You should be logged into Gerrit Code Review as noted above.
28
29Create your public and private ssh key with:
John DeNisco06dcd452018-07-26 12:45:10 -040030
31.. code-block:: console
32
33 $ ssh-keygen -t rsa
34 $ keychain
35 $ cat ~/.ssh/id_rsa.pub
36
andrewbcddab22018-08-06 17:40:31 -040037Copy **all** the contents of the public key (id_rsa.pub) output by the above **cat** command. Then go to your `SSH Public keys settings page <https://gerrit.fd.io/r/#/settings/ssh-keys>`_, click **Add Key ...**, paste your public key, and finally click **Add**.
38
39.. _clone-ssh:
40
41Clone with ssh
42==============
43
44Clone the repo with:
John DeNisco06dcd452018-07-26 12:45:10 -040045
46.. code-block:: console
47
48 $ git clone ssh://gerrit.fd.io:29418/vpp
49 $ cd vpp
50
andrewbcddab22018-08-06 17:40:31 -040051This will only work if the name of the user on your system matches your Gerrit username.
John DeNisco06dcd452018-07-26 12:45:10 -040052
andrewbcddab22018-08-06 17:40:31 -040053Otherwise, clone with:
54
55.. code-block:: console
56
57 $ git clone ssh://YOUR_GERRIT_USERNAME@gerrit.fd.io:29418/vpp
58 $ cd vpp
59
60When attempting to clone the repo it will ask if you want to add the Server Host Key to the list of known hosts. Type **yes** and hit enter.
61
62Git Review
63===========
64
65The VPP documents use the gerrit server and git review for submitting and fetching patches.
66
67
68New patch
69-----------------
70
71When working with new patch use the following to get your patch reviewed.
72
73Make sure you have modified the correct files with:
John DeNisco06dcd452018-07-26 12:45:10 -040074
75.. code-block:: console
76
John DeNisco2d1a0432018-07-26 16:21:31 -040077 $ git status
andrewbcddab22018-08-06 17:40:31 -040078 $ git diff
79
80Then add and commit the patch. For documents we will add a tag **DOCS:**
81
82.. code-block:: console
83
John DeNisco2d1a0432018-07-26 16:21:31 -040084 $ git add <filename>
andrewbcddab22018-08-06 17:40:31 -040085 $ git commit -s -m "DOCS: <COMMIT_MESSAGE>"
John DeNisco2d1a0432018-07-26 16:21:31 -040086 $ git review
John DeNisco06dcd452018-07-26 12:45:10 -040087
andrewbcddab22018-08-06 17:40:31 -040088If you are creating a draft, meaning you do not want your changes reviewed yet, do the following:
John DeNisco06dcd452018-07-26 12:45:10 -040089
andrewbcddab22018-08-06 17:40:31 -040090.. code-block:: console
John DeNisco06dcd452018-07-26 12:45:10 -040091
John DeNisco2d1a0432018-07-26 16:21:31 -040092 $ git review -D
John DeNisco06dcd452018-07-26 12:45:10 -040093
andrewbcddab22018-08-06 17:40:31 -040094After submitting a review, reset where the HEAD is pointing to with:
John DeNisco06dcd452018-07-26 12:45:10 -040095
andrewbcddab22018-08-06 17:40:31 -040096.. code-block:: console
97
98 $ git reset --hard origin/master
99
100Existing patch
101-----------------------
102
103The "change number" used below is in the URL of the review.
104
105After clicking an individual review, the change number can be found in the URL at "https://gerrit.fd.io/r/#/c/<CHANGE_NUMBER>/"
106
107To view an existing patch:
108
109.. code-block:: console
110
111 $ git review -d <change number>
112 $ git status
113 $ git diff
114
115.. caution::
116
117 If you have made changes and do "git review -d <change number>", your current
118 changes will try to be stashed so that the working tree can change to the review branch
119 you specified. If you want to make sure you don't lose your changes, clone another Gerrit
120 repo into a new directory using the cloning steps shown in :ref:`clone-ssh`, and perform
121 "git review -d <change number>" in this new directory.
122
123To modify an existing patch, make sure you modified the correct files, and apply the patch with:
124
125.. code-block:: console
126
127 $ git review -d <change number>
128 $ git status
129 $ git diff
130
131 $ git add <filename>
132 $ git commit --amend
133 $ git review
134
135When you're done viewing or modifying a branch, get back to the master branch with:
John DeNisco06dcd452018-07-26 12:45:10 -0400136
137.. code-block:: console
138
John DeNisco2d1a0432018-07-26 16:21:31 -0400139 $ git reset --hard origin/master
140 $ git checkout master