svn commit: r190224 - stable/6/usr.sbin/mergemaster
Doug Barton
dougb at FreeBSD.org
Sat Mar 21 15:35:45 PDT 2009
Author: dougb
Date: Sat Mar 21 22:35:44 2009
New Revision: 190224
URL: http://svn.freebsd.org/changeset/base/190224
Log:
MFC r189761, r189763, r189992, r189994:
1. Fix creation and saving of the new mtree file with the -D option
2. Clean up usage() and man page so the options are all listed consistently
3. Add -F option
4. More man page cleanups for CVS -> VCS, punctuation, etc.
Modified:
stable/6/usr.sbin/mergemaster/ (props changed)
stable/6/usr.sbin/mergemaster/mergemaster.8
stable/6/usr.sbin/mergemaster/mergemaster.sh
Modified: stable/6/usr.sbin/mergemaster/mergemaster.8
==============================================================================
--- stable/6/usr.sbin/mergemaster/mergemaster.8 Sat Mar 21 22:32:53 2009 (r190223)
+++ stable/6/usr.sbin/mergemaster/mergemaster.8 Sat Mar 21 22:35:44 2009 (r190224)
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 2, 2009
+.Dd March 18, 2009
.Dt MERGEMASTER 8
.Os
.Sh NAME
@@ -32,14 +32,14 @@
.Nd merge configuration files, et al during an upgrade
.Sh SYNOPSIS
.Nm
-.Op Fl achiprsvCPU
-.Op Fl A Ar Target architecture
-.Op Fl D Ar /destdir/path
+.Op Fl scrvahipFCPU
.Op Fl m Ar /path/to/sources
.Op Fl t Ar /path/to/temp/root
.Op Fl d
.Op Fl u Ar N
.Op Fl w Ar N
+.Op Fl A Ar Target architecture
+.Op Fl D Ar /destdir/path
.Sh DESCRIPTION
The
.Nm
@@ -82,15 +82,23 @@ merge by hand later.
By default it creates the temporary root in
.Pa /var/tmp/temproot
and compares the
-.Xr cvs 1
-version $Id/$FreeBSD strings for files that have them, deleting
+Version Control System (VCS) Id strings ($FreeBSD$)
+for files that have them, deleting
the temporary file if the strings match.
If there is
-no $Id string, or if the strings are different it
+no Id string, or if the strings are different it
compares the files themselves.
You can
-also specify that the script ignore the $Id strings and
-compare every file.
+also specify that the script ignore the Id strings and
+compare every file with the
+.Op Fl s
+option.
+Using the
+.Op Fl F
+option
+.Nm
+will install the new file for you if they differ only by
+VCS strings.
.Pp
The merge menu option is designed to let you easily combine your
customizations from the old version of a file into the new one.
@@ -117,11 +125,13 @@ After
installing an updated version of this file you should
probably run
.Xr pwd_mkdb 8
-with the -p option to rebuild your password databases
+with the
+.Op Fl p
+option to rebuild your password databases
and recreate
.Pa /etc/passwd .
.Pp
-The script uses the owner and group id's
+The script uses the owner and group ids
that the files are created with by
.Pa /usr/src/etc/Makefile ,
and file permissions as specified by the umask.
@@ -158,9 +168,9 @@ and therefore can override both files.
The options are as follows:
.Bl -tag -width Fl
.It Fl s
-Perform a strict comparison, diff'ing every pair of files.
+Perform a strict comparison, diffing every pair of files.
This comparison is performed line by line,
-without regard to CVS $Id's.
+without regard to VCS Ids.
.It Fl c
Use context diffs instead of unified diffs.
.It Fl r
@@ -189,8 +199,11 @@ directory exists, it creates a new one i
non-existent directory.
This option unsets the verbose flag,
but is compatible with all other options.
-Setting -a makes
--w superfluous.
+Setting
+.Op Fl a
+makes
+.Op Fl w
+superfluous.
.It Fl h
Display usage and help information.
.It Fl i
@@ -202,6 +215,9 @@ Compares only files known to be essentia
{build|install}world,
including
.Pa /etc/make.conf .
+.It Fl F
+If the files differ only by VCS Id ($FreeBSD$)
+install the new file.
.It Fl C
After a standard
.Nm
@@ -213,6 +229,8 @@ Preserve files that you replace in
or another directory you specify in your
.Nm
rc file.
+.It Fl U
+Attempt to auto upgrade files that have not been user modified.
.It Fl m Ar /path/to/sources
Specify the path to the directory where you want to do the
.Xr make 1 .
@@ -234,7 +252,9 @@ instead of the default
.It Fl d
Add the date and time to the name of the temporary
root directory.
-If -t is specified, this option must
+If
+.Op Fl t
+is specified, this option must
follow it if you want the date added too.
.It Fl u Ar N
Specify a numeric umask.
@@ -250,8 +270,6 @@ Specify an alternative
architecture name.
.It Fl D Ar /path
Specify the destination directory for the installed files.
-.It Fl U
-Attempt to auto upgrade files that have not been user modified.
.El
.Sh ENVIRONMENT
The
@@ -314,12 +332,15 @@ with all values commented out:
# Specify the destination directory for the installed files
#DESTDIR=
#
-# Strict comparison bypasses the CVS $Id tests and compares every file
+# Strict comparison skips the VCS Id test and compares every file
#STRICT=no
#
# Type of diff, such as unified, context, etc.
#DIFF_FLAG='-u'
#
+# Install the new file if it differs only by VCS Id ($FreeBSD$)
+#FREEBSD_ID=
+#
# Verbose mode includes more details and additional checks
#VERBOSE=
#
@@ -345,7 +366,7 @@ with all values commented out:
#IGNORE_FILES='/etc/motd /etc/printcap foo bar'
#
# Additional options for diff. This will get unset when using -s.
-#DIFF_OPTIONS='-I$\&FreeBSD:.*[$]' # Ignores CVS Id tags
+#DIFF_OPTIONS='-Bb' # Ignore changes in whitespace
#
# Location to store the list of mtree values for AUTO_UPGRADE purposes
#MTREEDB='/var/db'
@@ -382,7 +403,7 @@ Typically all you will need to do is typ
.Nm
at the prompt and the script will do all the work for you.
.Pp
-To use context diff's and have
+To use context diffs and have
.Nm
explain more things as it goes along, use:
.Pp
@@ -401,7 +422,6 @@ comparison, use:
.Pp
.Dl # mergemaster -sw 110
.Sh SEE ALSO
-.Xr cvs 1 ,
.Xr diff 1 ,
.Xr make 1 ,
.Xr more 1 ,
Modified: stable/6/usr.sbin/mergemaster/mergemaster.sh
==============================================================================
--- stable/6/usr.sbin/mergemaster/mergemaster.sh Sat Mar 21 22:32:53 2009 (r190223)
+++ stable/6/usr.sbin/mergemaster/mergemaster.sh Sat Mar 21 22:35:44 2009 (r190224)
@@ -15,8 +15,8 @@ PATH=/bin:/usr/bin:/usr/sbin
display_usage () {
VERSION_NUMBER=`grep "[$]FreeBSD:" $0 | cut -d ' ' -f 4`
echo "mergemaster version ${VERSION_NUMBER}"
- echo 'Usage: mergemaster [-scrvahipCP] [-m /path]'
- echo ' [-t /path] [-d] [-u N] [-w N] [-D /path]'
+ echo 'Usage: mergemaster [-scrvahipFCPU]'
+ echo ' [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]'
echo "Options:"
echo " -s Strict comparison (diff every pair of files)"
echo " -c Use context diff instead of unified diff"
@@ -26,8 +26,11 @@ display_usage () {
echo " -h Display more complete help"
echo ' -i Automatically install files that do not exist in destination directory'
echo ' -p Pre-buildworld mode, only compares crucial files'
+ echo ' -F Install files that differ only by revision control Id ($FreeBSD$)'
echo ' -C Compare local rc.conf variables to the defaults'
echo ' -P Preserve files that are overwritten'
+ echo " -U Attempt to auto upgrade files that have not been user modified"
+ echo ''
echo " -m /path/directory Specify location of source to do the make in"
echo " -t /path/directory Specify temp root directory"
echo " -d Add date and time to directory name (e.g., /var/tmp/temproot.`date +%m%d.%H.%M`)"
@@ -35,7 +38,6 @@ display_usage () {
echo " -w N Specify a screen width in columns to sdiff"
echo " -A architecture Alternative architecture name to pass to make"
echo ' -D /path/directory Specify the destination directory to install files to'
- echo " -U Attempt to auto upgrade files that have not been user modified."
echo ''
}
@@ -263,11 +265,14 @@ MTREEFILE="${MTREEDB}/mergemaster.mtree"
# Check the command line options
#
-while getopts ":ascrvhipCPm:t:du:w:D:A:U" COMMAND_LINE_ARGUMENT ; do
+while getopts ":ascrvhipCPm:t:du:w:D:A:FU" COMMAND_LINE_ARGUMENT ; do
case "${COMMAND_LINE_ARGUMENT}" in
A)
ARCHSTRING='TARGET_ARCH='${OPTARG}
;;
+ F)
+ FREEBSD_ID=yes
+ ;;
U)
AUTO_UPGRADE=yes
;;
@@ -665,7 +670,7 @@ find ${TEMPROOT} -type f -size 0 -delete
# Build the mtree database in a temporary location.
MTREENEW=`mktemp -t mergemaster.mtree`
case "${PRE_WORLD}" in
-'') mtree -ci -p ${TEMPROOT} -k size,md5digest > ${DESTDIR}${MTREENEW} 2>/dev/null
+'') mtree -ci -p ${TEMPROOT} -k size,md5digest > ${MTREENEW} 2>/dev/null
;;
*) # We don't want to mess with the mtree database on a pre-world run.
;;
@@ -1014,6 +1019,19 @@ for COMPFILE in `find . -type f -size +0
# Use more if not.
# Use unified diffs by default. Context diffs give me a headache. :)
#
+ # If the user chose the -F option, test for that before proceeding
+ #
+ if [ -n "$FREEBSD_ID" ]; then
+ if diff -q -I'[$]FreeBSD:.*$' "${DESTDIR}${COMPFILE#.}" "${COMPFILE}" > \
+ /dev/null 2>&1; then
+ if mm_install "${COMPFILE}"; then
+ echo "*** Updated revision control Id for ${DESTDIR}${COMPFILE#.}"
+ else
+ echo "*** Problem installing ${COMPFILE}, it will remain to merge by hand later"
+ fi
+ continue
+ fi
+ fi
case "${AUTO_RUN}" in
'')
# prompt user to install/delete/merge changes
@@ -1026,15 +1044,15 @@ for COMPFILE in `find . -type f -size +0
esac # Auto run test
fi # Yes, the files are different
fi # Yes, the file still remains to be checked
-done # This is for the do way up there at the beginning of the comparison
+done # This is for the for way up there at the beginning of the comparison
echo ''
echo "*** Comparison complete"
-if [ -f "${DESTDIR}${MTREENEW}" ]; then
+if [ -f "${MTREENEW}" ]; then
echo "*** Saving mtree database for future upgrades"
- test -e "${MTREEFILE}" && unlink ${MTREEFILE}
- mv ${DESTDIR}${MTREENEW} ${DESTDIR}${MTREEFILE}
+ test -e "${DESTDIR}${MTREEFILE}" && unlink ${DESTDIR}${MTREEFILE}
+ mv ${MTREENEW} ${DESTDIR}${MTREEFILE}
fi
echo ''
More information about the svn-src-stable
mailing list