                      Documentation for Subversion
                      ============================

A rough guide:

  http://svnbook.red-bean.com/
                             Subversion: The Definitive Guide. This is
                             the book that has been published by
                             O'Reilly & Associates. For both newbies and
                             experts alike.  Written in DocBook Lite,
                             and now maintained in a separate repository
                             of its own.
                             
  misc-docs                  Holds additional DocBook Lite material that
                             either isn't yet ready to go into the
                             Definitive Guide, or which may never go
                             into the Guide but instead into companion
                             documents that would be available from the
                             Subversion site.  Think of it as a
                             temporary, but published, holding area.

  HOWTO.DocBook              Instructions on how to build HTML, PDF, 
                             or PostScript from DocBook Lite source.

  programmer/                Documents for Subversion programmers.

  programmer/design/         Subversion's original design document
                             (written in Texinfo).
                             WARNING!  Extremely old!  From June 2000.

  programmer/WritingChangeLogs.txt
                             A longer version of the info in
                             www/hacking.html.

  user/                      Documents for Subversion users.

  user/lj_article.txt        An introductory article from Linux Journal.

  user/svn-ref.tex           LaTeX source for an svn quick-ref sheet.

  user/*.html                Some documentation that should probably be
                             migrated to DocBook Lite and misc-docs/.

  translations/french        A translation of the Subversion handbook
                             (which has been absorbed into the book).
 
If you'd like to document a new feature, try to find a place for it
somewhere in misc-docs.

-------------- NOTES on Texinfo usage -----------------------------

Some of Subversion's documentation is in texinfo format.
The online documentation for texinfo is at:

  http://www.gnu.org/manual/texinfo-4.0/html_chapter/texinfo_toc.html

To build particular things, you'll need one or more of:

  * the 'makeinfo' program from the latest texinfo package in
    ftp://ftp.gnu.org/pub/gnu/texinfo/
  * the 'texi2dvi' or 'texi2html' programs
  * the 'dvipdf' script from Ghostscript (pipes dvi | ps | Ghostscript)


Use these rules for determining how to label something.  These rules
were derived from

http://www.gnu.org/manual/texinfo-4.0/html_chapter/texinfo_toc.html

1) Use <quote>...</quote> for quoting any text in the Subversion book.
   [Do not use the standard Texinfo practice which is `` and ''.
   Do not use a single ' or a single ".]
2) When quoting single characters, such as discussing the output from
   an svn merge or svn update, use @samp{}.
3) Use @samp{} for any commands to run on the command line.  Do not use
   @command{}, this is for the program itself.  So use @samp{ls -l},
   but refer to ls as @command{ls}.  For svn, svnadmin, svnlook
   subcommands, use @samp{}, so to refer to svnlook's youngest
   subcommand, use @samp{youngest}.
4) Use @option{} for command line options to programs that are not
   listed with the program.  So @samp{ls -l}, but refer to -l as
   @option{-l}.
5) Use @uref{} for URLs that anybody on the Internet can access.
   These are converted to real links in HTML pages, while @url{}'s are
   not.  Use @url{} for sample http:// or file:// URLs.  For any
   @uref{} URLs that refer to a site's home page or a directory, place
   a / at the end of the URL.  This saves a redirect and loads the
   page faster.
6) Svn keywords, i.e. svn:ignore, should be in @samp{}.
7) Use @dots{} instead of ``...'' and @enddots{} instead of ``....''.
   Do not use @dots{} or @enddots when showing the output of a command
   and the command really does print the ...'s, such as when ``svn
   commit'' runs.  Do use @dots{} when truncating the example output
   of a command, such as ``svn checkout'', and you don't want to list
   every line of output.  Do not put the ...'s in [] because with
   @dots{} or @enddots{}, the formatted output will use a smaller font
   and the ...'s will be visually distinct already.

-------------
JimB fixed up a lot of our Texinfo problems, here's what he says:
-------------

Anyway, once I can commit things, here's the scoop:

- Info builds cleanly, so I've removed the --no-verify flag from the
  makeinfo command.  Any complains can be taken as real problems.
- The dvi builds without complains about undefined cross references.


As far as I can tell, our tools should work for us exactly as we'd
hope:

- There is no need to list next, prev, and up links in our @node
  lines.  (Certainly a critical requirement.)

- The Emacs commands can rebuild all our menus automatically and
  accurately.

- makeinfo will only complain about real problems.


The only real problem is that makeinfo's error messages are pretty
unhelpful.  It often misidentifies the error, so it's not at all
obvious how to fix a file it doesn't like.  But here are the rules we
have to follow; I found problems in each of these areas.

- @node and sectioning commands (@chapter, @section, ...) should
  always come in pairs --- the @node command on one line, and the
  sectioning command on the very next line.  This goes for the ``top''
  @node as well, which should be followed by a @top command.

- @node names must be globally unique.  This is an unfortunate
  property of info, but it's inherent in the format.  Ben had a lot of
  ``Overview'' nodes.

- @menu commands should be properly formatted.  They should look like
  this:

    @menu
    * Filesystem::
    * Server Library::
    @end menu

  Not this:

    @menu
    * Filesystem
    * Server Library
    @end menu

  If we always use C-c C-u C-a, this should just work.

- @menu commands should always list the correct nodes.

When these rules are broken, the error messages from makeinfo are
pretty unhelpful --- bordering on utterly random.  They complain that
nodes are undefined when they're perfectly clearly correct.

We should always use C-c C-u C-a (`texinfo-all-menus-update') to
reconstruct a file's menus, instead of editing the menus by hand.
That will eliminate the bottom two problems.

You can also give a prefix to C-c C-s, which tells it to list the
@node commands alongside their sectioning commands.  This is helpful
for finding mismatches.

============================================================================
JimB also says:
============================================================================

For defining functions, you should definitely use @deffun or
@deftypefun, not @itemize nor @table.
