<p>Evelyn Huang has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/20212">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Documentation: Create Lesson2.md<br><br>Lesson 2 goes over:<br>-Setting up an account on gerrit<br>-Cloning coreboot<br>-Submiting a commit using git<br><br>Change-Id: I756b273cf832fc014ba2077a5a4fe4d8009aae6d<br>Signed-off-by: Evelyn Huang <evhuang@google.com><br>---<br>A Documentation/Lesson2.md<br>1 file changed, 249 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/12/20212/4</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/Documentation/Lesson2.md b/Documentation/Lesson2.md<br>new file mode 100644<br>index 0000000..1ac813e<br>--- /dev/null<br>+++ b/Documentation/Lesson2.md<br>@@ -0,0 +1,249 @@<br>+# coreboot Lesson 2: Submitting a patch to coreboot.org<br>+<br>+### Part 1: Setting up an account at coreboot.org<br>+<br>+If you already have an account, skip to Part 2.<br>+<br>+Otherwise, go to review.coreboot.org in your preferred web browser.<br>+Select "Register" in the upper right corner.<br>+<br>+Select the appropriate sign-in. For example, if you have a Google account,<br>+select "Google OAuth2 (gerrit-oauth-provider plugin)".<br>+**Note:** Your username for the account will be the username of the account<br>+you used to sign-in with. (ex. your Google username).<br>+<br>+### Part 2a: Set up RSA Private/Public Key<br>+<br>+If you do not have an RSA key set up on your account already (as is the case<br>+with a newly created account) follow the instructions below; otherwise,<br>+doing so could overwrite an existing key.<br>+<br>+In the upper right corner, select your name and click on "Settings".<br>+Select "SSH Public Keys" on the left-hand side.<br>+<br>+In a terminal, run "ssh-keygen" and confirm the default path ".ssh/id_rsa".<br>+<br>+Make a passphrase -- remember this phrase. It will be needed whenever you use<br>+this RSA Public Key.<br>+**Note:** You might want to use a short password, or forego the password altogether<br>+as you will be using it very often.<br>+<br>+Open "id_rsa.pub", copy all contents and paste into the textbox under<br>+"Add SSH Public Key" in the review.coreboot.org webpage.<br>+<br>+### Part 2b: Setting up an HTTP Password<br>+<br>+Alternatively, instead of using SSH keys, you can use an http password. To do so,<br>+after you select your name and click on "Settings," on the left-hand side, rather<br>+than selecting "SSH Public Keys," select "HTTP Password."<br>+<br>+Click "Generate Password." This should fill the "Password" box with a password.Copy<br>+the password, and add the following to your $HOME/.netrc file:<br>+<br>+        machine review.coreboot.org login YourUserNameHere password YourPasswordHere<br>+<br>+where YourUserNameHere is your username, and YourPasswordHere is the password you<br>+just generated.<br>+<br>+### Part 3: Clone coreboot and configure it for submitting patches<br>+<br>+Go to the "Projects" tab in the upper left corner and select "List".<br>+From the dropdown menu that appears, select "coreboot".<br>+<br>+If you are using SSH keys, select "ssh" from the tabs under "Project coreboot"<br>+and run the command that appears. This should prompt you for your id_rsa passphrase.<br>+<br>+If you are using HTTP, instead, select "http" from the tabs under "Project coreboot"<br>+and run the command that appears<br>+<br>+After it finishes cloning, "cd coreboot" will take you into the local<br>+git repository. Run "make gitconfig" to set up the hooks and configurations.<br>+For example, you will be asked to run the following commands to set your<br>+username and email.<br>+<br>+    git config --global user.name "Your Name"<br>+    git config --global user.email "Your Email"<br>+<br>+### Part 4: Submit a commit<br>+<br>+An easy first commit to make is fixing existing checkpatch errors and warnings<br>+in the source files. To see errors that are already present, build the files in<br>+the repository by running 'make lint' in the coreboot directory. Alternatively,<br>+if you want to run make lint on a specific directory, run:<br>+<br>+    for file in $(git ls-files | grep <filepath>); do util/lint/checkpatch.pl --file $file --terse; done<br>+<br>+where <filepath> is the filepath of the directory (ex. src/cpu/amd/car).<br>+<br>+Any changes made to files under the src directory are made locally,<br>+and can be submitted for review.<br>+<br>+Once you finish making your desired changes, use the command line to stage<br>+and submit your changes. An alternative and potentially easier way to stage<br>+and submit commits is to use git cola, a graphical user interface for git. For<br>+instructions on how to do so, skip to Part 4b.<br>+<br>+#### Part 4a: Using the command line to stage and submit a commit<br>+To use the command line to stage a commit, run<br>+<br>+ git add <filename><br>+where <filename> is the name of your file.<br>+<br>+To commit the change, run<br>+<br>+        git commit -s<br>+**Note:** The -s adds a signed-off line by the commiter. Your commit should be<br>+signed off with your name and email (i.e. Your Name <Your Email>, based on what<br>+you set with git config earlier).<br>+<br>+Running git commit first checks for any errors and warnings using lint. If<br>+there are any, you must go back and fix them before submitting your commit.<br>+You can do so by unstaging your commit using "git reset <filename>"<br>+where <filename> is the name of your file, making the necessary changes, and<br>+then staging your commit again.<br>+<br>+When there are no errors or warning, your default text editor will open.<br>+This is where you will write your commit message.<br>+<br>+The first line of your commit message is your commit summary. This is a brief<br>+one-line description of what you changed in the files using the template<br>+below:<br>+<br>+<filepath>: Short description<br>+*ex. cpu/amd/pi/00630F01: Fix checkpatch warnings and errors*<br>+**Note:** It is good practice to use present tense in your descriptions<br>+and do not punctuate your short description.<br>+<br>+Then hit Enter. The next paragraph should be a more in-depth explanation of the<br>+changes you've made to the files. Again, it is good practice to use present<br>+tense.<br>+*ex.  Fix space prohibited between function name and open parenthesis,<br>+line over 80 characters, unnecessary braces for single statement blocks,<br>+space required before open brace errors and warnings.*<br>+<br>+When you have finished writing your commit message, save and exit the text<br>+editor. You have finished committing your change. If, after submitting your<br>+commit, you wish to make changes to it, running "git commit --amend" allows<br>+you to take back your commit and amend it.<br>+<br>+When you are done with your commit, run 'git push' to push your commit to<br>+coreboot.org<br>+**Note:** To submit as a draft, use 'git push origin HEAD:refs/drafts/master'<br>+Submitting as a draft means that your commit will be on coreboot.org, but is<br>+only visible to those you add as reviewers.<br>+<br>+#### Part 4b: Using git cola to stage and submit a commit<br>+<br>+If git cola is not installed on your machine, see<br>+https://git-cola.github.io/downloads.html for download instructions.<br>+<br>+After making some edits to src files, rather than run "git add," run<br>+'git cola' from the command line. You should see all of the files<br>+edited under "Modified".<br>+<br>+In the textbox labeled "Commit summary" provide a brief one-line<br>+description of what you changed in the files according to the template<br>+below:<br>+<br>+<filepath>: Short description<br>+*ex. cpu/amd/pi/00630F01: Fix checkpatch warnings and errors*<br>+**Note:** It is good practice to use present tense in your descriptions<br>+and do not punctuate your short description.<br>+<br>+In the larger text box labeled 'Extended description...' provide a more<br>+in-depth explanation of the changes you've made to the files. Again, it<br>+is good practice to use present tense.<br>+*ex.  Fix space prohibited between function name and open parenthesis,<br>+line over 80 characters, unnecessary braces for single statement blocks,<br>+space required before open brace errors and warnings.*<br>+<br>+Then press [Enter] two times to move the cursor to below your description.<br>+To the left of the text boxes, there is an icon with an downward arrow.<br>+Press the arrow and select "Sign Off." Make sure that you are signing off<br>+with your name and email (i.e. Your Name <Your Email>, based on what<br>+you set with git config earlier).<br>+<br>+Now, review each of your changes and mark either individual changes or<br>+an entire file as Ready to Commit by marking it as 'Staged'. To do<br>+this, select one file from the 'Modified' list. If you only want to<br>+submit particular changes from each file, then highlight the red and<br>+green lines for your changes, right click and select 'Stage Selected<br>+Lines'. Alternatively, if an entire file is ready to be committed, just<br>+double click on the file under 'Modified' and it will be marked as<br>+Staged.<br>+<br>+Once the descriptions are done and all the edits you would like to<br>+commit have been staged, press 'Commit' on the right of the text<br>+boxes.<br>+<br>+If the commit fails due to persisting errors, a text box will appear<br>+showing the errors. You can correct these errors within 'git cola' by<br>+right-clicking on the file in which the error occurred and selecting<br>+'Launch Diff Tool'. Make necessary corrections, close the Diff Tool and<br>+'Stage' the corrected file again. It might be necessary to refresh<br>+'git cola' in order for the file to be shown under 'Modified' again.<br>+Note: Be sure to add any other changes that haven't already been<br>+explained in the extended description.<br>+<br>+When ready, select 'Commit' again. Once all errors have been satisfied<br>+and the commit succeeds, move to the command line and run 'git push'.<br>+**Note:** To submit as a draft, use 'git push origin HEAD:refs/drafts/master'<br>+Submitting as a draft means that your commit will be on coreboot.org, but is<br>+only visible to those you add as reviewers.<br>+<br>+### Part 5: Getting your commit reviewed<br>+<br>+Your commits can now be seen on review.coreboot.org if you select “My”<br>+and click on “Changes” and can be reviewed by others. Your code will<br>+first be reviewed by build bot (Jenkins), who will either give you a warning<br>+or verify a successful build; if so, your commit will receive a +1. Other<br>+users may also give your commit +1.  For a commit to be merged, it needs<br>+to receive a +2.<br>+**Note:** A +1 and a +1 does not make a +2. Only certain users can give a +2.<br>+<br>+### Part 6 (optional): bash-git-prompt<br>+<br>+To help make it easier to understand the state of the git repository<br>+without running 'git status' or 'git log', there is a way to make the<br>+command line show the status of the repository at every point. This<br>+is through bash-git-prompt.<br>+<br>+Instructions for installing this are found at:<br>+https://github.com/magicmonty/bash-git-prompt<br>+**Note:** Feel free to search for different versions of git prompt,<br>+as this one is specific to bash.<br>+<br>+Alternatively, follow the instructions below:<br>+Run the following two commands in the command line:<br>+<br>+    cd<br>+    git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt --depth=1<br>+Finally, open the ~/.bashrc file and append the following two lines:<br>+<br>+    GIT_PROMPT_ONLY_IN_REPO=1<br>+    source ~/.bash-git-prompt/gitprompt.sh<br>+<br>+Now, whenever you are in a git repository, it will continuously display<br>+its state.<br>+Instructions for installing this are found at:<br>+https://github.com/magicmonty/bash-git-prompt<br>+<br>+Alternatively, follow the instructions below:<br>+Run the following two commands in the command line:<br>+<br>+    cd ~<br>+    git clone https://github.com/magicmonty/bash-git-prompt.git .bash-git-prompt --depth=1<br>+Finally, open the ~/.bashrc file and append the following two lines:<br>+<br>+    GIT_PROMPT_ONLY_IN_REPO=1<br>+    source ~/.bash-git-prompt/gitprompt.sh<br>+<br>+Now, whenever you are in a git repository, it will continuously display<br>+its state.<br>+<br>+There also are additional configurations that you can change depending on your<br>+preferences. If you wish to do so, look at the "All configs for .bashrc" section on<br>+https://github.com/magicmonty/bash-git-prompt. Listed in that section are various lines<br>+that you can copy, uncomment and add to your .bashrc file to change the configurations.<br>+Example configurations include avoid fetching remote status, and supporting versions of Git<br>+older than 1.7.10.<br>\ No newline at end of file<br></pre><p>To view, visit <a href="https://review.coreboot.org/20212">change 20212</a>. To unsubscribe, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/20212"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I756b273cf832fc014ba2077a5a4fe4d8009aae6d </div>
<div style="display:none"> Gerrit-Change-Number: 20212 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Evelyn Huang <evhuang@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Logan Carlson <logancarlson@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Martin Roth <martinroth@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Yves Roth <yves.r.roth@gmail.com> </div>