xref: /dflybsd-src/share/man/man7/committer.7 (revision 163ffa070f9425fb07499ee32873f41f99aac545)
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*163ffa07SSascha Wildner.\" $DragonFly: src/share/man/man7/committer.7,v 1.9 2007/12/23 15:31:29 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
40ac5c99e1SSascha Wildner.Nd rules for DragonFly committers
41c1ab244fSSascha Wildner.Sh CVS REPOSITORY ON YOUR LOCAL MACHINE
425f72456dSSascha WildnerUse
435f72456dSSascha Wildner.Xr cvsup 1
445f72456dSSascha Wildnerto mirror the
455f72456dSSascha Wildner.Dx
465f72456dSSascha WildnerCVS repository itself onto your local box
47c1ab244fSSascha Wildner(if you haven't already).  See the file
485f72456dSSascha Wildner.Pa /usr/share/examples/cvsup/DragonFly-cvs-supfile .
49c1ab244fSSascha Wildner.Pp
505f72456dSSascha WildnerYou basically want to do all CVS operations not related to commits
51c1ab244fSSascha Wildnervia your local repository, and do commit operations directly to
52c1ab244fSSascha Wildnerthe master site.
53c1ab244fSSascha Wildner.Pp
545f72456dSSascha WildnerWe strongly recommend that you set up a
555f72456dSSascha Wildner.Xr cron 8
565f72456dSSascha Wildnerjob to automatically
575f72456dSSascha Wildnercvsup at least once a day, so your local CVS repository is always
58c1ab244fSSascha Wildnerin sync.
59c1ab244fSSascha Wildner.Sh CHECKING OUT THE SOURCES
605f72456dSSascha WildnerYour
615f72456dSSascha Wildner.Pa ~/.cvsrc
625f72456dSSascha Wildnershould contain:
63c1ab244fSSascha Wildner.Bd -literal -offset indent
64c1ab244fSSascha Wildnercvs -q
65c1ab244fSSascha Wildnerdiff -u
66c1ab244fSSascha Wildnerupdate -Pd
67c1ab244fSSascha Wildnercheckout -P
68c1ab244fSSascha Wildner.Ed
695f72456dSSascha Wildner.Pp
70c1ab244fSSascha WildnerChecking out and updating a checked out source tree:
71c1ab244fSSascha Wildner.Bd -literal -offset indent
72c1ab244fSSascha Wildnercd /usr
73c1ab244fSSascha Wildnercvs -d /home/dcvs checkout src
74c1ab244fSSascha Wildnercvs -d /home/dcvs update src
75c1ab244fSSascha Wildner.Ed
76c1ab244fSSascha Wildner.Pp
775f72456dSSascha WildnerWe do
785f72456dSSascha Wildner.Em NOT
795f72456dSSascha Wildnerrecommend that you use a cron job to
805f72456dSSascha Wildner.Nm cvs Cm update
815f72456dSSascha Wildneryour
825f72456dSSascha Wildnerchecked out source.  Automatic updates can interfere with
83c1ab244fSSascha Wildnerany work-in-progress that you have.
84c1ab244fSSascha Wildner.Sh SSH DSA KEYS:
855f72456dSSascha WildnerThe CVS repository machine is
865f72456dSSascha Wildner.Pa crater.dragonflybsd.org ,
875f72456dSSascha Wildnerand the
885f72456dSSascha Wildner.Dx
895f72456dSSascha Wildnerdeveloper machine is
905f72456dSSascha Wildner.Pa leaf.dragonflybsd.org .
915f72456dSSascha WildnerWe create
92c1ab244fSSascha Wildneran account for you on both machines and install your public SSH
93c1ab244fSSascha Wildnerkey to give you access.
94c1ab244fSSascha Wildner.Pp
955f72456dSSascha WildnerYour
965f72456dSSascha Wildner.Pa crater
975f72456dSSascha Wildneraccount is set up for CVS repository only. It can
985f72456dSSascha Wildneronly operate as a CVS slave and cannot be logged into.  That is,
995f72456dSSascha Wildner.Pa crater.dragonflybsd.org
1005f72456dSSascha Wildneris only used as part of
1015f72456dSSascha Wildner.Nm cvs Fl d Ar ...
1025f72456dSSascha Wildneroperations.
103c1ab244fSSascha Wildner.Pp
1045f72456dSSascha WildnerYour
1055f72456dSSascha Wildner.Pa leaf
1065f72456dSSascha Wildneraccount is a general developer account.  Any
1075f72456dSSascha Wildner.Dx
1085f72456dSSascha Wildnerdeveloper can have a
1095f72456dSSascha Wildner.Pa leaf
1105f72456dSSascha Wildneraccount, whether a committer or not.
111c1ab244fSSascha WildnerIt can be useful as a developer rendezvous,
1125f72456dSSascha Wildnerhowever.  For example, people upload kernel cores to
1135f72456dSSascha Wildner.Pa leaf
1145f72456dSSascha Wildnerso other
1155f72456dSSascha Wildnerdevelopers can look at them.  You log into your
1165f72456dSSascha Wildner.Pa leaf
1175f72456dSSascha Wildneraccount with:
118c1ab244fSSascha Wildner.Pp
119c1ab244fSSascha Wildner.Li ssh you@leaf.dragonflybsd.org
120c1ab244fSSascha Wildner.Pp
1215f72456dSSascha WildnerThe rules for account use are in
1225f72456dSSascha Wildner.Pa leaf Ap s
1235f72456dSSascha WildnerMOTD.
124c1ab244fSSascha WildnerIt is very important that you never install a password or create a SSH
1255f72456dSSascha Wildnerkey pair on
1265f72456dSSascha Wildner.Pa leaf
1275f72456dSSascha Wildnerto use to access other machines.
1285f72456dSSascha WildnerBecause non-committers can have
1295f72456dSSascha Wildner.Pa leaf
1305f72456dSSascha Wildneraccounts, since
1315f72456dSSascha Wildner.Pa leaf
1325f72456dSSascha Wildneris not considered
133c1ab244fSSascha Wildnera secure machine.
134c1ab244fSSascha Wildner.Sh TESTING COMMIT ACCESS
1355f72456dSSascha WildnerThere is a directory called
1365f72456dSSascha Wildner.Pa /usr/src/test/test .
1375f72456dSSascha WildnerTo test your commit
1383221afbeSHasso Tepperaccess, try making a modification and committing a file in this
139c1ab244fSSascha Wildnerdirectory.
140c1ab244fSSascha Wildner.Pp
141c1ab244fSSascha Wildner.Bd -literal -offset indent
142c1ab244fSSascha Wildnercd /usr/src/test/test
143c1ab244fSSascha Wildner(edit something)
144ec772f0cSSascha Wildnercvs -d you@crater.dragonflybsd.org:/cvs commit file_you_edited
145c1ab244fSSascha Wildner.Ed
146*163ffa07SSascha Wildner.Sh COMMITTING REAL WORK
147c1ab244fSSascha WildnerMake modifications as needed.  For example, edit files.  If adding
148c1ab244fSSascha Wildnernew files make CVS aware of them like this.  Files can just be
1495f72456dSSascha Wildneradded locally, but directories have to run through
1505f72456dSSascha Wildner.Pa crater .
1515f72456dSSascha WildnerThese
15243664772SSascha Wildneroperations do not actually affect the repository (except directories
153c1ab244fSSascha Wildnerbeing added are mkdir'd in the repository).  Instead they are
1545f72456dSSascha Wildnerstored in the checkout source's
1555f72456dSSascha Wildner.Pa CVS/
1565f72456dSSascha Wildnersubdirectory and then
1575f72456dSSascha Wildnersynchronized to the repository when you
1585f72456dSSascha Wildner.Nm cvs Cm commit .
159c1ab244fSSascha Wildner.Pp
160c1ab244fSSascha Wildner.Bd -literal -offset indent
161c1ab244fSSascha Wildnercvs add filename
162c1ab244fSSascha Wildnercvs -d you@crater.dragonflybsd.org:/cvs add directory
163c1ab244fSSascha Wildner.Ed
164c1ab244fSSascha Wildner.Pp
165c1ab244fSSascha WildnerTo commit to the repository, use:
166c1ab244fSSascha Wildner.Bd -literal -offset indent
167c1ab244fSSascha Wildnercvs -d you@crater.dragonflybsd.org:/cvs commit files_or_directories
168c1ab244fSSascha Wildner.Ed
169c1ab244fSSascha Wildner.Pp
1705f72456dSSascha WildnerDo not set
1715f72456dSSascha Wildner.Ev CVSROOT
1725f72456dSSascha Wildnerto
1735f72456dSSascha Wildner.Pa you@crater.dragonflybsd.org:/cvs .
1745f72456dSSascha WildnerThe reason is that you want the default
1755f72456dSSascha Wildner.Ev CVSROOT
1765f72456dSSascha Wildnerin your checked out
1775f72456dSSascha Wildnersources to point at your local CVS repository, not at
1785f72456dSSascha Wildner.Pa crater .
179c1ab244fSSascha WildnerThis reduces instances where accidental commits or repository
1805f72456dSSascha Wildneroperations are made on
1815f72456dSSascha Wildner.Pa crater .
182c1ab244fSSascha Wildner.Pp
1835f72456dSSascha WildnerIt is best to avoid
1845f72456dSSascha Wildner.Nm cvs Cm update Ap ing
1855f72456dSSascha Wildnerdirectly from the repository.
1865f72456dSSascha Wildnere.g. try to avoid doing
1875f72456dSSascha Wildner.Nm cvs Fl d Ar ... Cm update
1885f72456dSSascha Wildnerdirectly from
1895f72456dSSascha Wildner.Pa crater .
1905f72456dSSascha WildnerInstead, use
1915f72456dSSascha Wildner.Xr cvsup 1
1925f72456dSSascha Wildnerto resync your local copy of the repository
1935f72456dSSascha Wildnerand use
1945f72456dSSascha Wildner.Nm cvs Cm update
1955f72456dSSascha Wildneror
1965f72456dSSascha Wildner.Nm cvs Fl d Ar /home/dcvs Cm update
1975f72456dSSascha Wildnerto update from
198c1ab244fSSascha Wildneryour local copy of the repository.
199c1ab244fSSascha Wildner.Pp
2005f72456dSSascha WildnerThe idea here is to try to avoid having CVS set its
2015f72456dSSascha Wildner.Pa CVS/Root
2025f72456dSSascha Wildnerfile in any given checked out CVS directory to point at
2035f72456dSSascha Wildner.Pa crater .
2045f72456dSSascha WildnerYou really want it to just point at your local copy of the CVS
205c1ab244fSSascha Wildnerrepository.
206016b57dfSSascha Wildner.Pp
2075f72456dSSascha WildnerNever do
2085f72456dSSascha Wildner.Nm cvs Cm tag
2095f72456dSSascha Wildneror
2105f72456dSSascha Wildner.Cm rtag
2115f72456dSSascha Wildneroperations.  Such operations can be
212c1ab244fSSascha Wildnervery dangerous and only highly experienced CVS admins should
2135f72456dSSascha Wildnerdo them.  That's basically just two or three people (Matt and Joerg
214c1ab244fSSascha Wildnerprimarily).
215016b57dfSSascha Wildner.Pp
2165f72456dSSascha WildnerThe best way to resynchronize your local CVS repository after
217c1ab244fSSascha Wildnermaking a commit is to cvsup again.
218c1ab244fSSascha Wildner.Sh DISCUSSING COMMITTABLE WORK BEFORE HAND
219c1ab244fSSascha WildnerDiscussion prior to commit usually occurs on the kernel@, submit@, or bugs@
2205f72456dSSascha Wildnermailing lists.  It depends on the work involved.  Simple and obvious work,
221c1ab244fSSascha Wildnersuch as documentation edits or additions, don't really need a head's up.
222c1ab244fSSascha Wildner.Pp
2235f72456dSSascha WildnerSimple and obvious bug fixes don't need a head's up, other than to
224c1ab244fSSascha Wildnersay that you will (or just have) committed the fix, so you don't
225c1ab244fSSascha Wildnerrace other committers trying to do the same thing.  Usually the
226c1ab244fSSascha Wildnerdeveloper most active in a discussion about a bug commits the
227c1ab244fSSascha Wildnerfix, but it isn't considered a big deal.
228c1ab244fSSascha Wildner.Pp
229c1ab244fSSascha WildnerMore complex issues are usually discussed on the lists first.
230c1ab244fSSascha WildnerNon-trivial but straight forward bug fixes usually go through
2315f72456dSSascha Wildnera testing period, where you say something like:
2325f72456dSSascha Wildner.Do
2335f72456dSSascha WildnerHere is a patch
234c1ab244fSSascha Wildnerto driver BLAH that fixes A, B, and C, please test it.  If there
2355f72456dSSascha Wildnerare no objections I will commit it next Tuesday.
2365f72456dSSascha Wildner.Dc
2375f72456dSSascha Wildner(usually a week,
238c1ab244fSSascha Wildneror more depending on the complexity of the patch).
239c1ab244fSSascha Wildner.Pp
240c1ab244fSSascha WildnerNew drivers or utilities are usually discussed.  Committers will
2415f72456dSSascha Wildneroften commit new work
2425f72456dSSascha Wildner.Em without
2435f72456dSSascha Wildnerhooking it into the buildworld or
244c1ab244fSSascha Wildnerbuildkernel infrastructure in order to be able to continue
245c1ab244fSSascha Wildnerdevelopment on it in piecemeal without having to worry about it
246c1ab244fSSascha Wildnerbreaking buildworld or buildkernel, and then they hook it in as a
247c1ab244fSSascha Wildnerlast step after they've stabilized it.  Examples of this include
248c1ab244fSSascha Wildnernew versions of GCC, updates to vendor packages such as bind,
249c1ab244fSSascha Wildnersendmail, etc.
250c1ab244fSSascha Wildner.Sh DEVELOPER LOCKS
251c1ab244fSSascha WildnerAreas within the CVS repository are never explicitly locked.
252c1ab244fSSascha WildnerOften situations will arise where one developer commits work and
253c1ab244fSSascha Wildneranother developer finds an issue with it that needs to be corrected.
254c1ab244fSSascha Wildner.Pp
2555f72456dSSascha WildnerAll committed work becomes community property.  No developer has a
2565f72456dSSascha Wildner.Sq lock
257016b57dfSSascha Wildneron any part of the source tree.  However, if a developer is
258c1ab244fSSascha Wildneractively working on a portion of the source tree and you find a bug
259c1ab244fSSascha Wildneror other issue, courtesy dictates that you post to kernel@ and/or
260c1ab244fSSascha Wildneremail the developer.
261c1ab244fSSascha Wildner.Pp
262c1ab244fSSascha WildnerThis means that, generally, if you do not see a commit to an area
263c1ab244fSSascha Wildnerof the source tree in the last few weeks, it isn't considered active and
264c1ab244fSSascha Wildneryou don't really need to confer with the developer that made the
265c1ab244fSSascha Wildnercommit, though you should still post to the kernel@ mailing list
266c1ab244fSSascha Wildnerand, of course, confer with developers when their expertise is
267c1ab244fSSascha Wildnerneeded.
268c1ab244fSSascha Wildner.Pp
269c1ab244fSSascha WildnerOne exception to this rule is documentation.  If any developer commits
270c1ab244fSSascha Wildnernew work, the documentation guys have free reign to go in and
2715f72456dSSascha Wildnercorrect
2725f72456dSSascha Wildner.Xr mdoc 7
2735f72456dSSascha Wildnererrors.  This is really a convenience as most developers
2745f72456dSSascha Wildnerare not
2755f72456dSSascha Wildner.Xr mdoc 7
2765f72456dSSascha Wildnergurus and it's a waste of time for the doc guys to post
277c1ab244fSSascha Wildnerto kernel@ for all the little corrections they make.
278c1ab244fSSascha Wildner.Sh CONFLICTS
279c96b78ddSSascha WildnerOn the occasion that a major code conflict occurs, for example if two
280c1ab244fSSascha Wildnerpeople are doing major work in the same area of the source tree and forgot
281c1ab244fSSascha Wildnerto collaborate with each other, the project leader will be responsible for
282c1ab244fSSascha Wildnerresolving the conflict.  Again, the repository is considered community
283c1ab244fSSascha Wildnerproperty and it must be acceptable for any developer to be able to work on
284c1ab244fSSascha Wildnerany area of the tree that he or she has an interest in.
285c1ab244fSSascha Wildner.Sh MAJOR ARCHITECTURAL CHANGES
2865f72456dSSascha WildnerThis is generally Matt Dillon's area of expertise.  All major architectural
2875f72456dSSascha Wildnerchanges must be discussed on the kernel@ mailing list and he retains
288c1ab244fSSascha Wildnerveto power.
289c1ab244fSSascha Wildner.Pp
290c1ab244fSSascha WildnerThis isn't usually an issue with any work.  At best if something
2915f72456dSSascha Wildnerdoesn't look right architecturally he'll chip in with adjustments to
292c1ab244fSSascha Wildnermake it fit in.  Nothing ever really gets vetoed.
2935f72456dSSascha Wildner.Sh SEE ALSO
2945f72456dSSascha Wildner.Xr cvs 1 ,
2955f72456dSSascha Wildner.Xr cvsup 1 ,
2965f72456dSSascha Wildner.Xr development 7
297