| Documentation for Subversion |
| ============================ |
| |
| Subversion's preferred documentation system is texinfo. 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' from ftp://ftp.gnu.org/pub/gnu/texinfo/texinfo-4.0.tar.gz |
| * the `dvipdf' script from Ghostscript (pipes dvi | ps | Ghostscript) |
| |
| |
| A rough guide: |
| |
| programmer/ |
| Documents for Subversion programmers |
| programmer/design/ |
| The Design of Subversion |
| programmer/WritingChangeLogs.txt |
| A longer version of the info in HACKING |
| user/ |
| Documents for Subversion users |
| user/manual |
| A manual for users. |
| |
| |
| In general, as we define theoretical client behaviors, please try to |
| drop your scratch notes into the user manual. This document will be a |
| "central" place for what will someday end up as a kind of functional |
| spec. |
| |
| |
| |
| |
| -------------- NOTES on Texinfo usage ----------------------------- |
| |
| ------------- |
| 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. |