mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
587 lines
14 KiB
Plaintext
587 lines
14 KiB
Plaintext
This is Bonsai. See <http://www.mozilla.org/bonsai.html>.
|
|
|
|
|
|
==========
|
|
DISCLAIMER
|
|
==========
|
|
|
|
This is not very well packaged code. It's not packaged at all. Don't
|
|
come here expecting something you plop in a directory, twiddle a few
|
|
things, and you're off and using it. Much work has to be done to get
|
|
there. We'd like to get there, but it wasn't clear when that would be,
|
|
and so we decided to let people see it first.
|
|
|
|
Don't believe for a minute that you can use this stuff without first
|
|
understanding most of the code.
|
|
|
|
Check out the INSTALL file for some guidance on getting started.
|
|
Many, many thanks to Artem Belevich <abelevic@ctron.com> for
|
|
trailblazing his way through this and writing down all the problems he
|
|
had.
|
|
|
|
|
|
============================
|
|
Configuration files you need
|
|
============================
|
|
|
|
Lots of configuration files need to be placed in the data subdir.
|
|
This is also where bonsai keeps its running state. These two things
|
|
ought to be split into different directories, but that hasn't happened
|
|
yet.
|
|
|
|
Some of these files are:
|
|
treeconfig.pl: some Perl source that defines @::TreeList, a list of trees you
|
|
want to track, and %::TreeInfo, information about each of those
|
|
trees. A sample treeconfig.pl:
|
|
|
|
@::TreeList = ('default', 'other');
|
|
|
|
%::TreeInfo = (
|
|
default => {
|
|
branch => '',
|
|
description => 'My CVS repository',
|
|
module => 'All',
|
|
repository => '/d2/cvsroot',
|
|
shortdesc => 'Mine',
|
|
},
|
|
other => {
|
|
branch => '',
|
|
description => 'Other CVS repository',
|
|
module => 'All',
|
|
repository => '/d2/otherroot',
|
|
shortdesc => 'Other',
|
|
},
|
|
|
|
|
|
);
|
|
|
|
1;
|
|
|
|
|
|
|
|
params: This file contains many operating parameters. This can be
|
|
edited using the editparams.cgi webpage; you should probably
|
|
not edit it directory.
|
|
|
|
The ./configure script will make a guess on the paramaters
|
|
that control paths for scripts to execute, and create an
|
|
initial params file for you. It looks for things on your
|
|
PATH, so if it complains, add the directories in which these
|
|
commands reside to your PATH, or override the path check, for
|
|
example:
|
|
|
|
setenv PERL /usr/local/lib/perl5
|
|
./configure
|
|
|
|
or for the Bourne shell:
|
|
|
|
PERL=/usr/local/lib/perl5 ./configure
|
|
|
|
|
|
hidelist: A list of regexps that define filenames that we don't want
|
|
to let people see via the bonsai pages. A common use is to
|
|
just have one line that says "CVSROOT".
|
|
|
|
=================================
|
|
What's What in the Bonsai sources:
|
|
=================================
|
|
|
|
This is a rough first pass at cataloging and documenting the Bonsai
|
|
sources. Many hands have been in this code over the years, and it has
|
|
accreted wildly. There is probably quite a lot of dead code in here.
|
|
|
|
THIS LIST IS PRETTY OLD AND OUT OF DATE. In particular, we don't have
|
|
any more TCL code; it's all either gone or ported to Perl.
|
|
|
|
|
|
CGI.tcl ???
|
|
|
|
Makefile: builds the "trapdoor" program. Also has a
|
|
"make install" that lets you specify where you store
|
|
perl and mysqltcl on your system.
|
|
|
|
SourceChecker.cgi scc wrote to help sanitize code. DELETE
|
|
Called by: nobody
|
|
|
|
SourceChecker.pm ???
|
|
|
|
addcheckin.tcl TCL. Add a checkin to a Bonsai hook. Determines
|
|
if the tree was open or closed at the time, shunts
|
|
checkin to proper tree.
|
|
|
|
admin.cgi TCL. Select from various administrative tasks
|
|
(which require a password.)
|
|
|
|
Called by: toplevel.cgi
|
|
|
|
Calls:
|
|
doadmin.cgi password=<text> treeid=<text>
|
|
command=[open|close]
|
|
closetimestamp=<time-text>
|
|
lastgood=<time-text>
|
|
doclear=<checkbox>
|
|
|
|
doadmin.cgi password=<text> treeid=<text>
|
|
command=tweaktimes
|
|
lastgood=<time-text>
|
|
lastclose=<time-text>
|
|
|
|
doadmin.cgi password=<text> treeid=<text>
|
|
command=editmotd
|
|
origmotd=<text>
|
|
motd=<text>
|
|
|
|
editmessage.cgi treeid=<text>
|
|
msgname=[openmessage|closemessage|
|
|
treeopened|treeopenedsamehook|
|
|
treeclosed]
|
|
#### note: no password?
|
|
|
|
repophook.cgi password=<text> treeid=<text>
|
|
command=repophook
|
|
startfrom=<time-text>
|
|
|
|
rebuildtaginfo.cgi password=<text>
|
|
treeid=<text>
|
|
command=rebuildtaginfo
|
|
|
|
rebuildcvshistory.cgi password=<text>
|
|
treeid=<text>
|
|
command=rebuildcvs
|
|
startfrom=<time-text>
|
|
firstfile=<time-text>
|
|
subdir=<time-text>
|
|
|
|
doadmin.cgi password=<text> treeid=<text>
|
|
command=changepassword
|
|
password=<text>
|
|
newpassword=<text>
|
|
newpassword2=<text>
|
|
doglobal=<radio>
|
|
|
|
adminfuncs.tcl TCL. Collection of functions to administrate a Bonsai
|
|
hook.
|
|
|
|
adminmail.tcl TCL. Set of routines for opening and closing the
|
|
Bonsai hook based on receipt of e-mail.
|
|
|
|
bonsai.gif a bonsai tree.
|
|
|
|
branchspam.cgi failed attempt to web-afy branch spam too DELETE
|
|
Called by: nobody
|
|
Calls: branchspammer.cgi
|
|
|
|
branchspammer.cgi more garbage
|
|
Called by: branchspam.cgi
|
|
Calls: nobody
|
|
|
|
changebar.tcl ???
|
|
|
|
closemessage HTML, text that gets sent to all people on the hook
|
|
when the tree is closed.
|
|
|
|
configure/ ???
|
|
|
|
contacthelp.html ???
|
|
|
|
countcheckins.cgi TCL. Draws a graph of checkins for the various
|
|
Bonsai 'hooks'.
|
|
Called by: toplevel.cgi
|
|
Calls: nobody
|
|
|
|
createlegaldirs.tcl ???
|
|
|
|
cvsblame.cgi Runs through a CVS file and tells you who changed what.
|
|
Calls:
|
|
rview.cgi dir= cvsroot= rev=
|
|
cvsblame.cgi file= rev= root= mark=
|
|
cvsblame.cgi set_line= (cookie magic?)
|
|
cvsblame.cgi root= file= rev= use_html=
|
|
Called by:
|
|
cvsguess.cgi
|
|
moduleanalyse.cgi
|
|
Used to be called by:
|
|
cvslog.cgi
|
|
|
|
cvsblame.pl ???
|
|
|
|
cvsguess.cgi Given a file name, try to figure out what directory
|
|
it's in. then link to cvsblame.cgi. parameters are
|
|
the same.
|
|
|
|
Seems to take an exact file name (sans directory),
|
|
then do a redirect to cvsblame.cgi. If there are
|
|
more than one file of that name, it presents a list.
|
|
This is (I think) redundant with LXR's file name
|
|
search.
|
|
|
|
Calls:
|
|
cvsblame.cgi file= rev= mark= #
|
|
Called by: nobody
|
|
|
|
cvsindex.pl ???
|
|
|
|
cvslog.cgi Web interface to "cvs log".
|
|
Calls:
|
|
rview.cgi dir= cvsroot= rev=
|
|
cvslog.cgi file= root= rev=
|
|
sort=[revision|date|author]
|
|
author=
|
|
cvsview2.cgi
|
|
command=DIFF_FRAMESET
|
|
diff_mode=context
|
|
whitespace_mode=show
|
|
root= subdir= file=
|
|
rev1= rev2=
|
|
cvsview2.cgi
|
|
command=DIRECTORY
|
|
subdir= files= root= branch=
|
|
|
|
Used to call:
|
|
cvsblame.cgi file= rev= root=
|
|
|
|
cvsmenu.pl ???
|
|
|
|
cvsquery.cgi Displays the results of a query entered in cvsqueryform
|
|
Called by:
|
|
cvsqueryform.cgi
|
|
Calls:
|
|
cvsqueryform.cgi
|
|
cvsview2 command=DIRECTORY
|
|
subdir= files= branch= root=
|
|
cvsview2.cgi command=DIFF_FRAMESET
|
|
diff_mode=context
|
|
whitespace_mode=show
|
|
subdir= file= rev1= rev2= root=
|
|
multidiff.cgi name=allchanges cvsroot=
|
|
cvsquery.cgi sortby=
|
|
../registry/who.cgi email=
|
|
http://scopus.mcom.com/bugsplat/show_bug.cgi
|
|
|
|
cvsquery.pl ???
|
|
|
|
cvsqueryform.cgi Main screen to let you query the CVS database.
|
|
Called by:
|
|
cvsblame.cgi
|
|
cvslog.cgi
|
|
cvsquery.cgi
|
|
toplevel.cgi
|
|
Calls:
|
|
cvsregexp.html
|
|
cvsquery.cgi
|
|
module=[all|allrepositories|?]
|
|
branch=
|
|
branchtype=[match|regexp]
|
|
directory=<text>
|
|
file=<text>
|
|
who=<text>
|
|
whotype=[match|regexp]
|
|
sortby=[Date|Who|File|Change Size]
|
|
date=[hours|day|week|month|all|
|
|
explicit]
|
|
hours=
|
|
mindate=
|
|
maxdate=
|
|
cvsroot=
|
|
|
|
cvsregexp.html ???
|
|
|
|
cvsview2.cgi Lets you view CVS diffs.
|
|
Called by:
|
|
cvsblame.cgi
|
|
cvslog.cgi
|
|
cvsquery.cgi
|
|
show2.cgi
|
|
showcheckins.cgi
|
|
Calls:
|
|
rview.cgi dir= cvsroot= rev=
|
|
cvsview2.cgi subdir= command=DIFF
|
|
root= file= rev1= rev2=
|
|
cvsview2.cgi subdir= command=DIFF_LINKS
|
|
root= file= rev1= rev2=
|
|
cvsview2.cgi subdir= command=DIFF
|
|
root= file= rev1= rev2= #
|
|
cvsview2.cgi subdir= command=DIFF_FRAMESET
|
|
root= file= rev1= rev2=
|
|
cvsview2.cgi subdir= command=DIRECTORY
|
|
root= files= branch= skip=
|
|
cvsview2.cgi subdir= command=LOG
|
|
root= file= rev=
|
|
|
|
doadmin.cgi TCL. Executes admin things asked for in admin.cgi
|
|
Called by:
|
|
admin.cgi
|
|
Calls:
|
|
mailto:clienteng
|
|
|
|
doeditcheckin.cgi TCL. Edits a checkin on the hook.
|
|
Called by:
|
|
editcheckin.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
doeditmessage.cgi TCL. Edits one of the email messages that bonsai sends
|
|
people.
|
|
Called by:
|
|
editmessage.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
doeditprofile.cgi TCL. Edit peoples contact info. Left-over code from
|
|
before we started getting this info from LDAP.
|
|
Called by:
|
|
editprofile.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
doeditwhiteboard.cgi TCL. Edits the free-for-all whiteboard.
|
|
Called by:
|
|
editwhiteboard.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
dolog.pl Perl. Magic file that causes CVS to send mail to
|
|
Bonsai whenever someone makes a change. Please read
|
|
the comments towards the beginning for more clues.
|
|
|
|
dotweak.cgi TCL. Tweaks a bunch of checkins in ahook at once.
|
|
Called by:
|
|
show2.cgi
|
|
showcheckins.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
editcheckin.cgi TCL. Edits a checkin on the hook.
|
|
Called by:
|
|
show2.cgi
|
|
showcheckins.cgi
|
|
Calls:
|
|
doeditcheckin.cgi
|
|
|
|
editmessage.cgi TCL. Edits one of the email messages that bonsai sends
|
|
people.
|
|
Called by:
|
|
admin.cgi
|
|
Calls:
|
|
doeditmessage.cgi
|
|
|
|
editprofile.cgi TCL. Edit peoples contact info. Left-over code from
|
|
before we started getting this info from LDAP.
|
|
Called by:
|
|
localprofile.cgi
|
|
Calls:
|
|
doeditprofile.cgi
|
|
|
|
editwhiteboard.cgi TCL. Edits the free-for-all whiteboard.
|
|
Called by:
|
|
toplevel.cgi
|
|
Calls:
|
|
doeditwhiteboard.cgi
|
|
|
|
globals.tcl ???
|
|
|
|
handleAdminMail.tcl TCL. Mail is piped to this script and parsed.
|
|
Calls:
|
|
adminfuncs.tcl
|
|
|
|
handleCheckinMail.tcl TCL. Mail is piped to this script and parsed. It
|
|
then adds a checkin to a Bonsai hook.
|
|
|
|
header.pl ???
|
|
|
|
index.html ???
|
|
|
|
indextest.pl ???
|
|
|
|
lloydcgi.pl parses CGI args from $QUERY_STRING and leaves them
|
|
in $form{$key}; and puts cookies in %cookie_jar.
|
|
Calls: nobody
|
|
Called by: everybody
|
|
|
|
localprofile.cgi TCL. Display peoples contact info. Left-over code
|
|
from before we started getting this info from LDAP.
|
|
Called by:
|
|
nobody
|
|
Calls:
|
|
editprofile.cgi
|
|
profile.cgi
|
|
|
|
maketables.sh ???
|
|
Unused?
|
|
|
|
moduleanalyse.cgi Shows the directories in a module.
|
|
Called by:
|
|
nobody
|
|
Calls:
|
|
moduleanalyse.cgi module=[all|?] cvsroot=
|
|
rview.cgi dir= cvsroot=
|
|
cvsblame.cgi file= root=
|
|
|
|
modules.pl ???
|
|
Called by:
|
|
branchspam.cgi
|
|
cvsqueryform.cgi
|
|
moduleanalyse.cgi
|
|
|
|
multidiff.cgi Implements the "Show me ALL the Diffs" button
|
|
Called by:
|
|
cvsquery.cgi
|
|
show2.cgi
|
|
showcheckins.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
myglobrecur.tcl ???
|
|
|
|
openmessage ???
|
|
|
|
perlifyconfig.tcl ???
|
|
|
|
processqueue.pl ???
|
|
|
|
profile.cgi TCL. Stupid interface to LDAP to show all the info
|
|
about a person.
|
|
Called by:
|
|
localprofile.cgi
|
|
show2.cgi
|
|
Calls:
|
|
profile.cgi person=
|
|
|
|
rebuildcvshistory.cgi TCL. Admin script to go rebuild the bonsai database
|
|
from CVS.
|
|
Called by:
|
|
admin.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
rebuilddatabase.tcl ???
|
|
|
|
rebuildtaginfo.cgi TCL. Half-written piece of junk to try and remember
|
|
things about tags. Should probably nuke it.
|
|
Called by:
|
|
admin.cgi
|
|
|
|
repophook.cgi TCL. Rebuilds a bonsai hook from the bonsai database.
|
|
Called by:
|
|
admin.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
reposfiles.pl ???
|
|
|
|
rview.cgi Lets you browse a directory in a CVS repository.
|
|
Called by:
|
|
cvsblame.cgi
|
|
cvslog.cgi
|
|
cvsview2.cgi
|
|
moduleanalyse.cgi
|
|
Calls:
|
|
rview.cgi dir= cvsroot= rev=
|
|
rview.cgi dir= cvsroot= rev= ?=chdir
|
|
rview.cgi dir= cvsroot= rev= ?=Set Branch
|
|
&make_cgi_args ???
|
|
../registry/file.cgi cvsroot= file= dir=
|
|
|
|
show2.cgi TCL. This seems to be a variant on showcheckins.cgi?
|
|
Called by:
|
|
nobody
|
|
Calls:
|
|
dotweak.cgi
|
|
showcheckins.cgi [various funky args]
|
|
editcheckin.cgi id= [various funky args]w
|
|
profile.cgi person= [various funky args]
|
|
cvsview2.cgi subdir= files= command=DIRECTORY
|
|
branch=
|
|
http://w3/cgi/cvsview2.cgi subdir= files=
|
|
command=DIRECTORY
|
|
multidiff.cgi allchanges=
|
|
|
|
showcheckins.cgi TCL. Shows some set of checkins in a bonsai hook.
|
|
Called by:
|
|
admin.cgi
|
|
show2.cgi
|
|
toplevel.cgi
|
|
Calls:
|
|
dotweak.cgi
|
|
showcheckins.cgi [various funky args]
|
|
editcheckin.cgi id= [various funky args]w
|
|
http://phonebook/ds/dosearch/phonebook/...
|
|
cvsview2.cgi root= subdir= files=
|
|
command=DIRECTORY branch=
|
|
http://w3/cgi/cvsview2.cgi subdir= files=
|
|
command=DIRECTORY
|
|
multidiff.cgi allchanges=
|
|
|
|
status/ ???
|
|
|
|
switchtree.cgi TCL. Lets you choose a different bonsai branch.
|
|
Called by:
|
|
toplevel.cgi
|
|
Calls:
|
|
nobody
|
|
|
|
testlock.pl ???
|
|
|
|
toplevel.cgi TCL. Main interface to the bonsai hook.
|
|
Called by:
|
|
CGI.tcl
|
|
contacthelp.html
|
|
index.html
|
|
sheriff2.html
|
|
switchtree.cgi
|
|
toplevel.cgi
|
|
viewold.cgi
|
|
Calls:
|
|
editwhiteboard.cgi [...]
|
|
http://phonebook/ds/dosearch/phonebook/...
|
|
showcheckins.cgi
|
|
http://warp/tinderbox/showbuilds.cgi
|
|
switchtree.cgi [...]
|
|
news:mcom.dev.client.build.busted
|
|
http://phonebook/
|
|
viewold.cgi [...]
|
|
countcheckins.cgi [...]
|
|
admin.cgi [...]
|
|
index.html
|
|
http://warp/client/dogbert/tree.html
|
|
contacthelp.html
|
|
http://warp/client/dogbert/buildlore/index.html
|
|
|
|
trapdoor.c ???
|
|
|
|
utils.pl ???
|
|
|
|
viewold.cgi TCL. Lets you choose an old bonsai hook to view.
|
|
Called by:
|
|
toplevel.cgi
|
|
Calls:
|
|
toplevel.cgi treeid=
|
|
|
|
|
|
=================
|
|
Glossary of terms
|
|
=================
|
|
|
|
Here are some funky terms you may find here and there:
|
|
|
|
Hook The 'hook' is actually the oldest part of the Bonsai
|
|
code. The idea is, every so often (at Netscape, it was
|
|
every day), some build engineers will close the tree
|
|
and make sure that everything still builds properly.
|
|
If it doesn't, then the build engineers want to have a
|
|
list of people they can go beat up, this being the list
|
|
of people who changed the tree since the last time they
|
|
successfully built the tree. Those people are "on the
|
|
hook"; they are held responsible for any probs that
|
|
arise.
|
|
|
|
So, it works out to: the list of people who have
|
|
checked in since the tree was last closed.
|
|
|
|
|
|
==========
|
|
Maintainer
|
|
==========
|
|
|
|
The current primary maintainer of Bonsai is Terry Weissman <terry@mozilla.org>.
|