httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roy T. Fielding" <field...@ebuilt.com>
Subject cvs indecision
Date Mon, 27 Nov 2000 12:04:13 GMT
I've been trying to figure out the least annoying way of fixing
the cvs repositories for httpd-docs and apache-2.0 (and indirectly
the one for apr, though it is not currently broken).  Unfortunately,
what I've found is that all of the methods require a clean checkout
be forced.

To fix the docs, what I need to do in /home/cvs/* is

   recursively, for each rcs ,v file in apache-2.0/htdocs/Attic
      -- find the corresponding file in httpd-docs-2.0/htdocs
      -- compare the tags in the old file to the new one
      -- use rcs -nTAG:rev to restore each missing tag
   mv apache-2.0/htdocs /home/fielding/save
   mv httpd-docs-2.0/htdocs apache-2.0/htdocs
   edit CVSROOT/modules accordingly
   chgrp -R apcvs apache-2.0/htdocs
   chgrp -R apcvs apache-2.0/src/include
   chgrp -R apcvs apache-2.0/src/os/unix
   chgrp -R apcvs apr/include

    [note: I believe the last three are bogus, but that is what the
           httpd-docs-2.0 module is trying to do.  I think that any
           changes to the include files should require someone in the
           apr or server group to commit, so I would prefer to leave
           those directories under the core groups.]

To "fix" apr so that it is automatically checked-out with apache-2.0

   mv apache-2.0/src/lib/apr /home/fielding/save
   add the following to the CVSROOT/modules file

       apache-2.0      apache-2.0 &apr-httpd-2.0
       apr-httpd-2.0   -d src/lib/apr apr

    [note: removing the existing apr is necessary to avoid the overlap
           error message we currently get from htdocs.  Since apr still
           has the history from apache-2.0, this will work fine.]

I could have done the above this [last] night, but I need to fly to Austin
today and will probably be away from e-mail until late Tuesday night.  Not a
good idea to mess with things just before a trip.  What really stopped
me though was that figuring this stuff out reminded me of how completely
f*cked the current source tree layout is for apache-2.0, and that it
would take the same amount of effort to just fix the whole thing as it
would to restore the broken bits above.

What I am thinking of doing is rebuilding the repository as if it were
a standard source tree (not a dual build/source tree), as follows:

   httpd-2.0/
             build/                 [src/build and src/helpers]
             docs/
                     docroot/       [containing index files in htdocs]
                     conf/          [what is in conf now]
                     icons/         [just the small ones]
                     manual/        [what is now htdocs/manual]
             include/
             modules/
                     aaa/           [access authentication and auth DBs]
                     generators/    [mod_asis, mod_cgid, etc.]
                     filters/       [mod_include, etc.]
                     loggers/       [content generators]
                     mappers/       [mod_alias, mod_rewrite, etc.]
                     metadata/      [mod_cern_meta, mod_user_track, etc.]
                     cache/
                     dav/
                     proxy/
                     experimental/
             server/                [src/main]
                     mpm/
                     http/
                     ssl/
                     main.c
                     buildmark.c
             srclib/
                     apr/           [autocheckout? via &apr-httpd-2.0]
                     aputil/        [what greg just created and src/ap]
                     expat-lite/    [autocheckout?]
                     pcre/          [autocheckout?]
                     sdbm/          [autocheckout?]
                     openssl/       [autocheckout?]
                     zlib/          [autocheckout?]
             support/
             test/

             ABOUT_APACHE
             README
             INSTALL
             LICENSE
             NOTICE
             CHANGES
             KEYS
             Announcement
             Apache.dsp
             ApacheCore.def
             ApacheCore.dsp
             ApacheCoreDll.dsp
             Makefile.in
             Makefile.win
             acinclude.m4
             buildconf
             configure.in

In other words, remove the vestigial directories from Apache 1.0
(logs, htdocs, etc), eliminate the src layer, stop using the standard
names of install directories for our own source code (conf, lib, etc.),
segregate the modules by function rather than some arbitrary
notion of their status, and prepare for new server protocols.

Note that this is a new repository name.  I would only copy over the
current rcs files.  The old repository would be left as-is so that
we can still do checkouts of prior versions and have the files
end up in the right (older) directories.  It would significantly
speed up checkouts and updates, since most of the dirs and files in
the current tree are nothing but Attic space.

It also reduces coupling between the core and modules directories
(mpm should never have been moved there) and improves cohesion.

Of course, the negative is that we'd have to then fix the build system.

Comments?  [I won't be able to respond much until Wednesday]

Yikes, it took me five hours just to write that plan.

....Roy

Mime
View raw message