github.com/guilhermebr/docker@v1.4.2-0.20150428121140-67da055cebca/docs/sources/project/work-issue.md (about) 1 page_title: Work on your issue 2 page_description: Basic workflow for Docker contributions 3 page_keywords: contribute, pull request, review, workflow, beginner, squash, commit 4 5 6 # Work on your issue 7 8 The work you do for your issue depends on the specific issue you picked. 9 This section gives you a step-by-step workflow. Where appropriate, it provides 10 command examples. 11 12 However, this is a generalized workflow, depending on your issue you may repeat 13 steps or even skip some. How much time the work takes depends on you --- you 14 could spend days or 30 minutes of your time. 15 16 ## How to work on your local branch 17 18 Follow this workflow as you work: 19 20 1. Review the appropriate style guide. 21 22 If you are changing code, review the <a href="../coding-style" 23 target="_blank">coding style guide</a>. Changing documentation? Review the 24 <a href="../doc-style" target="_blank">documentation style guide</a>. 25 26 2. Make changes in your feature branch. 27 28 Your feature branch you created in the last section. Here you use the 29 development container. If you are making a code change, you can mount your 30 source into a development container and iterate that way. For documentation 31 alone, you can work on your local host. 32 33 Make sure you don't change files in the `vendor` directory and its 34 subdirectories; they contain third-party dependency code. Review <a 35 href="../set-up-dev-env" target="_blank">if you forgot the details of 36 working with a container</a>. 37 38 39 3. Test your changes as you work. 40 41 If you have followed along with the guide, you know the `make test` target 42 runs the entire test suite and `make docs` builds the documentation. If you 43 forgot the other test targets, see the documentation for <a 44 href="../test-and-docs" target="_blank">testing both code and 45 documentation</a>. 46 47 4. For code changes, add unit tests if appropriate. 48 49 If you add new functionality or change existing functionality, you should 50 add a unit test also. Use the existing test files for inspiration. Aren't 51 sure if you need tests? Skip this step; you can add them later in the 52 process if necessary. 53 54 5. Format your source files correctly. 55 56 <table> 57 <thead> 58 <tr> 59 <th>File type</th> 60 <th>How to format</th> 61 </tr> 62 </thead> 63 <tbody> 64 <tr> 65 <td><code>.go</code></td> 66 <td> 67 <p> 68 Format <code>.go</code> files using the <code>gofmt</code> command. 69 For example, if you edited the `docker.go` file you would format the file 70 like this: 71 </p> 72 <p><code>$ gofmt -s -w docker.go</code></p> 73 <p> 74 Most file editors have a plugin to format for you. Check your editor's 75 documentation. 76 </p> 77 </td> 78 </tr> 79 <tr> 80 <td style="white-space: nowrap"><code>.md</code> and non-<code>.go</code> files</td> 81 <td>Wrap lines to 80 characters.</td> 82 </tr> 83 </tbody> 84 </table> 85 86 6. List your changes. 87 88 $ git status 89 On branch 11038-fix-rhel-link 90 Changes not staged for commit: 91 (use "git add <file>..." to update what will be committed) 92 (use "git checkout -- <file>..." to discard changes in working directory) 93 94 modified: docs/sources/installation/mac.md 95 modified: docs/sources/installation/rhel.md 96 97 The `status` command lists what changed in the repository. Make sure you see 98 the changes you expect. 99 100 7. Add your change to Git. 101 102 $ git add docs/sources/installation/mac.md 103 $ git add docs/sources/installation/rhel.md 104 105 106 8. Commit your changes making sure you use the `-s` flag to sign your work. 107 108 $ git commit -s -m "Fixing RHEL link" 109 110 9. Push your change to your repository. 111 112 $ git push origin 11038-fix-rhel-link 113 Username for 'https://github.com': moxiegirl 114 Password for 'https://moxiegirl@github.com': 115 Counting objects: 60, done. 116 Compressing objects: 100% (7/7), done. 117 Writing objects: 100% (7/7), 582 bytes | 0 bytes/s, done. 118 Total 7 (delta 6), reused 0 (delta 0) 119 To https://github.com/moxiegirl/docker.git 120 * [new branch] 11038-fix-rhel-link -> 11038-fix-rhel-link 121 Branch 11038-fix-rhel-link set up to track remote branch 11038-fix-rhel-link from origin. 122 123 ## Review your branch on GitHub 124 125 After you push a new branch, you should verify it on GitHub: 126 127 1. Open your browser to <a href="https://github.com" target="_blank">GitHub</a>. 128 129 2. Go to your Docker fork. 130 131 3. Select your branch from the dropdown. 132 133 ![Find branch](/project/images/locate_branch.png) 134 135 4. Use the "Compare" button to compare the differences between your branch and master. 136 137 Depending how long you've been working on your branch, your branch maybe 138 behind Docker's upstream repository. 139 140 5. Review the commits. 141 142 Make sure your branch only shows the work you've done. 143 144 ## Pull and rebase frequently 145 146 You should pull and rebase frequently as you work. 147 148 1. Return to the terminal on your local machine and checkout your 149 feature branch in your local `docker-fork` repository. 150 151 2. Fetch any last minute changes from `docker/docker`. 152 153 $ git fetch upstream master 154 From github.com:docker/docker 155 * branch master -> FETCH_HEAD 156 157 3. Start an interactive rebase. 158 159 $ git rebase -i upstream/master 160 161 4. Rebase opens an editor with a list of commits. 162 163 pick 1a79f55 Tweak some of the other text for grammar 164 pick 53e4983 Fix a link 165 pick 3ce07bb Add a new line about RHEL 166 167 5. Replace the `pick` keyword with `squash` on all but the first commit. 168 169 pick 1a79f55 Tweak some of the other text for grammar 170 squash 53e4983 Fix a link 171 squash 3ce07bb Add a new line about RHEL 172 173 After you save the changes and quit from the editor, git starts 174 the rebase, reporting the progress along the way. Sometimes 175 your changes can conflict with the work of others. If git 176 encounters a conflict, it stops the rebase, and prints guidance 177 for how to correct the conflict. 178 179 6. Edit and save your commit message. 180 181 `git commit -s` 182 183 Make sure your message includes <a href="./set-up-git" target="_blank>your signature</a>. 184 185 7. Force push any changes to your fork on GitHub. 186 187 $ git push -f origin 11038-fix-rhel-link 188 189 190 ## Where to go next 191 192 At this point, you should understand how to work on an issue. In the next 193 section, you [learn how to make a pull request](/project/create-pr/).