a git tree, you need to run the autogen.sh script before you can build
anything:
- % ./autogen.sh
+ % ./autogen.sh
+
-------------------
directory structure
Following is a list of nmh's directories along with a brief description of the
purpose of each one. Meanings are given for the abbreviations, but note that
these meanings are just informed guesses as to what the MH developers were
-thinking.
+thinking.
./
The top-level directory. Contains files like README and INSTALL.
Contains utility files for the `configure' process. Ordinarily nothing in
here needs to be messed with.
-doc/
+docs/
Contains more specialized documentation, such as this file and
the FAQ.
"mts" stands for "Message Transfer Service". Source files specific to the
different MTSs go in the subdirectories.
-mts/mmdf/ (deprecated)
- "mmdf" stands for "Multichannel Memorandum Distribution Facility". It is an
- alternative to sendmail used primarily on SCO UNIX.
-
-mts/sendmail/ (deprecated: handled by mts.conf)
- When nmh is configured --with-mts=sendmail, the files in this directory are
- used.
-
mts/smtp/
When nmh is configured to just talk to an SMTP server over TCP/IP, the
source in this directory is compiled.
"sbr" stands for "subroutine(s)". For the most part, each source file in
this directory contains a single function with the same name as the source
file. These functions are of general use and are called from throughout
- nmh.
+ nmh.
+
+test/
+ The num unit test suite.
uip/
"uip" stands for "User Interface Programs". Most nmh commands have a file
<command>sbr.c which contains additional subroutines called from <command>.c
(which would contain not much else besides main()).
-zotnet/ (deprecated)
- Files in this hierarchy were either written by or moved here by UCI
- (University of California, Irvine) after they took over MH from the Rand
- Corporation. "Zot!" is the sound effect made by the anteater in the "B.C."
- comic strip when its tongue lashes out at ants. The anteater is UCI's
- official mascot. Not sure whether UCInet was once called ZotNet...
-
-zotnet/bboards/ (deprecated)
- UCI added Bulletin Board functionality to MH with the `bbc' command. This
- functionality has been removed from nmh but apparently files in this
- directory are still needed for other purposes.
-
-zotnet/mf/ (deprecated, now in sbr/)
- "mf" stands for "Mail Filter". The filtering in this case apparently refers
- to translation between different address and mailbox formats.
-
-zotnet/mts/ (deprecated, now in sbr/)
- MTS code not specific to any single MTS apparently goes here.
-
-zotnet/tws/ (deprecated, now in sbr/)
- "tws" apparently stands for "time with structure", a rather odd phrase.
- This directory used to be the place for date and time manipulation code, but
- currently nothing in here is compiled. There are new, more portable
- versions of the key files in h/ and sbr/, and this directory will soon go
- away completely.
-
---
git
% git clone git://git.savannah.nongnu.org/nmh.git
+That will create a workspace call nmh. To update that workspace
+with changes to the master, cd to it and run:
+
+ % git pull
+
-------------------------------------------------------
nmh-local functions to use in preference to OS versions
nmh conditionally uses a local definition with the same name as the OS function
(e.g. snprintf()). For other functions, developers need to avoid the OS
versions and always use the nmh-supplied function. Here is a list of such
-functions:
+functions:
OS function nmh-local version to use instead
=========== ================================
% date +"%e %B %Y" > DATE
(DATE should contain something like "30 December 2000")
- 2. Put a comment like "Released nmh-1.0.4." in the ChangeLog.
+ 2. % git commit VERSION DATE; git push
- 3. % cvs commit ChangeLog VERSION DATE
+ 3. % git tag -a nmh-1_0_4 -m 'Releasing nmh-1_0_4.'
- 4. % cvs tag nmh-1_0_4
- (cvs treats dots specially, so underscores are substituted here.)
+ 4. % make nmhdist
- 5. % make nmhdist
+ 5. Untar nmh-1.0.4.tar.gz and `diff -r' it vs. your workspace. Make
+ sure no files got left out of the distribution that should be in
+ it (due to someone forgetting to update the DIST variables in the
+ Makefiles).
- 6. Untar nmh-1.0.4.tar.gz and `diff -r' it vs. your CVS tree. Make sure no
- files got left out of the distribution that should be in it (due to someone
- forgetting to update the DIST variables in the Makefiles).
-
- 7. If you have root access on your machine, it's good at this point to do:
+ 6. If you have root access on your machine, it's good at this point to do:
% chown -R 0:0 nmh-1.0.4
% tar cvf nmh-1.0.4.tar nmh-1.0.4
making it possible for that user to Trojan the nmh code before the system
administrator finishes installing it.
- 8. Make sure your new tarball uncompresses and untars with no problem. Make
+ 7. Make sure your new tarball uncompresses and untars with no problem. Make
sure you can configure, make, and install nmh from it.
- 9. If all is well and your tarball is final, go back to your CVS tree and do:
+ 8. If all is well and your tarball is final, go back to your workspace and do:
% echo 1.0.4+dev > VERSION
-10. Put a comment like "Upped the version number to 1.0.4+dev until the next nmh
- release." in the ChangeLog.
-
-11. % cvs commit ChangeLog VERSION
+ 9. % git commit VERSION; git push
-12. If possible, make an MD5 hash and/or a PGP signature of nmh-1.0.4.tar.gz.
+10. If possible, make an MD5 hash and/or a PGP signature of nmh-1.0.4.tar.gz.
Assuming you have gpg set up, this should be:
% gpg --output nmh-1.0.4.tar.gz.sig --detach-sig nmh-1.0.4.tar.gz
You can verify the signature with
% gpg --verify nmh-1.0.4.tar.gz.sig nmh-1.0.4.tar.gz
-13. Upload the files to savannah. First make sure they are mode 664 so
+11. Upload the files to savannah. First make sure they are mode 664 so
they will have the right permissions on the server end
(see https://savannah.gnu.org/maintenance/SharedDownloadArea)
% chmod 664 nmh-1.0.4.tar.gz*
Then scp them across:
% scp -p nmh-1.0.4.tar.gz* youruser@dl.sv.nongnu.org:/releases/nmh/
-14. Update the http://www.nongnu.org/nmh/ homepage. (It lives in the 'webpages
- repository'; see https://savannah.nongnu.org/cvs/?group=nmh)
+12. Update the http://www.nongnu.org/nmh/ homepage. (It lives in the CVS
+ 'webpages repository'; see https://savannah.nongnu.org/cvs/?group=nmh)
-15. Add a news item to the savannah nmh page. You'll have to submit it first
+13. Add a news item to the savannah nmh page. You'll have to submit it first
and then separately approve it (under News->Manage).
-16. Send the release announcement email to the following places:
+14. Send the release announcement email to the following places:
nmh-workers@nongnu.org
nmh-announce@nongnu.org
exmh-users@redhat.com
Preferably, the announcement should contain the MD5 hash generated above,
and should be PGP-signed. It should include the URL for the tarball as
well as the URL of the website. It should contain a brief summary of
- visible changes, as well as the URL of the cvsweb diff page that would show
- a detailed list of changes. The changes between 1.2 and 1.3 would be
- shown by:
-
- http://cvs.savannah.gnu.org/viewvc/nmh/ChangeLog?root=nmh&r1=1.215&r2=1.254.2.13
+ visible changes, as well as the URL of the git diff page that would show
+ a detailed list of changes. The changes between 1.5 and 1.4 would be
+ shown by [this is just a guess, I don't know anything about cgit, and
+ it assumes that we tag with nmh-x_x-release from now on]:
+ http://git.savannah.gnu.org/cgit/nmh.git/diff/?h=nmh-1_5-release?h=nmh-1_4-release