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