WHATIS:
The patch and checksum collection will help mergemaster to update all not modified files without asking you.

USAGE:
1. Download and apply patch to mergemaster: mergemaster-checksum.diff.
2. Create directory for checksums and fetch checksums file to this directory:
# mkdir -p /var/db/sys/etc
# (cd /var/db/sys/etc && fetch http://people.freebsd.org/~den/scripts/mergemaster/new/sums-etc-sorted.list)
3. Run patched mergemaster, it will update all not modified files in fully automated mode.

NOTE: Don't forget to make backup copy of /etc directory before processing.

Alternative:
tobez's patch (CVS functionality)

28.01.2009
The sums-etc-sorted.list (and sums-etc-sorted.list.gz) file was updated.

23.01.2008
The sums-etc-sorted.list (and sums-etc-sorted.list.gz) file was updated.

12.05.2006
The sums-etc-sorted.list file was updated. Two bugs was found in etc_collect-3.sh, and this script was updated too.

10.05.2005
Daniel O'Connor pointed me to sysutils/etcmerge, and after some discussion with him I decide that in will be good to implement ability to calculate and store checksums in mergemaster.

So, this patch: mergemaster-check-store.diff bring to mergemaster ability to store checksums for existing sources (if checksums not found in existing checksums files). Unfortunately, this will help only on further updates.

TODO:
Resolve issues with files, that present in src/etc CVS, but designated for other directories.

08.05.2005
Implemented TODO:
Checksum collector script now able to collect checksum for files outside src/etc, and able to update collected checksums.

New checksum collector script: etc_collect-3.sh.

List of the files outside src/etc (used by script): etc-other

Checksum file (sorting was changed from previous variants): sums-etc-sorted.list (sums-etc-sorted.list.gz)

06.05.2005
Improved checksum collector script, which splits checksums list on two parts (based on revision date): etc_collect_checksums-splitted.sh.
Output: sums-etc-before2k.list (sums-etc-before2k.list.gz), sums-etc-recent.list (sums-etc-recent.list.gz).

I don't know how useful it is, because full collection is not too big. (~ 650k uncompressed).

TODO:

1. Ability to collect checksum for files not from src/etc. Examples:

COPYRIGHT src/COPYRIGHT,v
etc/gnats/freefall src/gnu/usr.bin/send-pr/categories,v
etc/ssl/openssl.cnf src/crypto/openssl/apps/openssl.cnf,v

2. Ability to update collected checksums.

05.05.2005
The checksum collector script: etc_collect_checksums.sh
Output: sums-etc.list (sums-etc.list.gz).

To run this script you should have local CVS repository. After script's job complete (it take few hours) do:

# mkdir -p /var/db/sys/etc
# cp sums-etc.list /var/db/sys/etc

The patch to mergemaster to check stored checksums first, then try CVS if checksum fails (if one checksum success, CVS will be disabled): mergemaster-checksum.diff.

03.05.2005
The patch to check files that was not modified against CVS: mergemaster-cvs-anoncvs.diff

The mergemaster with this is test patch can auto-update files that was not modified.

It do this by comparing each file with it's CVS copy. If file was not modified, it can be rewritten. This dramatically reduces amount of files that require admin's attention.

There is one major problem here: This can be done in single-user mode only if your have local CVS repository, because if local CVS is not exist, anoncvs is used.