summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2011-09-20 06:44:45 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-09-25 17:59:58 +0100
commit2a745da247a8340bdee487778ecb3bf1648c403a (patch)
treee5f08a34b3b516958578954257c8b0083a3a6d07 /documentation/dev-manual
parent13f312a6dc563733374454af002ca2d2501e0232 (diff)
downloadpoky-2a745da247a8340bdee487778ecb3bf1648c403a.tar.gz
documentation/dev-manual/dev-manual-newbie.xml: edits and enhancements.
General pass-through for consistency in referencing sections. Also, added Darren Hart's review comments for the "Submitting a Change" section. I added more about the mailing lists and how to submit a proper commit message. (From yocto-docs rev: d9c8f5db8c862b1be724915cc43da6d12b88b97d) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/dev-manual')
-rw-r--r--documentation/dev-manual/dev-manual-newbie.xml461
1 files changed, 255 insertions, 206 deletions
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml
index c3df1c2958..fd8ff08949 100644
--- a/documentation/dev-manual/dev-manual-newbie.xml
+++ b/documentation/dev-manual/dev-manual-newbie.xml
@@ -7,12 +7,12 @@
7 7
8<para> 8<para>
9 This chapter helps you understand the Yocto Project as an open source development project. 9 This chapter helps you understand the Yocto Project as an open source development project.
10 In general, working in an open-source environment is very different than working in a 10 In general, working in an open source environment is very different as compared to working in a
11 proprietary environment. 11 proprietary environment.
12 Additionally, the Yocto Project uses specific tools and constructs as part of its development 12 Additionally, the Yocto Project uses specific tools and constructs as part of its development
13 environment. 13 environment.
14 The chapter specifically addresses open source philosophy, licensing issues, code repositories, 14 The chapter specifically addresses open source philosophy, licensing issues, code repositories,
15 the open source distributed version control system Git, and best practices using Yocto Project. 15 the open source distributed version control system Git, and best practices using the Yocto Project.
16</para> 16</para>
17 17
18<section id='open-source-philosophy'> 18<section id='open-source-philosophy'>
@@ -33,23 +33,21 @@
33 stake in the software project. 33 stake in the software project.
34 The open source environment contains new copyright, licensing, domain, and consumer issues 34 The open source environment contains new copyright, licensing, domain, and consumer issues
35 that differ from the more traditional development environment. 35 that differ from the more traditional development environment.
36 In an open source environment the end-product, source material, and documentation are 36 In an open source environment, the end-product, source material, and documentation are
37 all available to the public at no cost. 37 all available to the public at no cost.
38 </para> 38 </para>
39 39
40 <para> 40 <para>
41 A benchmark example of an open source project is the Linux Kernel, which was initially conceived 41 A benchmark example of an open source project is the Linux Kernel, which was initially conceived
42 and created by Finnish computer science student Linus Torvalds in 1991. 42 and created by Finnish computer science student Linus Torvalds in 1991.
43 Conversely, a good example of a non-open source project is the Windows family of operating 43 Conversely, a good example of a non-open source project is the
44 systems developed by Microsoft Corporation. 44 <trademark class='registered'>Windows</trademark> family of operating
45 systems developed by <trademark class='registered'>Microsoft</trademark> Corporation.
45 </para> 46 </para>
46 47
47 <para> 48 <para>
48 Wikipedia has a good historical description of the Open Source Philosophy 49 Wikipedia has a good historical description of the Open Source Philosophy
49 <ulink url='http://en.wikipedia.org/wiki/Open_source'>here</ulink>. 50 <ulink url='http://en.wikipedia.org/wiki/Open_source'>here</ulink>.
50 </para>
51
52 <para>
53 You can also find helpful information on how to participate in the Linux Community 51 You can also find helpful information on how to participate in the Linux Community
54 <ulink url='http://ldn.linuxfoundation.org/book/how-participate-linux-community'>here</ulink>. 52 <ulink url='http://ldn.linuxfoundation.org/book/how-participate-linux-community'>here</ulink>.
55 </para> 53 </para>
@@ -66,21 +64,21 @@
66 From the interface, you can click on any particular item in the "Name" column and 64 From the interface, you can click on any particular item in the "Name" column and
67 see the URL at the bottom of the page that you need to set up a Git repository for 65 see the URL at the bottom of the page that you need to set up a Git repository for
68 that particular item. 66 that particular item.
69 The ability to create Git repositories of the Yocto Project source allows you to 67 Having a local Git repository of the Yocto Project files allows you to
70 make changes, contribute to the history, and ultimately enhance the Yocto Project's 68 make changes, contribute to the history, and ultimately enhance the Yocto Project's
71 tools, Board Support Packages, and so forth. 69 tools, Board Support Packages, and so forth.
72 </para> 70 </para>
73 71
74 <para> 72 <para>
75 Conversely, if you are a developer that is not interested in contributing back to the 73 Conversely, if you are a developer that is not interested in contributing back to the
76 Yocto Project you have the ability to simply download and extract release tarballs 74 Yocto Project, you have the ability to simply download and extract release tarballs
77 and use them within the Yocto Project environment. 75 and use them within the Yocto Project environment.
78 All that is required is a particular release of Yocto Project, a kernel, and 76 All that is required is a particular release of Yocto Project, a kernel, and
79 your application source code. 77 your application source code.
80 </para> 78 </para>
81 79
82 <para> 80 <para>
83 For any supported release of Yocto Project you can go to the Yocto Project website’s 81 For any supported release of Yocto Project, you can go to the Yocto Project website’s
84 <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and get a 82 <ulink url='http://www.yoctoproject.org/download'>download page</ulink> and get a
85 tarball of the release. 83 tarball of the release.
86 You can also go to this site to download any supported BSP tarballs. 84 You can also go to this site to download any supported BSP tarballs.
@@ -104,8 +102,9 @@
104 <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> 102 <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" />
105 </para></listitem> 103 </para></listitem>
106 <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='http://autobuilder.yoctoproject.org/downloads/'>Index of /downloads:</ulink></emphasis> 104 <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='http://autobuilder.yoctoproject.org/downloads/'>Index of /downloads:</ulink></emphasis>
107 This area contains an index of the Eclipse-plugin, miscellaneous support, poky, pseudo, and 105 This area contains an index of downloads such as
108 all released versions of Yocto Project in the form of images or tarballs. 106 the Eclipse Yocto Plug-in, miscellaneous support, Poky, pseudo, cross-development toolchains,
107 and all released versions of Yocto Project in the form of images or tarballs.
109 Downloading and extracting these files does not produce a Git repository but rather 108 Downloading and extracting these files does not produce a Git repository but rather
110 a snapshot of a particular release or image. 109 a snapshot of a particular release or image.
111 [WRITER NOTE: link will be http://downloads.yoctoproject.org.]</para> 110 [WRITER NOTE: link will be http://downloads.yoctoproject.org.]</para>
@@ -130,12 +129,87 @@
130 <para> 129 <para>
131 Following is a list of terms and definitions users new to the Yocto Project development 130 Following is a list of terms and definitions users new to the Yocto Project development
132 environment might find helpful. 131 environment might find helpful.
133 Some terms are universal but are included here just in case: 132 While some of these terms are universal, the list includes them just in case:
134 <itemizedlist> 133 <itemizedlist>
135 <listitem><para><emphasis>The Yocto Project Files:</emphasis> 134 <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to
135 a recipe file.
136 Information in append files override the information in the similarly-named recipe file.
137 Append files use the <filename>.bbappend</filename> filename suffix.</para></listitem>
138 <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by
139 the Yocto Project to build images.
140 For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'>
141 BitBake documentation</ulink>.</para></listitem>
142 <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation
143 and inheritance allowing commonly used patterns to be defined once and easily used
144 in multiple recipes.
145 Class files end with the <filename>.bbclass</filename> filename extension.</para></listitem>
146 <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in the
147 <filename>.conf</filename> files provides global definitions of variables.
148 The <filename>conf/local.conf</filename> configuration file in the Yocto Project
149 build directory defines user-defined variables that affect each build.
150 The <filename>distro/poky.conf</filename> configuration file also in the
151 build directory defines Yocto ‘distro’ configuration
152 variables used only when building with this policy.
153 Machine configuration files, which
154 are located throughout the Yocto Project file structure, define
155 variables for specific hardware and are only used when building for that target
156 (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines
157 variables for the Texas Instruments ARM Cortex-A8 development board).
158 Configuration files end with a <filename>.conf</filename> filename extension.</para></listitem>
159 <listitem><para><emphasis>Cross-Development Toolchain:</emphasis> A collection of software development
160 tools and utilities that allow you to develop software for targeted architectures.
161 This toolchain contains cross-compilers, linkers, and debuggers that are specific to
162 an architecure.
163 You can use the Yocto Project to build cross-development toolchains in tarball form that when
164 unpacked contain the development tools you need to cross-compile and test your software.
165 The Yocto Project ships with images that contain toolchains for supported architectures
166 as well.
167 Sometimes this toolchain is referred to as the meta-toolchain.</para></listitem>
168 <listitem><para><emphasis>Image:</emphasis> An image is the result produced when
169 BitBake processes a given collection of recipes and related metadata.
170 Images are the binary output that runs on specific hardware and for specific
171 use cases.
172 For a list of the supported image types that the Yocto Project provides, see the
173 "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'>Reference: Images</ulink>"
174 appendix in
175 <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'>
176 The Yocto Project Reference Manual</ulink>.</para></listitem>
177 <listitem><para><emphasis>Layer:</emphasis> A collection of recipes representing the core,
178 a BSP, or an application stack.</para></listitem>
179 <listitem><para><emphasis>Metadata:</emphasis> The files that BitBake parses when building an image.
180 Metadata includes recipes, classes, and configuration files.</para></listitem>
181 <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating
182 with OpenEmbedded (OE) that is shared between OE and the Yocto Project.
183 This metadata is found in the <filename>meta</filename> directory of the Yocto Project
184 files.</para></listitem>
185 <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe.
186 A package is generally the compiled binaries produced from the recipe's sources.
187 You ‘bake’ something by running it through BitBake.</para></listitem>
188 <listitem><para><emphasis>Poky:</emphasis> The build tool that the Yocto Project
189 uses to create images.</para></listitem>
190 <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages.
191 A recipe describes where you get source code and which patches to apply.
192 Recipes describe dependencies for libraries or for other recipes, and they
193 also contain configuration and compilation options.
194 Recipes contain the logical unit of execution, the software/images to build, and
195 use the <filename>.bb</filename> file extension.</para></listitem>
196 <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes.
197 You simply use Tasks to hold recipes that, when built, usually accomplish a single task.
198 For example, a task could contain the recipes for a company’s proprietary or value-add software.
199 Or, the task could contain the recipes that enable graphics.
200 A task is really just another recipe.
201 Because task files are recipes, they end with the <filename>.bb</filename> filename
202 extension.</para></listitem>
203 <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories
204 that are not local to the development system but located in a master area that is controlled
205 by the maintainer of the source code.
206 For example, in order for a developer to work on a particular piece of code, they need to
207 first get a copy of it from an "upstream" source.</para></listitem>
208 <listitem><para><emphasis>Yocto Project Files:</emphasis>
136 This term refers to the directory structure created as a result of downloading 209 This term refers to the directory structure created as a result of downloading
137 and unpacking a Yocto Project release tarball or setting up a Git repository 210 and unpacking a Yocto Project release tarball or setting up a Git repository
138 by cloning <filename>git://git.yoctoproject.org/poky</filename>.</para> 211 by cloning <filename>git://git.yoctoproject.org/poky</filename>.
212 Sometimes the term "the Yocto Project Files structure" is used as well.</para>
139 <para>The Yocto Project files contain BitBake, Documentation, metadata and 213 <para>The Yocto Project files contain BitBake, Documentation, metadata and
140 other files that all support the development environment. 214 other files that all support the development environment.
141 Consequently, you must have the Yocto Project files in place on your development 215 Consequently, you must have the Yocto Project files in place on your development
@@ -143,102 +217,31 @@
143 <para>The name of the top-level directory of the Yocto Project file structure 217 <para>The name of the top-level directory of the Yocto Project file structure
144 is derived from the Yocto Project release tarball. 218 is derived from the Yocto Project release tarball.
145 For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename> 219 For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename>
146 results in a Yocto Project source tree whose Yocto Project source directory is named 220 results in a Yocto Project file structure whose Yocto Project source directory is named
147 <filename>poky-edison-6.0</filename>. 221 <filename>poky-edison-6.0</filename>.
148 If you create a Git repository, then you can name the repository anything you like.</para> 222 If you create a Git repository, then you can name the repository anything you like.</para>
149 <para>You can find instruction on how to set up the Yocto Project files on your 223 <para>You can find instruction on how to set up the Yocto Project files on your
150 host development system by reading 224 host development system by reading
151 the 225 the
152 "<ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html#getting-setup'>Getting 226 "<ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html#getting-setup'>Getting
153 Setup</ulink>" section in 227 Setup</ulink>" section.</para></listitem>
154 <ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html'> 228 <listitem><para><emphasis>Yocto Project Build Directory:</emphasis>
155 The Yocto Project Development Manual</ulink>.</para></listitem> 229 This term refers to the area used by the Yocto Project for builds.
156 <listitem><para><emphasis>Yocto Project Build Tree:</emphasis>
157 This term refers to the area where the Yocto Project builds images.
158 The area is created when you <filename>source</filename> the Yocto Project setup 230 The area is created when you <filename>source</filename> the Yocto Project setup
159 environment script that is found in the Yocto Project files area. 231 environment script that is found in the Yocto Project files area.
160 (e.g. <filename>oe-init-build-env</filename>). 232 (e.g. <filename>oe-init-build-env</filename>).
161 You can create the Yocto Project build tree anywhere you want on your 233 You can create the Yocto Project build directory anywhere you want on your
162 development system. 234 development system.
163 Here is an example that creates the tree in <filename>mybuilds</filename> 235 Here is an example that creates the directory in <filename>mybuilds</filename>
164 and names the Yocto Project build directory <filename>YP-6.0</filename>: 236 and names the Yocto Project build directory <filename>YP-6.0</filename>:
165 <literallayout class='monospaced'> 237 <literallayout class='monospaced'>
166 $ source poky-edison-6.0/oe-init-build-env $HOME/mybuilds/YP-6.0 238 $ source poky-edison-6.0/oe-init-build-env $HOME/mybuilds/YP-6.0
167 </literallayout> 239 </literallayout>
168 If you don't specifically name the build directory, BitBake creates it 240 If you don't specifically name the directory, BitBake creates it
169 in the current directory and uses the name <filename>build</filename>. 241 in the current directory and uses the name <filename>build</filename>.
170 Also, if you supply an existing directory, then BitBake uses that 242 Also, if you supply an existing directory, then BitBake uses that
171 directory as the Yocto Project build directory and populates the build tree 243 directory as the Yocto Project build directory and populates the build hierarchy
172 beneath it.</para></listitem> 244 beneath it.</para></listitem>
173 <listitem><para><emphasis>Image</emphasis> - An image is the result produced when
174 BitBake processes a given collection of recipes and related metadata.
175 Images are the binary output that runs on specific hardware and for specific
176 use cases.
177 For a list of the supported image types that the Yocto Project provides, see the
178 <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#ref-images'>
179 Reference: Images</ulink> appendix in
180 <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'>
181 The Yocto Project Reference Manual</ulink>.</para></listitem>
182 <listitem><para><emphasis>Recipe</emphasis> - A set of instructions for building packages.
183 A recipe describes where you get source code and which patches to apply.
184 Recipes describe dependencies for libraries or for other recipes and they
185 also contain configuration and compilation options.
186 Recipes contain the logical unit of execution, the software/images to build, and
187 use the <filename>.bb</filename> file extension.</para></listitem>
188 <listitem><para><emphasis>BitBake</emphasis> - The task executor and scheduler used by Yocto Project
189 to build images.
190 For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'>
191 BitBake documentation</ulink>.</para></listitem>
192 <listitem><para><emphasis>Package</emphasis> - The packaged output from a baked recipe.
193 A package is generally the compiled binaries produced from the recipe's sources.
194 You ‘bake’ something by running it through BitBake.</para></listitem>
195 <listitem><para><emphasis>Layer</emphasis> - A collection of recipes representing the core,
196 a BSP, or an application stack.</para></listitem>
197 <listitem><para><emphasis>Metadata</emphasis> - A term used throughout the Yocto Project
198 documentation that refers to the files that BitBake parses when building an image.
199 Metadata includes recipes, classes, and configuration files.</para></listitem>
200 <listitem><para><emphasis>Meta-Toolchain</emphasis> - A collection of software development
201 tools and utilities that allow you to develop software for targeted architectures.
202 These toolchains contain cross-compilers, linkers, and debuggers that are specific to
203 an architecure.
204 You can use the Yocto Project to build meta-toolchains in tarball form that when
205 unpacked contain the development tools you need to cross-compile and test your software.
206 The Yocto Project ships with images that contain toolchains for supported architectures
207 as well.</para></listitem>
208 <listitem><para><emphasis>Configuration File</emphasis>: Configuration information in the
209 <filename>.conf</filename> files provides global definitions of variables.
210 The <filename>build/conf/local.conf</filename> configuration file defines user-defined variables
211 that effect each build.
212 The <filename>distro/poky.conf</filename> configuration file defines Yocto ‘distro’ configuration
213 variables used only when building with this policy.
214 The <filename>machine/beagleboard.conf</filename> configuration file defines variables
215 for the Beagleboard and are only used when building for that target
216 (i.e. Texas Instruments ARM Cortex-A8 development board).
217 Configuration files end with a <filename>.conf</filename> filename extension.</para></listitem>
218 <listitem><para><emphasis>Classes</emphasis> - Files that provide for logic encapsulation
219 and inheritance allowing commonly used patterns to be defined once and easily used
220 in multiple recipes.
221 Class files end with the <filename>.bbclass</filename> filename extension.</para></listitem>
222 <listitem><para><emphasis>Append Files</emphasis> - Files that append build information to
223 a recipe file.
224 Information in append files override the information in the similarly-named recipe file.
225 Append files use the <filename>.bbappend</filename> filename suffix.</para></listitem>
226 <listitem><para><emphasis>Tasks</emphasis> - Arbitrary groups of software Recipes.
227 You simply use Tasks to hold recipes that when built usually accomplish a single task.
228 For example, a task could contain the recipes for a company’s proprietary or value-add software.
229 Or the task could contain the recipes that enable graphics.
230 A task is really just another recipe.
231 Because task files are recipes, they end with the <filename>.bb</filename> filename
232 extension.</para></listitem>
233 <listitem><para><emphasis>OE-Core</emphasis> - A core set of metadata originating
234 with OpenEmbedded (OE) that is shared between OE and the Yocto Project.
235 This metadata is found in the <filename>meta</filename> directory of the Yocto Project
236 files.</para></listitem>
237 <listitem><para><emphasis>Upstream</emphasis> - A reference to source code or repositories
238 that are not local to the development system but located in a master area that is controlled
239 by the maintainer of the source code.
240 For example, in order for a developer to work on a particular piece of code they need to
241 first get a copy of it from an "upstream" source.</para></listitem>
242 </itemizedlist> 245 </itemizedlist>
243 </para> 246 </para>
244</section> 247</section>
@@ -247,9 +250,9 @@
247 <title>Licensing</title> 250 <title>Licensing</title>
248 251
249 <para> 252 <para>
250 Because open source projects are open to the public they have different licensing structures in place. 253 Because open source projects are open to the public, they have different licensing structures in place.
251 License evolution for both Open Source and Free Software has an interesting history. 254 License evolution for both Open Source and Free Software has an interesting history.
252 If you are interested in the history you can find basic information here: 255 If you are interested in this history, you can find basic information here:
253 <itemizedlist> 256 <itemizedlist>
254 <listitem><para><ulink url='http://en.wikipedia.org/wiki/Open-source_license'>Open source license history</ulink> 257 <listitem><para><ulink url='http://en.wikipedia.org/wiki/Open-source_license'>Open source license history</ulink>
255 </para></listitem> 258 </para></listitem>
@@ -275,13 +278,13 @@
275 When you build an image using Yocto Project, the build process uses a known list of licenses to 278 When you build an image using Yocto Project, the build process uses a known list of licenses to
276 ensure compliance. 279 ensure compliance.
277 Once the build completes, the list of all licenses found and used during the build are 280 Once the build completes, the list of all licenses found and used during the build are
278 kept in the resulting build directory at 281 kept in the Yocto Project build directory at
279 <filename>&lt;build_directory&gt;/tmp/deploy/images/licenses</filename>. 282 <filename>tmp/deploy/images/licenses</filename>.
280 If a module requires a license that is not in the base list, the build process 283 If a module requires a license that is not in the base list, the build process
281 generates a warning during the build. 284 generates a warning during the build.
282 These tools make it easier for a developer to be certain of the licenses with which 285 These tools make it easier for a developer to be certain of the licenses with which
283 their shipped products must comply. 286 their shipped products must comply.
284 However, it is still up to the developer to resolve potential licensing issues. 287 However, even with these tools it is still up to the developer to resolve potential licensing issues.
285 </para> 288 </para>
286 289
287 <para> 290 <para>
@@ -292,14 +295,13 @@
292 for a standard format for communicating the components, licenses, and copyrights 295 for a standard format for communicating the components, licenses, and copyrights
293 associated with a software package. 296 associated with a software package.
294 <ulink url='http://opensource.org'>OSI</ulink> is a corporation dedicated to the Open Source 297 <ulink url='http://opensource.org'>OSI</ulink> is a corporation dedicated to the Open Source
295 Definition and the effort for reviewing 298 Definition and the effort for reviewing and approving licenses that are OSD-conformant.
296 and approving licenses that are OSD-conformant.
297 </para> 299 </para>
298 300
299 <para> 301 <para>
300 You can find a list of the combined SPDX and OSI licenses that the Yocto Project uses 302 You can find a list of the combined SPDX and OSI licenses that the Yocto Project uses
301 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/files/common-licenses'>here</ulink>. 303 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/files/common-licenses'>here</ulink>.
302 The wiki page discusses the license infrastructure used by the Yocto Project. 304 This wiki page discusses the license infrastructure used by the Yocto Project.
303 </para> 305 </para>
304</section> 306</section>
305 307
@@ -320,7 +322,7 @@
320 You do not have to be an expert in Git to be functional. 322 You do not have to be an expert in Git to be functional.
321 A good place to look for instruction on a minimal set of Git commands is 323 A good place to look for instruction on a minimal set of Git commands is
322 <ulink url='http://git-scm.com/documentation'>here</ulink>. 324 <ulink url='http://git-scm.com/documentation'>here</ulink>.
323 If you need to download Git you can do so 325 If you need to download Git, you can do so
324 <ulink url='http://git-scm.com/download'>here</ulink>. 326 <ulink url='http://git-scm.com/download'>here</ulink>.
325 </para> 327 </para>
326 328
@@ -332,7 +334,7 @@
332 This methodology also allows for an environment in which you can do lots of 334 This methodology also allows for an environment in which you can do lots of
333 experimentation on your project as you develop changes or new features. 335 experimentation on your project as you develop changes or new features.
334 For example, you can create a “branch”, experiment with some feature, and then 336 For example, you can create a “branch”, experiment with some feature, and then
335 if you like the feature you incorporate the branch into the tree. 337 if you like the feature, you incorporate the branch into the tree.
336 If you don’t, you cut the branch off by deleting it. 338 If you don’t, you cut the branch off by deleting it.
337 </para> 339 </para>
338 340
@@ -347,55 +349,63 @@
347 omits the many arguments they support. 349 omits the many arguments they support.
348 See the Git documentation for complete descriptions and strategies on how to use these commands: 350 See the Git documentation for complete descriptions and strategies on how to use these commands:
349 <itemizedlist> 351 <itemizedlist>
350 <listitem><para><emphasis><filename>git init</filename></emphasis> Initializes an empty Git repository. 352 <listitem><para><emphasis><filename>git init</filename>:</emphasis> Initializes an empty Git repository.
351 You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem> 353 You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem>
352 <listitem><para><emphasis><filename>git clone</filename></emphasis> Creates a clone of a repository. 354 <listitem><para><emphasis><filename>git clone</filename>:</emphasis> Creates a clone of a repository.
353 During collaboration this command allows you to create a local repository that is on 355 During collaboration, this command allows you to create a local repository that is on
354 equal footing with a fellow developer’s repository.</para></listitem> 356 equal footing with a fellow developer’s repository.</para></listitem>
355 <listitem><para><emphasis><filename>git add</filename></emphasis> – Adds updated file contents to the index that 357 <listitem><para><emphasis><filename>git add</filename>:</emphasis> Adds updated file contents
358 to the index that
356 Git uses to track changes. 359 Git uses to track changes.
357 All files that have changed must be added before they can be committed.</para></listitem> 360 You must add all files that have changed before you can commit them.</para></listitem>
358 <listitem><para><emphasis><filename>git commit</filename></emphasis> Creates a “commit” that documents 361 <listitem><para><emphasis><filename>git commit</filename>:</emphasis> Creates a “commit” that documents
359 the changes you made. 362 the changes you made.
360 Commits are used for historical purposes, for determining if a maintainer of a project 363 Commits are used for historical purposes, for determining if a maintainer of a project
361 will allow the change, and for ultimately pushing the change from your local Git repository 364 will allow the change, and for ultimately pushing the change from your local Git repository
362 into the project’s upstream (or master) repository.</para></listitem> 365 into the project’s upstream (or master) repository.</para></listitem>
363 <listitem><para><emphasis><filename>git status</filename></emphasis> Reports any modified files that 366 <listitem><para><emphasis><filename>git status</filename>:</emphasis> Reports any modified files that
364 possibly need added and committed.</para></listitem> 367 possibly need added and committed.</para></listitem>
365 <listitem><para><emphasis><filename>git checkout &lt;branch-name&gt;</filename></emphasis> - Changes 368 <listitem><para><emphasis><filename>git checkout &lt;branch-name&gt;</filename>:</emphasis> Changes
366 your working branch. This command is analogous to “cd”.</para></listitem> 369 your working branch.
367 <listitem><para><emphasis><filename>git checkout –b &lt;working-branch&gt;</filename></emphasis> - Creates 370 This command is analogous to “cd”.</para></listitem>
371 <listitem><para><emphasis><filename>git checkout –b &lt;working-branch&gt;</filename>:</emphasis> Creates
368 a working branch on your local machine where you can isolate work. 372 a working branch on your local machine where you can isolate work.
369 It is a good idea to use local branches when adding specific features or changes. 373 It is a good idea to use local branches when adding specific features or changes.
370 This way if you don’t like what you have done you can easily get rid of the work.</para></listitem> 374 This way if you don’t like what you have done you can easily get rid of the work.</para></listitem>
371 <listitem><para><emphasis><filename>git branch</filename></emphasis> Reports existing branches and 375 <listitem><para><emphasis><filename>git branch</filename>:</emphasis> Reports existing branches and
372 tells you which branch in which you are currently working.</para></listitem> 376 tells you which branch in which you are currently working.</para></listitem>
373 <listitem><para><emphasis><filename>git branch -D &lt;branch-name&gt;</filename></emphasis> – 377 <listitem><para><emphasis><filename>git branch -D &lt;branch-name&gt;</filename>:</emphasis>
374 Deletes an existing branch. You need to be in a branch other than the one you are deleting 378 Deletes an existing branch.
379 You need to be in a branch other than the one you are deleting
375 in order to delete &lt;branch-name&gt;.</para></listitem> 380 in order to delete &lt;branch-name&gt;.</para></listitem>
376 <listitem><para><emphasis><filename>git pull</filename></emphasis> – Retrieves information from an upstream Git 381 <listitem><para><emphasis><filename>git pull</filename>:</emphasis> Retrieves information
382 from an upstream Git
377 repository and places it in your local Git repository. 383 repository and places it in your local Git repository.
378 You use this command to make sure you are synchronized with the upstream repository 384 You use this command to make sure you are synchronized with the repository
379 from which the project’s maintainer uses to pull changes into the master repository.</para></listitem> 385 from which you are basing changes (.e.g. the master repository).</para></listitem>
380 <listitem><para><emphasis><filename>git push</filename></emphasis> Sends all your local changes you 386 <listitem><para><emphasis><filename>git push</filename>:</emphasis> Sends all your local changes you
381 have committed to an upstream Git repository. 387 have committed to an upstream Git repository (e.g. a contribution repository).
382 The maintainer of the project draws from these repositories when adding your changes to the 388 The maintainer of the project draws from these repositories when adding your changes to the
383 project’s master repository.</para></listitem> 389 project’s master repository.</para></listitem>
384 <listitem><para><emphasis><filename>git merge</filename></emphasis> Combines or adds changes from one 390 <listitem><para><emphasis><filename>git merge</filename>:</emphasis> Combines or adds changes from one
385 local branch of your repository with another branch. 391 local branch of your repository with another branch.
386 When you create a local Git repository the default branch is named “master”. 392 When you create a local Git repository, the default branch is named “master”.
387 A typical workflow is to create a temporary branch for isolated work, make and commit your 393 A typical workflow is to create a temporary branch for isolated work, make and commit your
388 changes, switch to the master branch, merge the changes from the temporary branch into the 394 changes, switch to your local master branch, merge the changes from the temporary branch into the
389 master branch, and then delete the temporary branch</para></listitem> 395 local master branch, and then delete the temporary branch.</para></listitem>
390 <listitem><para><emphasis><filename>git cherry-pick</filename></emphasis> Choose and apply specific 396 <listitem><para><emphasis><filename>git cherry-pick</filename>:</emphasis> Choose and apply specific
391 commits from one branch into another branch. 397 commits from one branch into another branch.
392 There are times when you might not be able to merge all the changes in one branch with 398 There are times when you might not be able to merge all the changes in one branch with
393 another but need to pick out certain ones.</para></listitem> 399 another but need to pick out certain ones.</para></listitem>
394 <listitem><para><emphasis><filename>gitk</filename></emphasis> Provides a GUI view of the branches 400 <listitem><para><emphasis><filename>gitk</filename>:</emphasis> Provides a GUI view of the branches
395 and changes in your local Git repository. 401 and changes in your local Git repository.
396 This command is a good way to see where things have diverged in your local repository.</para></listitem> 402 This command is a good way to graphically see where things have diverged in your
397 <listitem><para><emphasis><filename>git log</filename></emphasis> – Reports a history of your changes to the 403 local repository.</para></listitem>
404 <listitem><para><emphasis><filename>git log</filename>:</emphasis> Reports a history of your changes to the
398 repository.</para></listitem> 405 repository.</para></listitem>
406 <listitem><para><emphasis><filename>git diff</filename>:</emphasis> Displays line-by-line differences
407 between your local working files and the same files in the upstream Git repository that your
408 branch currently tracks.</para></listitem>
399 </itemizedlist> 409 </itemizedlist>
400 </para> 410 </para>
401</section> 411</section>
@@ -407,14 +417,16 @@
407 This section provides some overview on workflows using Git. 417 This section provides some overview on workflows using Git.
408 In particular, the information covers basic practices that describe roles and actions in a 418 In particular, the information covers basic practices that describe roles and actions in a
409 collaborative development environment. 419 collaborative development environment.
410 Again, if you are familiar with this type of development environment you might want to just skip the section. 420 Again, if you are familiar with this type of development environment, you might want to just
421 skip the section.
411 </para> 422 </para>
412 423
413 <para> 424 <para>
414 The Yocto Project files are maintained using Git in a "master" branch whose Git history 425 The Yocto Project files are maintained using Git in a "master" branch whose Git history
415 tracks every change and whose structure provides branches for all diverging functionality. 426 tracks every change and whose structure provides branches for all diverging functionality.
416 Although there is no need to use Git, This practice is typical for open-source projects. 427 Although there is no need to use Git, many open source projects do so.
417 For the Yocto Project a key individual called the "maintainer" is responsible for "master". 428 For the Yocto Project, a key individual called the "maintainer" is responsible for "master"
429 branch of the Git repository.
418 The "master" branch is the “upstream” repository where the final builds of the project occur. 430 The "master" branch is the “upstream” repository where the final builds of the project occur.
419 The maintainer is responsible for allowing changes in from other developers and for 431 The maintainer is responsible for allowing changes in from other developers and for
420 organizing the underlying branch structure to reflect release strategies and so forth. 432 organizing the underlying branch structure to reflect release strategies and so forth.
@@ -432,7 +444,7 @@
432 Developers (including contributing community members) create and maintain cloned repositories 444 Developers (including contributing community members) create and maintain cloned repositories
433 of the upstream "master" branch. 445 of the upstream "master" branch.
434 These repositories are local to their development platforms and are used to develop changes. 446 These repositories are local to their development platforms and are used to develop changes.
435 When a developer is satisfied with a particular feature or change they “push” the changes 447 When a developer is satisfied with a particular feature or change, they “push” the changes
436 to the appropriate "contrib" repository. 448 to the appropriate "contrib" repository.
437 </para> 449 </para>
438 450
@@ -468,53 +480,53 @@
468 The following list describes some of these practices. 480 The following list describes some of these practices.
469 For more detailed information about these strategies see 481 For more detailed information about these strategies see
470 <ulink url='http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html'>Git Workflows</ulink>. 482 <ulink url='http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html'>Git Workflows</ulink>.
471 <itemizedlist> 483 <itemizedlist>
472 <listitem><para><emphasis>Make Small Changes</emphasis> - It is best to keep your changes you commit 484 <listitem><para><emphasis>Make Small Changes:</emphasis> It is best to keep your changes you commit
473 small as compared to bundling many disparate changes into a single commit. 485 small as compared to bundling many disparate changes into a single commit.
474 This practice not only keeps things manageable but also allows the maintainer 486 This practice not only keeps things manageable but also allows the maintainer
475 to more easily include or refuse changes.</para> 487 to more easily include or refuse changes.</para>
476 <para>It is also good practice to leave the repository in a state that allows you to 488 <para>It is also good practice to leave the repository in a state that allows you to
477 still successfully build your project.</para></listitem> 489 still successfully build your project.</para></listitem>
478 <listitem><para><emphasis>Use Branches Liberally</emphasis> - It is very easy to create, use, and 490 <listitem><para><emphasis>Use Branches Liberally:</emphasis> It is very easy to create, use, and
479 delete local branches in your working Git repository. 491 delete local branches in your working Git repository.
480 You can name these branches anything you like. 492 You can name these branches anything you like.
481 It is helpful to give them names associated with the particular feature or change 493 It is helpful to give them names associated with the particular feature or change
482 on which you are working. 494 on which you are working.
483 Once you are done with a feature or change you simply discard the branch.</para></listitem> 495 Once you are done with a feature or change, simply discard the branch.</para></listitem>
484 <listitem><para><emphasis>Merge Changes</emphasis> - The <filename>git merge</filename> 496 <listitem><para><emphasis>Merge Changes:</emphasis> The <filename>git merge</filename>
485 command allows you to take the 497 command allows you to take the
486 changes from one branch and fold them into another branch. 498 changes from one branch and fold them into another branch.
487 This process is especially helpful when more than a single developer might be working 499 This process is especially helpful when more than a single developer might be working
488 on different parts of the same feature. 500 on different parts of the same feature.
489 Merging changes also automatically identifies any collisions or “conflicts” 501 Merging changes also automatically identifies any collisions or “conflicts”
490 that might happen resulting from the same lines of code being altered by two different 502 that might happen as a result of the same lines of code being altered by two different
491 developers.</para></listitem> 503 developers.</para></listitem>
492 <listitem><para><emphasis>Manage Branches</emphasis> - Because branches are easy to use, you should 504 <listitem><para><emphasis>Manage Branches:</emphasis> Because branches are easy to use, you should
493 use a system where branches indicate varying levels of code readiness. 505 use a system where branches indicate varying levels of code readiness.
494 For example, you can have a “work” branch to develop in, a “test” branch where the code or 506 For example, you can have a “work” branch to develop in, a “test” branch where the code or
495 change is tested, a “stage” branch where changes are ready to be committed, and so forth. 507 change is tested, a “stage” branch where changes are ready to be committed, and so forth.
496 As your project develops, you can merge code across the branches to reflect ever-increasing 508 As your project develops, you can merge code across the branches to reflect ever-increasing
497 stable states of the development.</para></listitem> 509 stable states of the development.</para></listitem>
498 <listitem><para><emphasis>Use Push and Pull</emphasis> - The push-pull workflow is based on the 510 <listitem><para><emphasis>Use Push and Pull:</emphasis> The push-pull workflow is based on the
499 concept of developers “pushing” local commits to a remote repository, which is 511 concept of developers “pushing” local commits to a remote repository, which is
500 usually a contribution repository. 512 usually a contribution repository.
501 It is also based on the developers “pulling” known states of the project down into their 513 This workflow is also based on developers “pulling” known states of the project down into their
502 local development repositories. 514 local development repositories.
503 This workflow easily allows you to pull changes submitted by other developers from the 515 The workflow easily allows you to pull changes submitted by other developers from the
504 upstream repository into your work area ensuring that you have the most recent software 516 upstream repository into your work area ensuring that you have the most recent software
505 on which to develop. 517 on which to develop.
506 The Yocto Project has two scripts named <filename>create-pull-request</filename> and 518 The Yocto Project has two scripts named <filename>create-pull-request</filename> and
507 <filename>send-pull-request</filename> that ship with the release to facilitate this 519 <filename>send-pull-request</filename> that ship with the release to facilitate this
508 workflow. 520 workflow.
509 You can find these scripts in the local Yocto Project files Git repository in 521 You can find these scripts in the local Yocto Project files Git repository in
510 <filename>scripts</filename>.</para></listitem> 522 <filename>scripts</filename>.</para></listitem>
511 <listitem><para><emphasis>Patch Workflow</emphasis> - This workflow allows you to notify the 523 <listitem><para><emphasis>Patch Workflow:</emphasis> This workflow allows you to notify the
512 maintainer through an email that you have a change (or patch) you would like considered 524 maintainer through an email that you have a change (or patch) you would like considered
513 for the "master" branch of the Git repository. 525 for the "master" branch of the Git repository.
514 To send this type of change you format the patch and then send the email using the Git commands 526 To send this type of change you format the patch and then send the email using the Git commands
515 <filename>git format-patch</filename> and <filename>git send-email</filename>. 527 <filename>git format-patch</filename> and <filename>git send-email</filename>.
516 You can find information on how to submit later in this chapter.</para></listitem> 528 You can find information on how to submit later in this chapter.</para></listitem>
517 </itemizedlist> 529 </itemizedlist>
518 </para> 530 </para>
519</section> 531</section>
520 532
@@ -532,7 +544,7 @@
532 <para> 544 <para>
533 Sometimes it is helpful to submit, investigate, or track a bug against the Yocto Project itself 545 Sometimes it is helpful to submit, investigate, or track a bug against the Yocto Project itself
534 such as when discovering an issue with some component of the build system that acts contrary 546 such as when discovering an issue with some component of the build system that acts contrary
535 to the documentation or expectations. 547 to the documentation or your expectations.
536 You can find information 548 You can find information
537 for Bugzilla configuration and bug tracking procedures specific to the Yocto Project 549 for Bugzilla configuration and bug tracking procedures specific to the Yocto Project
538 <ulink url='https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking'>here</ulink>. 550 <ulink url='https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking'>here</ulink>.
@@ -548,7 +560,7 @@
548 <para> 560 <para>
549 Here are some things to remember when dealing with bugs against the Yocto Project: 561 Here are some things to remember when dealing with bugs against the Yocto Project:
550 <itemizedlist> 562 <itemizedlist>
551 <listitem><para>The Yocto Project follows a naming bug-naming convention: 563 <listitem><para>The Yocto Project follows a bug-naming convention:
552 <filename>[YOCTO #&lt;number&gt;]</filename>, where <filename>&lt;number&gt;</filename> is the 564 <filename>[YOCTO #&lt;number&gt;]</filename>, where <filename>&lt;number&gt;</filename> is the
553 assigned defect ID used in Bugzilla. 565 assigned defect ID used in Bugzilla.
554 So, for example, a valid way to refer to a defect when creating a commit comment 566 So, for example, a valid way to refer to a defect when creating a commit comment
@@ -567,8 +579,34 @@
567 579
568 <para> 580 <para>
569 Contributions to the Yocto Project are very welcome. 581 Contributions to the Yocto Project are very welcome.
570 You should send patches to the Yocto Project mailing list to get them in front of the 582 You should send patches to the appropriate Yocto Project mailing list to get them
571 Yocto Project Maintainer. 583 in front of the Yocto Project Maintainer.
584 For a list of the Yocto Project mailing lists, see the
585 "<ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#resources-mailinglist'>Mailing lists</ulink>" section in
586 <ulink url='http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html'> The
587 Yocto Project Reference Manual</ulink>.
588 </para>
589
590 <para>
591 Following is some guidance on which mailing list to use for what type of defect:
592 <itemizedlist>
593 <listitem><para>For defects against the Yocto Project build system Poky, send
594 your patch to the
595 <ulink url='http://lists.yoctoproject.org/listinfo/poky'></ulink> mailing list.
596 This mailing list corresponds to issues that are not specific to the Yocto Project but
597 are part of the OE-core.
598 For example, a defect against anything in the <filename>meta</filename> layer
599 or the BitBake Manual could be sent to this mailing list.</para></listitem>
600 <listitem><para>For defects against Yocto-specific layers, tools, and Yocto Project
601 documentation use the
602 <ulink url='http://lists.yoctoproject.org/listinfo/yocto'></ulink> mailing list.
603 This mailing list corresponds to Yocto-specific areas such as
604 <filename>meta-yocto</filename>, <filename>meta-intel</filename>,
605 <filename>linux-yocto</filename>, and <filename>documentation</filename>.</para></listitem>
606 </itemizedlist>
607 </para>
608
609 <para>
572 When you send a patch, be sure to include a "signed-off-by:" 610 When you send a patch, be sure to include a "signed-off-by:"
573 line in the same style as required by the Linux kernel. 611 line in the same style as required by the Linux kernel.
574 Adding this line signifies the developer has agreed to the Developer's Certificate of Origin 1.1 612 Adding this line signifies the developer has agreed to the Developer's Certificate of Origin 1.1
@@ -611,33 +649,38 @@
611 <para> 649 <para>
612 In a collaborative environment, it is necessary to have some sort of standard 650 In a collaborative environment, it is necessary to have some sort of standard
613 or method through which you submit changes. 651 or method through which you submit changes.
614 Otherwise, things would get quite chaotic. 652 Otherwise, things could get quite chaotic.
615 </para> 653 </para>
616 654
617 <para> 655 <para>
618 When you form a commit you must follow certain standards established by the 656 When you form a commit, you must follow certain standards established by the
619 Yocto Project development team. 657 Yocto Project development team.
620 For each commit, do the following: 658 For each commit, you must provide a single-line summary of the change and you
659 almost always provide a more detailed description of what you did (i.e. the body
660 of the commit).
661 The only exceptions for not providing a detailed description would be if your
662 change is a simple, self-explanatory change that needs no description.
663 Here are the Yocto Project commit message guidelines:
621 <itemizedlist> 664 <itemizedlist>
622 <listitem><para>Provide a single-line, short summary of the change. 665 <listitem><para>Provide a single-line, short summary of the change.
623 This summary is typically viewable by source control systems. 666 This summary is typically viewable by source control systems.
624 Thus, providing something short and descriptive that gives the reader 667 Thus, providing something short and descriptive that gives the reader
625 a summary of the change is useful when viewing a list of many commits. 668 a summary of the change is useful when viewing a list of many commits.
626 </para></listitem> 669 </para></listitem>
670 <listitem><para>For the body of the commit message, provide detailed information
671 that describes what you changed, why you made the change, and the approach
672 you used.
673 Provide as much detail as you can in the body of the commit message.
674 </para></listitem>
627 <listitem><para>If the change addresses a specific bug or issue that is 675 <listitem><para>If the change addresses a specific bug or issue that is
628 associated with a bug-tracking ID, prefix the single-line commit summary 676 associated with a bug-tracking ID, prefix your detailed description
629 with the bug or issue ID. 677 with the bug or issue ID.
630 For example, the Yocto Project tracks bugs using a bug-naming convention. 678 For example, the Yocto Project tracks bugs using a bug-naming convention.
631 Any commits that address a bug must use a commit summary line in the 679 Any commits that address a bug must start with the bug ID in the description
632 following form: 680 as follows:
633 <literallayout class='monospaced'> 681 <literallayout class='monospaced'>
634 YOCTO #&lt;bug-id&gt;: &lt;Brief 40-character or less summary of the change&gt; 682 YOCTO #&lt;bug-id&gt;: &lt;Detailed description of commit&gt;
635 </literallayout></para></listitem> 683 </literallayout></para></listitem>
636 <listitem><para>For the body of the commit message, provide detailed information
637 that describes what you changed, why you made the change, and the approach
638 you used.
639 Provide as much detail as you want in the body of the commit message.
640 </para></listitem>
641 </itemizedlist> 684 </itemizedlist>
642 </para> 685 </para>
643 686
@@ -655,7 +698,7 @@
655 <listitem><para>Stage your commit (or change) by using the <filename>git add</filename> 698 <listitem><para>Stage your commit (or change) by using the <filename>git add</filename>
656 command.</para></listitem> 699 command.</para></listitem>
657 <listitem><para>Commit the change by using the <filename>git commit</filename> 700 <listitem><para>Commit the change by using the <filename>git commit</filename>
658 command and push it to the upstream "contrib" repository. 701 command and push it to the "contrib" repository.
659 Be sure to provide a commit message that follows the project’s commit standards 702 Be sure to provide a commit message that follows the project’s commit standards
660 as described earlier.</para></listitem> 703 as described earlier.</para></listitem>
661 <listitem><para>Notify the maintainer that you have pushed a change by making a pull 704 <listitem><para>Notify the maintainer that you have pushed a change by making a pull
@@ -696,12 +739,13 @@
696 <listitem><para>Commit the change by using the 739 <listitem><para>Commit the change by using the
697 <filename>git commit --signoff</filename> command. 740 <filename>git commit --signoff</filename> command.
698 Using the <filename>--signoff</filename> option identifies you as the person 741 Using the <filename>--signoff</filename> option identifies you as the person
699 making the change.</para> 742 making the change and also satisfies the Developer's Certificate of
743 Origin (DCO) shown earlier.</para>
700 <para>When you form a commit you must follow certain standards established by the 744 <para>When you form a commit you must follow certain standards established by the
701 Yocto Project development team. 745 Yocto Project development team.
702 See the 746 See the earlier section
703 <link linkend='how-to-submit-a-change'>How to Submit a Change</link> section 747 "<link linkend='how-to-submit-a-change'>How to Submit a Change</link>"
704 earlier for Yocto Project commit message standards.</para></listitem> 748 for Yocto Project commit message standards.</para></listitem>
705 <listitem><para>Format the commit into an email messsage. 749 <listitem><para>Format the commit into an email messsage.
706 To format commits, use the <filename>git format-patch</filename> command. 750 To format commits, use the <filename>git format-patch</filename> command.
707 When you provide the command, you must include a revision list or a number of patches 751 When you provide the command, you must include a revision list or a number of patches
@@ -714,9 +758,11 @@
714 </literallayout></para> 758 </literallayout></para>
715 <para>After the command is run, the current directory contains a 759 <para>After the command is run, the current directory contains a
716 numbered <filename>.patch</filename> file for the commit.</para> 760 numbered <filename>.patch</filename> file for the commit.</para>
717 <para>If you provide several commits as part of the command, it produces a numbered 761 <para>If you provide several commits as part of the command,
762 the <filename>git format-patch</filename> command produces a numbered
718 series of files in the current directory – one for each commit. 763 series of files in the current directory – one for each commit.
719 For information on the <filename>git format-patch</filename> command use the 764 For information on the <filename>git format-patch</filename> command,
765 see <filename>GIT_FORMAT_PATCH(1)</filename> displayed using the
720 <filename>man git-format-patch</filename> command.</para></listitem> 766 <filename>man git-format-patch</filename> command.</para></listitem>
721 <listitem><para>Import the files into your mail client by using the 767 <listitem><para>Import the files into your mail client by using the
722 <filename>git send-email</filename> command. 768 <filename>git send-email</filename> command.
@@ -728,7 +774,10 @@
728 <filename>msmtp</filename>, <filename>sendmail</filename>, or through a direct 774 <filename>msmtp</filename>, <filename>sendmail</filename>, or through a direct
729 <filename>smtp</filename> configuration in your Git <filename>config</filename> 775 <filename>smtp</filename> configuration in your Git <filename>config</filename>
730 file.</para> 776 file.</para>
731 <para>The <filename>git send-email</filename> command has several options that let you 777 <para>The <filename>git send-email</filename> command is the preferred method
778 for sending your patches since there is no risk of compromising whitespace
779 in the body of the message, which can occur when you use your own mail client.
780 The command also has several options that let you
732 specify recipients and perform further editing of the email message. 781 specify recipients and perform further editing of the email message.
733 For information on how to use the <filename>git send-email</filename> command, 782 For information on how to use the <filename>git send-email</filename> command,
734 use the <filename>man git-send-email</filename> command.</para></listitem> 783 use the <filename>man git-send-email</filename> command.</para></listitem>