1c1ab244fSSascha Wildner.\" Copyright (c) 2003,2004 The DragonFly Project. All rights reserved. 2c1ab244fSSascha Wildner.\" 3c1ab244fSSascha Wildner.\" This code is derived from software contributed to The DragonFly Project 4c1ab244fSSascha Wildner.\" by Matthew Dillon <dillon@backplane.com> 5c1ab244fSSascha Wildner.\" 6c1ab244fSSascha Wildner.\" Redistribution and use in source and binary forms, with or without 7c1ab244fSSascha Wildner.\" modification, are permitted provided that the following conditions 8c1ab244fSSascha Wildner.\" are met: 9c1ab244fSSascha Wildner.\" 10c1ab244fSSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 11c1ab244fSSascha Wildner.\" notice, this list of conditions and the following disclaimer. 12c1ab244fSSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 13c1ab244fSSascha Wildner.\" notice, this list of conditions and the following disclaimer in 14c1ab244fSSascha Wildner.\" the documentation and/or other materials provided with the 15c1ab244fSSascha Wildner.\" distribution. 16c1ab244fSSascha Wildner.\" 3. Neither the name of The DragonFly Project nor the names of its 17c1ab244fSSascha Wildner.\" contributors may be used to endorse or promote products derived 18c1ab244fSSascha Wildner.\" from this software without specific, prior written permission. 19c1ab244fSSascha Wildner.\" 20c1ab244fSSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21c1ab244fSSascha Wildner.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22c1ab244fSSascha Wildner.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23c1ab244fSSascha Wildner.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24c1ab244fSSascha Wildner.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25c1ab244fSSascha Wildner.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 26c1ab244fSSascha Wildner.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27c1ab244fSSascha Wildner.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28c1ab244fSSascha Wildner.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29c1ab244fSSascha Wildner.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 30c1ab244fSSascha Wildner.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31c1ab244fSSascha Wildner.\" SUCH DAMAGE. 32c1ab244fSSascha Wildner.\" 33*c96b78ddSSascha Wildner.\" $DragonFly: src/share/man/man7/committer.7,v 1.4 2007/01/02 23:42:20 swildner Exp $ 34c1ab244fSSascha Wildner.\" 355f72456dSSascha Wildner.Dd January 1, 2007 36c1ab244fSSascha Wildner.Dt COMMITTER 7 37c1ab244fSSascha Wildner.Os 38c1ab244fSSascha Wildner.Sh NAME 39c1ab244fSSascha Wildner.Nm committer 40c1ab244fSSascha Wildner.Nd Rules for 41c1ab244fSSascha Wildner.Dx 42c1ab244fSSascha Wildnercommitters 43c1ab244fSSascha Wildner.Sh CVS REPOSITORY ON YOUR LOCAL MACHINE 445f72456dSSascha WildnerUse 455f72456dSSascha Wildner.Xr cvsup 1 465f72456dSSascha Wildnerto mirror the 475f72456dSSascha Wildner.Dx 485f72456dSSascha WildnerCVS repository itself onto your local box 49c1ab244fSSascha Wildner(if you haven't already). See the file 505f72456dSSascha Wildner.Pa /usr/share/examples/cvsup/DragonFly-cvs-supfile . 51c1ab244fSSascha Wildner.Pp 525f72456dSSascha WildnerYou basically want to do all CVS operations not related to commits 53c1ab244fSSascha Wildnervia your local repository, and do commit operations directly to 54c1ab244fSSascha Wildnerthe master site. 55c1ab244fSSascha Wildner.Pp 565f72456dSSascha WildnerWe strongly recommend that you set up a 575f72456dSSascha Wildner.Xr cron 8 585f72456dSSascha Wildnerjob to automatically 595f72456dSSascha Wildnercvsup at least once a day, so your local CVS repository is always 60c1ab244fSSascha Wildnerin sync. 61c1ab244fSSascha Wildner.Sh CHECKING OUT THE SOURCES 625f72456dSSascha WildnerYour 635f72456dSSascha Wildner.Pa ~/.cvsrc 645f72456dSSascha Wildnershould contain: 65c1ab244fSSascha Wildner.Bd -literal -offset indent 66c1ab244fSSascha Wildnercvs -q 67c1ab244fSSascha Wildnerdiff -u 68c1ab244fSSascha Wildnerupdate -Pd 69c1ab244fSSascha Wildnercheckout -P 70c1ab244fSSascha Wildner.Ed 715f72456dSSascha Wildner.Pp 72c1ab244fSSascha WildnerChecking out and updating a checked out source tree: 73c1ab244fSSascha Wildner.Bd -literal -offset indent 74c1ab244fSSascha Wildnercd /usr 75c1ab244fSSascha Wildnercvs -d /home/dcvs checkout src 76c1ab244fSSascha Wildnercvs -d /home/dcvs update src 77c1ab244fSSascha Wildner.Ed 78c1ab244fSSascha Wildner.Pp 795f72456dSSascha WildnerWe do 805f72456dSSascha Wildner.Em NOT 815f72456dSSascha Wildnerrecommend that you use a cron job to 825f72456dSSascha Wildner.Nm cvs Cm update 835f72456dSSascha Wildneryour 845f72456dSSascha Wildnerchecked out source. Automatic updates can interfere with 85c1ab244fSSascha Wildnerany work-in-progress that you have. 86c1ab244fSSascha Wildner.Sh SSH DSA KEYS: 875f72456dSSascha WildnerThe CVS repository machine is 885f72456dSSascha Wildner.Pa crater.dragonflybsd.org , 895f72456dSSascha Wildnerand the 905f72456dSSascha Wildner.Dx 915f72456dSSascha Wildnerdeveloper machine is 925f72456dSSascha Wildner.Pa leaf.dragonflybsd.org . 935f72456dSSascha WildnerWe create 94c1ab244fSSascha Wildneran account for you on both machines and install your public SSH 95c1ab244fSSascha Wildnerkey to give you access. 96c1ab244fSSascha Wildner.Pp 975f72456dSSascha WildnerYour 985f72456dSSascha Wildner.Pa crater 995f72456dSSascha Wildneraccount is set up for CVS repository only. It can 1005f72456dSSascha Wildneronly operate as a CVS slave and cannot be logged into. That is, 1015f72456dSSascha Wildner.Pa crater.dragonflybsd.org 1025f72456dSSascha Wildneris only used as part of 1035f72456dSSascha Wildner.Nm cvs Fl d Ar ... 1045f72456dSSascha Wildneroperations. 105c1ab244fSSascha Wildner.Pp 1065f72456dSSascha WildnerYour 1075f72456dSSascha Wildner.Pa leaf 1085f72456dSSascha Wildneraccount is a general developer account. Any 1095f72456dSSascha Wildner.Dx 1105f72456dSSascha Wildnerdeveloper can have a 1115f72456dSSascha Wildner.Pa leaf 1125f72456dSSascha Wildneraccount, whether a committer or not. 113c1ab244fSSascha WildnerIt can be useful as a developer rendezvous, 1145f72456dSSascha Wildnerhowever. For example, people upload kernel cores to 1155f72456dSSascha Wildner.Pa leaf 1165f72456dSSascha Wildnerso other 1175f72456dSSascha Wildnerdevelopers can look at them. You log into your 1185f72456dSSascha Wildner.Pa leaf 1195f72456dSSascha Wildneraccount with: 120c1ab244fSSascha Wildner.Pp 121c1ab244fSSascha Wildner.Li ssh you@leaf.dragonflybsd.org 122c1ab244fSSascha Wildner.Pp 1235f72456dSSascha WildnerThe rules for account use are in 1245f72456dSSascha Wildner.Pa leaf Ap s 1255f72456dSSascha WildnerMOTD. 126c1ab244fSSascha WildnerIt is very important that you never install a password or create a SSH 1275f72456dSSascha Wildnerkey pair on 1285f72456dSSascha Wildner.Pa leaf 1295f72456dSSascha Wildnerto use to access other machines. 1305f72456dSSascha WildnerBecause non-committers can have 1315f72456dSSascha Wildner.Pa leaf 1325f72456dSSascha Wildneraccounts, since 1335f72456dSSascha Wildner.Pa leaf 1345f72456dSSascha Wildneris not considered 135c1ab244fSSascha Wildnera secure machine. 136c1ab244fSSascha Wildner.Sh TESTING COMMIT ACCESS 1375f72456dSSascha WildnerThere is a directory called 1385f72456dSSascha Wildner.Pa /usr/src/test/test . 1395f72456dSSascha WildnerTo test your commit 140c1ab244fSSascha Wildneraccess, try making a modification and commiting a file in this 141c1ab244fSSascha Wildnerdirectory. 142c1ab244fSSascha Wildner.Pp 143c1ab244fSSascha Wildner.Bd -literal -offset indent 144c1ab244fSSascha Wildnercd /usr/src/test/test 145c1ab244fSSascha Wildner(edit something) 146c1ab244fSSascha Wildnercvs -d you@crater.dragonflybsd.org commit file_you_edited 147c1ab244fSSascha Wildner.Ed 148c1ab244fSSascha Wildner.Sh COMITTING REAL WORK 149c1ab244fSSascha WildnerMake modifications as needed. For example, edit files. If adding 150c1ab244fSSascha Wildnernew files make CVS aware of them like this. Files can just be 1515f72456dSSascha Wildneradded locally, but directories have to run through 1525f72456dSSascha Wildner.Pa crater . 1535f72456dSSascha WildnerThese 154c1ab244fSSascha Wildneroperations do not actually effect the repository (except directories 155c1ab244fSSascha Wildnerbeing added are mkdir'd in the repository). Instead they are 1565f72456dSSascha Wildnerstored in the checkout source's 1575f72456dSSascha Wildner.Pa CVS/ 1585f72456dSSascha Wildnersubdirectory and then 1595f72456dSSascha Wildnersynchronized to the repository when you 1605f72456dSSascha Wildner.Nm cvs Cm commit . 161c1ab244fSSascha Wildner.Pp 162c1ab244fSSascha Wildner.Bd -literal -offset indent 163c1ab244fSSascha Wildnercvs add filename 164c1ab244fSSascha Wildnercvs -d you@crater.dragonflybsd.org:/cvs add directory 165c1ab244fSSascha Wildner.Ed 166c1ab244fSSascha Wildner.Pp 167c1ab244fSSascha WildnerTo commit to the repository, use: 168c1ab244fSSascha Wildner.Bd -literal -offset indent 169c1ab244fSSascha Wildnercvs -d you@crater.dragonflybsd.org:/cvs commit files_or_directories 170c1ab244fSSascha Wildner.Ed 171c1ab244fSSascha Wildner.Pp 1725f72456dSSascha WildnerDo not set 1735f72456dSSascha Wildner.Ev CVSROOT 1745f72456dSSascha Wildnerto 1755f72456dSSascha Wildner.Pa you@crater.dragonflybsd.org:/cvs . 1765f72456dSSascha WildnerThe reason is that you want the default 1775f72456dSSascha Wildner.Ev CVSROOT 1785f72456dSSascha Wildnerin your checked out 1795f72456dSSascha Wildnersources to point at your local CVS repository, not at 1805f72456dSSascha Wildner.Pa crater . 181c1ab244fSSascha WildnerThis reduces instances where accidental commits or repository 1825f72456dSSascha Wildneroperations are made on 1835f72456dSSascha Wildner.Pa crater . 184c1ab244fSSascha Wildner.Pp 1855f72456dSSascha WildnerIt is best to avoid 1865f72456dSSascha Wildner.Nm cvs Cm update Ap ing 1875f72456dSSascha Wildnerdirectly from the repository. 1885f72456dSSascha Wildnere.g. try to avoid doing 1895f72456dSSascha Wildner.Nm cvs Fl d Ar ... Cm update 1905f72456dSSascha Wildnerdirectly from 1915f72456dSSascha Wildner.Pa crater . 1925f72456dSSascha WildnerInstead, use 1935f72456dSSascha Wildner.Xr cvsup 1 1945f72456dSSascha Wildnerto resync your local copy of the repository 1955f72456dSSascha Wildnerand use 1965f72456dSSascha Wildner.Nm cvs Cm update 1975f72456dSSascha Wildneror 1985f72456dSSascha Wildner.Nm cvs Fl d Ar /home/dcvs Cm update 1995f72456dSSascha Wildnerto update from 200c1ab244fSSascha Wildneryour local copy of the repository. 201c1ab244fSSascha Wildner.Pp 2025f72456dSSascha WildnerThe idea here is to try to avoid having CVS set its 2035f72456dSSascha Wildner.Pa CVS/Root 2045f72456dSSascha Wildnerfile in any given checked out CVS directory to point at 2055f72456dSSascha Wildner.Pa crater . 2065f72456dSSascha WildnerYou really want it to just point at your local copy of the CVS 207c1ab244fSSascha Wildnerrepository. 208016b57dfSSascha Wildner.Pp 2095f72456dSSascha WildnerNever do 2105f72456dSSascha Wildner.Nm cvs Cm tag 2115f72456dSSascha Wildneror 2125f72456dSSascha Wildner.Cm rtag 2135f72456dSSascha Wildneroperations. Such operations can be 214c1ab244fSSascha Wildnervery dangerous and only highly experienced CVS admins should 2155f72456dSSascha Wildnerdo them. That's basically just two or three people (Matt and Joerg 216c1ab244fSSascha Wildnerprimarily). 217016b57dfSSascha Wildner.Pp 2185f72456dSSascha WildnerThe best way to resynchronize your local CVS repository after 219c1ab244fSSascha Wildnermaking a commit is to cvsup again. 220c1ab244fSSascha Wildner.Sh DISCUSSING COMMITTABLE WORK BEFORE HAND 221c1ab244fSSascha WildnerDiscussion prior to commit usually occurs on the kernel@, submit@, or bugs@ 2225f72456dSSascha Wildnermailing lists. It depends on the work involved. Simple and obvious work, 223c1ab244fSSascha Wildnersuch as documentation edits or additions, don't really need a head's up. 224c1ab244fSSascha Wildner.Pp 2255f72456dSSascha WildnerSimple and obvious bug fixes don't need a head's up, other than to 226c1ab244fSSascha Wildnersay that you will (or just have) committed the fix, so you don't 227c1ab244fSSascha Wildnerrace other committers trying to do the same thing. Usually the 228c1ab244fSSascha Wildnerdeveloper most active in a discussion about a bug commits the 229c1ab244fSSascha Wildnerfix, but it isn't considered a big deal. 230c1ab244fSSascha Wildner.Pp 231c1ab244fSSascha WildnerMore complex issues are usually discussed on the lists first. 232c1ab244fSSascha WildnerNon-trivial but straight forward bug fixes usually go through 2335f72456dSSascha Wildnera testing period, where you say something like: 2345f72456dSSascha Wildner.Do 2355f72456dSSascha WildnerHere is a patch 236c1ab244fSSascha Wildnerto driver BLAH that fixes A, B, and C, please test it. If there 2375f72456dSSascha Wildnerare no objections I will commit it next Tuesday. 2385f72456dSSascha Wildner.Dc 2395f72456dSSascha Wildner(usually a week, 240c1ab244fSSascha Wildneror more depending on the complexity of the patch). 241c1ab244fSSascha Wildner.Pp 242c1ab244fSSascha WildnerNew drivers or utilities are usually discussed. Committers will 2435f72456dSSascha Wildneroften commit new work 2445f72456dSSascha Wildner.Em without 2455f72456dSSascha Wildnerhooking it into the buildworld or 246c1ab244fSSascha Wildnerbuildkernel infrastructure in order to be able to continue 247c1ab244fSSascha Wildnerdevelopment on it in piecemeal without having to worry about it 248c1ab244fSSascha Wildnerbreaking buildworld or buildkernel, and then they hook it in as a 249c1ab244fSSascha Wildnerlast step after they've stabilized it. Examples of this include 250c1ab244fSSascha Wildnernew versions of GCC, updates to vendor packages such as bind, 251c1ab244fSSascha Wildnersendmail, etc. 252c1ab244fSSascha Wildner.Sh DEVELOPER LOCKS 253c1ab244fSSascha WildnerAreas within the CVS repository are never explicitly locked. 254c1ab244fSSascha WildnerOften situations will arise where one developer commits work and 255c1ab244fSSascha Wildneranother developer finds an issue with it that needs to be corrected. 256c1ab244fSSascha Wildner.Pp 2575f72456dSSascha WildnerAll committed work becomes community property. No developer has a 2585f72456dSSascha Wildner.Sq lock 259016b57dfSSascha Wildneron any part of the source tree. However, if a developer is 260c1ab244fSSascha Wildneractively working on a portion of the source tree and you find a bug 261c1ab244fSSascha Wildneror other issue, courtesy dictates that you post to kernel@ and/or 262c1ab244fSSascha Wildneremail the developer. 263c1ab244fSSascha Wildner.Pp 264c1ab244fSSascha WildnerThis means that, generally, if you do not see a commit to an area 265c1ab244fSSascha Wildnerof the source tree in the last few weeks, it isn't considered active and 266c1ab244fSSascha Wildneryou don't really need to confer with the developer that made the 267c1ab244fSSascha Wildnercommit, though you should still post to the kernel@ mailing list 268c1ab244fSSascha Wildnerand, of course, confer with developers when their expertise is 269c1ab244fSSascha Wildnerneeded. 270c1ab244fSSascha Wildner.Pp 271c1ab244fSSascha WildnerOne exception to this rule is documentation. If any developer commits 272c1ab244fSSascha Wildnernew work, the documentation guys have free reign to go in and 2735f72456dSSascha Wildnercorrect 2745f72456dSSascha Wildner.Xr mdoc 7 2755f72456dSSascha Wildnererrors. This is really a convenience as most developers 2765f72456dSSascha Wildnerare not 2775f72456dSSascha Wildner.Xr mdoc 7 2785f72456dSSascha Wildnergurus and it's a waste of time for the doc guys to post 279c1ab244fSSascha Wildnerto kernel@ for all the little corrections they make. 280c1ab244fSSascha Wildner.Sh CONFLICTS 281*c96b78ddSSascha WildnerOn the occasion that a major code conflict occurs, for example if two 282c1ab244fSSascha Wildnerpeople are doing major work in the same area of the source tree and forgot 283c1ab244fSSascha Wildnerto collaborate with each other, the project leader will be responsible for 284c1ab244fSSascha Wildnerresolving the conflict. Again, the repository is considered community 285c1ab244fSSascha Wildnerproperty and it must be acceptable for any developer to be able to work on 286c1ab244fSSascha Wildnerany area of the tree that he or she has an interest in. 287c1ab244fSSascha Wildner.Sh MAJOR ARCHITECTURAL CHANGES 2885f72456dSSascha WildnerThis is generally Matt Dillon's area of expertise. All major architectural 2895f72456dSSascha Wildnerchanges must be discussed on the kernel@ mailing list and he retains 290c1ab244fSSascha Wildnerveto power. 291c1ab244fSSascha Wildner.Pp 292c1ab244fSSascha WildnerThis isn't usually an issue with any work. At best if something 2935f72456dSSascha Wildnerdoesn't look right architecturally he'll chip in with adjustments to 294c1ab244fSSascha Wildnermake it fit in. Nothing ever really gets vetoed. 2955f72456dSSascha Wildner.Sh SEE ALSO 2965f72456dSSascha Wildner.Xr cvs 1 , 2975f72456dSSascha Wildner.Xr cvsup 1 , 2985f72456dSSascha Wildner.Xr development 7 299