| Commit | Line | Data |
|---|---|---|
| 984263bc | 1 | .\" |
| a63d9f6f SW |
2 | .\" Copyright (c) 2008 |
| 3 | .\" The DragonFly Project. All rights reserved. | |
| 4 | .\" | |
| 5 | .\" Redistribution and use in source and binary forms, with or without | |
| 6 | .\" modification, are permitted provided that the following conditions | |
| 7 | .\" are met: | |
| 8 | .\" | |
| 9 | .\" 1. Redistributions of source code must retain the above copyright | |
| 10 | .\" notice, this list of conditions and the following disclaimer. | |
| 11 | .\" 2. Redistributions in binary form must reproduce the above copyright | |
| 12 | .\" notice, this list of conditions and the following disclaimer in | |
| 13 | .\" the documentation and/or other materials provided with the | |
| 14 | .\" distribution. | |
| 15 | .\" 3. Neither the name of The DragonFly Project nor the names of its | |
| 16 | .\" contributors may be used to endorse or promote products derived | |
| 17 | .\" from this software without specific, prior written permission. | |
| 18 | .\" | |
| 19 | .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| 20 | .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| 21 | .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | |
| 22 | .\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | |
| 23 | .\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | |
| 24 | .\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, | |
| 25 | .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
| 26 | .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | |
| 27 | .\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
| 28 | .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |
| 29 | .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 30 | .\" SUCH DAMAGE. | |
| 31 | .\" | |
| 71bdc883 | 32 | .\" $DragonFly: src/share/man/man7/development.7,v 1.12 2008/07/27 22:23:42 thomas Exp $ |
| 984263bc | 33 | .\" |
| 2fb40d7c | 34 | .Dd December 5, 2009 |
| 984263bc MD |
35 | .Dt DEVELOPMENT 7 |
| 36 | .Os | |
| 37 | .Sh NAME | |
| 38 | .Nm development | |
| a63d9f6f | 39 | .Nd quick starter for development with the DragonFly codebase |
| 984263bc | 40 | .Sh DESCRIPTION |
| 8c1a5cc4 | 41 | .Dx |
| a63d9f6f SW |
42 | uses the |
| 43 | .Xr git 1 | |
| 44 | distributed revision control system. | |
| 45 | If it is not already on the system, it needs to be installed via | |
| 46 | .Xr pkgsrc 7 | |
| 47 | .Pa ( /usr/pkgsrc/devel/scmgit ) . | |
| 984263bc | 48 | .Pp |
| a63d9f6f SW |
49 | The |
| 50 | .Sx EXAMPLES | |
| 51 | section gives initial information to get going with development on | |
| 52 | .Dx . | |
| 53 | Please refer to the | |
| 54 | .Xr git 1 | |
| 55 | manual pages and other related documents for further information on git's | |
| 56 | capabilities and how to use them. | |
| e827a42c SW |
57 | The |
| 58 | .Sx SEE ALSO | |
| 59 | section below has some links. | |
| a63d9f6f SW |
60 | .Pp |
| 61 | For information on how to build the | |
| 8c1a5cc4 | 62 | .Dx |
| a63d9f6f SW |
63 | system from source code, see |
| 64 | .Xr build 7 . | |
| 61da8008 | 65 | For information on how to build the LiveCD, LiveDVD or thumb drive image, see |
| a63d9f6f | 66 | .Xr release 7 . |
| 2fb40d7c SW |
67 | .Pp |
| 68 | For a specification of | |
| 69 | .Dx Ap s | |
| 70 | preferred source code style, refer to | |
| 71 | .Xr style 9 . | |
| 72 | An | |
| 73 | .Xr emacs 1 | |
| 74 | function to switch C-mode to this style (more or less) can be found in | |
| 75 | .Pa /usr/share/misc/dragonfly.el . | |
| a63d9f6f SW |
76 | .Sh EXAMPLES |
| 77 | A fresh copy of the repository can be cloned anywhere. | |
| 78 | Note that the directory to clone into | |
| 79 | .Pa ( /usr/src | |
| 80 | in the following example) must not exist, so all previous work in this | |
| 81 | directory has to be saved and the directory be removed prior to cloning. | |
| 61da8008 SW |
82 | Also note that while the main repository is on |
| 83 | .Pa crater , | |
| 84 | it is recommended that one of the | |
| 85 | .Dx | |
| 86 | mirrors be used instead. | |
| a63d9f6f | 87 | .Pp |
| e2dbfa0b TN |
88 | Simple setup and updating of local repository is done using |
| 89 | .Pa /usr/Makefile : | |
| e2dbfa0b TN |
90 | .Bd -literal -offset 4n |
| 91 | cd /usr | |
| 92 | make help # get help | |
| 93 | make git-clone # initial setup | |
| 94 | make git-update | |
| 95 | .Ed | |
| 96 | .Pp | |
| 97 | Somewhat finer control can be achieved using | |
| 98 | .Xr git 1 | |
| 61da8008 | 99 | directly. |
| a63d9f6f SW |
100 | To clone the repository and check out the master branch (this will take |
| 101 | some time): | |
| 984263bc MD |
102 | .Bd -literal -offset 4n |
| 103 | cd /usr | |
| a63d9f6f SW |
104 | git clone -o crater git://crater.dragonflybsd.org/dragonfly.git src |
| 105 | cd src | |
| 984263bc MD |
106 | .Ed |
| 107 | .Pp | |
| a63d9f6f SW |
108 | The repository can be held up to date by pulling frequently (to set up a |
| 109 | .Xr cron 8 | |
| 110 | job, | |
| 111 | .Xr git 1 Ap s | |
| 112 | .Fl Fl git-dir | |
| 113 | option can be used): | |
| 984263bc MD |
114 | .Bd -literal -offset 4n |
| 115 | cd /usr/src | |
| a63d9f6f | 116 | git pull |
| 984263bc MD |
117 | .Ed |
| 118 | .Pp | |
| a63d9f6f SW |
119 | It is not recommended to work directly in the master branch. |
| 120 | To create and checkout a working branch: | |
| 984263bc | 121 | .Bd -literal -offset 4n |
| a63d9f6f | 122 | git checkout -b work |
| 984263bc MD |
123 | .Ed |
| 124 | .Pp | |
| a63d9f6f SW |
125 | To create and checkout a branch of the |
| 126 | .Dx 2.0 | |
| 127 | release (called | |
| 128 | .Sy rel2_0 ) : | |
| 984263bc | 129 | .Bd -literal -offset 4n |
| a63d9f6f | 130 | git checkout -b rel2_0 crater/DragonFly_RELEASE_2_0 |
| 984263bc | 131 | .Ed |
| 984263bc | 132 | .Pp |
| a63d9f6f | 133 | Branches can be deleted just as easy: |
| 984263bc | 134 | .Bd -literal -offset 4n |
| a63d9f6f | 135 | git branch -d work |
| 984263bc MD |
136 | .Ed |
| 137 | .Pp | |
| a63d9f6f | 138 | After changes have been made to a branch, they can be committed: |
| 95b3720c | 139 | .Bd -literal -offset 4n |
| a63d9f6f | 140 | git commit -a |
| 95b3720c HP |
141 | .Ed |
| 142 | .Pp | |
| a63d9f6f SW |
143 | .Xr git-commit 1 Ap s |
| 144 | .Fl m | |
| 145 | and | |
| 146 | .Fl F | |
| 147 | options can be used to specify a commit message on the command line or read | |
| 148 | it from a file, respectively. | |
| 95b3720c | 149 | .Pp |
| a63d9f6f SW |
150 | Finally, branches can be merged with the (updated) master by using |
| 151 | .Cm rebase : | |
| 984263bc | 152 | .Bd -literal -offset 4n |
| a63d9f6f SW |
153 | git checkout master |
| 154 | git pull | |
| 155 | git checkout work | |
| 156 | git rebase master | |
| 984263bc | 157 | .Ed |
| c6d6bc19 SS |
158 | .Sh VENDOR IMPORTS |
| 159 | When importing vendor sources, make sure that you don't import | |
| 160 | too many unnecessary sources. | |
| bb60e660 SW |
161 | Especially test suites that are not used by the |
| 162 | .Dx | |
| 163 | build are good candidates for being stripped away. | |
| c6d6bc19 SS |
164 | These instructions assume that you have already extracted |
| 165 | the source package into its final directory and that they are | |
| 166 | trimmed appropriately. | |
| 167 | .Pp | |
| 168 | .Em \&Do not change the vendor sources before importing them | |
| 169 | on the vendor branch! | |
| 170 | Necessary changes to the vendor sources can be applied to | |
| 171 | .Pa master | |
| 172 | after the import. | |
| 173 | .Pp | |
| 174 | For the following commands, we will import the imaginary package | |
| 175 | .Nm foo-2.3 | |
| 176 | into | |
| 177 | .Pa /usr/src/contrib/foo . | |
| 178 | If this is the first import of | |
| 179 | .Nm foo , | |
| 180 | you will have to choose the name of the vendor branch. | |
| 181 | Customarily, this will be | |
| 182 | .Pa vendor/FOO . | |
| 183 | However, if you intend to maintain multiple vendor sources for the | |
| 184 | same package | |
| 185 | .Em concurrently , | |
| 186 | you should choose a branch name which includes part of the version, | |
| 187 | i.e.\& | |
| 188 | .Pa vendor/FOO2 . | |
| 189 | .Pp | |
| 190 | As a first step, we trick git to work on the vendor branch instead of on | |
| 191 | .Pa master . | |
| 192 | Be careful, since after issuing this command all your commits will go to the | |
| 193 | vendor branch, but you will commit | |
| 194 | .Em the whole working tree | |
| 195 | and not just the vendor sources! | |
| 196 | Thus you have to specify the exact directory for | |
| 197 | .Li git commit . | |
| 198 | In order to commit, you will have to add the new sources first. | |
| 2c0b4c7e SS |
199 | .Pp |
| 200 | If the vendor branch already exists, make sure that you have a local vendor | |
| 201 | branch which is up to date. | |
| 202 | To this end, run: | |
| 203 | .Bd -literal -offset 4n | |
| 204 | git update-ref refs/heads/vendor/FOO origin/vendor/FOO | |
| 205 | .Ed | |
| 206 | .Pp | |
| 207 | The next commands perform the actual import. | |
| c6d6bc19 SS |
208 | .Bd -literal -offset 4n |
| 209 | git symbolic-ref HEAD refs/heads/vendor/FOO | |
| 210 | git add contrib/foo | |
| 211 | git commit -m "Import foo-2.3" contrib/foo | |
| 212 | .Ed | |
| 213 | .Pp | |
| 214 | With these commands we have imported the vendor sources on their own branch. | |
| 215 | In the next step, we merge the vendor branch into master. | |
| 216 | .Bd -literal -offset 4n | |
| 217 | git checkout master | |
| 218 | git merge vendor/FOO | |
| 219 | .Ed | |
| 220 | .Pp | |
| 221 | Now you are free to change the sources in contrib/foo, since you are | |
| 222 | back on the | |
| 223 | .Pa master | |
| 224 | branch. | |
| 225 | The first thing to do is to add | |
| 226 | .Pa README.DRAGONFLY | |
| 227 | and | |
| 228 | .Pa README.DELETED . | |
| 229 | The former documents how the imported sources can be obtained, including | |
| 230 | a checksum of the tarball. | |
| 1f7cd2b1 | 231 | The latter lists all files and directories that have been removed from the |
| c6d6bc19 SS |
232 | source package. |
| 233 | You should use the | |
| 234 | .Pa /usr/src/tools/tools/genreadmedeleted/genreadmedeleted | |
| 235 | shell script to generate this file. | |
| 236 | Commit the | |
| 237 | .Pa README Ns s | |
| 238 | first, then commit your local changes to the sources: | |
| 239 | .Bd -literal -offset 4n | |
| 240 | git add contrib/foo/README.D* | |
| 241 | git commit -m "foo: add our READMEs" | |
| 242 | .Ed | |
| 243 | .Pp | |
| 244 | Finally, push master and the vendor branch to crater: | |
| 245 | .Bd -literal -offset 4n | |
| 246 | git push crater master vendor/FOO | |
| 247 | .Ed | |
| 984263bc | 248 | .Sh SEE ALSO |
| a63d9f6f | 249 | .Xr git 1 Pq Pa pkgsrc/devel/scmgit , |
| 984263bc | 250 | .Xr build 7 , |
| 71bdc883 | 251 | .Xr committer 7 , |
| a63d9f6f | 252 | .Xr release 7 |
| e827a42c SW |
253 | .Rs |
| 254 | .%T "Git User's Manual" | |
| 255 | .%O "http://www.kernel.org/pub/software/scm/git/docs/user-manual.html" | |
| 256 | .Re | |
| 257 | .Rs | |
| 258 | .%T "Git Magic" | |
| 259 | .%O "http://www-cs-students.stanford.edu/~blynn/gitmagic/" | |
| 260 | .Re | |
| 984263bc MD |
261 | .Sh HISTORY |
| 262 | The | |
| 263 | .Nm | |
| 264 | manual page was originally written by | |
| 265 | .An Matthew Dillon Aq dillon@FreeBSD.org | |
| 266 | and first appeared | |
| 267 | in | |
| 268 | .Fx 5.0 , | |
| 269 | December 2002. | |
| a63d9f6f SW |
270 | It was rewritten when |
| 271 | .Dx | |
| 272 | switched to | |
| 273 | .Xr git 1 . |