From owner-freebsd-current Mon Oct 30 3:54:52 2000 Delivered-To: freebsd-current@freebsd.org Received: from dt051n37.san.rr.com (dt051n37.san.rr.com [204.210.32.55]) by hub.freebsd.org (Postfix) with ESMTP id 5C23A37B4C5 for ; Mon, 30 Oct 2000 03:54:49 -0800 (PST) Received: from gorean.org (Studded@master [10.0.0.2]) by dt051n37.san.rr.com (8.9.3/8.9.3) with ESMTP id DAA71011 for ; Mon, 30 Oct 2000 03:54:48 -0800 (PST) (envelope-from DougB@gorean.org) Message-ID: <39FD6188.6CDEF271@gorean.org> Date: Mon, 30 Oct 2000 03:54:48 -0800 From: Doug Barton Organization: Triborough Bridge & Tunnel Authority X-Mailer: Mozilla 4.75 [en] (X11; U; FreeBSD 5.0-CURRENT-102 i386) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-current@freebsd.org Subject: Mergemaster changes Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Not quite a head's up worthy event, but I thought people would like to know about some of this, and unfortunately we all know not everyone running -current reads cvs-all. The one change that isn't listed in the commit message that people might be interested in is the fact that mm is now doing: cd ${SOURCEDIR}/usr/src/etc && make DESTDIR=${DESTDIR} distrib-dirs in order to prime the destination path with directories of the appropriate permissions. In testing I uncovered what I consider to be a bug in 'install,' namely that doing 'install -d -m 0755 -o root -g wheel /foo/bar/baz' will create baz with the right permissions, but will not use the permissions specified for 'bar' if it does not exist already. I'm going to look into this tomorrow, but meanwhile doing the mtree (which is basically what distrib-dirs does) seemed reasonable, especially since 'make installworld' takes that _exact_ step. I've left the directory installation code in, as it doesn't hurt to be extra safe. This will only be a problem for people who've made dramatic changes to their system. The good news is that if you have made such changes, you can write a script that repeats the process and have mm run it as MM_EXIT_SCRIPT. The details are in the man page. For users who may have been waiting to be able to specify a list of files for mm to delete without comparing first, MM_PRE_COMPARE_SCRIPT is your answer. You can now write your own script to do whatever you think is appropriate before the comparison starts. As mentioned previously, I will not be adding the feature to delete specific files without comparison. Please feel free to offer feedback on the changes. Assuming that things go according to plan monday and tuesday, I will be testing this thoroughly while I do some RELENG_4 upgrades at work, so assuming all goes well I plan to MFC these changes before the freeze. The last set of features currently on the project list is to implement using CVS as a reference for diffs, and as a way to further automate upgrades. It will be a couple of weeks at least before I have a version of this ready to go. Enjoy, Doug -------- Original Message -------- Subject: cvs commit: src/usr.sbin/mergemaster mergemaster.sh mergemaster.8 Date: Mon, 30 Oct 2000 02:33:51 -0800 (PST) From: Doug Barton To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org dougb 2000/10/30 02:33:51 PST Modified files: usr.sbin/mergemaster mergemaster.sh mergemaster.8 Log: Add several new features, reorder some code, and continue with the process of making the script more cross platform friendly. * Add -i option to automatically install files that do not exist on the system already. * Add the ability to specify DESTDIR. * Allow the user to specify scripts to run right before the comparison starts, and when mm is done. This will allow the user to specify customized local behavior, and implement features such as automatically deleting files. * Document the above changes in the man page. * Switch to using 'ident' for the CVS Id comparison, which should help with portability, and makes it faster. * Reorder, and in one case fix some code by doing things in ways that make more sense. * Check to see if the file exists on the system before doing the comparisons. This saves CPU cycles, and streamlines the auto-install process. I used bits and pieces of suggestions and patches from various people, ultimately too numerous to name. Which is not to say that they were not both appreciated, and helpful in achieving the ultimate result. Revision Changes Path 1.14 +137 -92 src/usr.sbin/mergemaster/mergemaster.sh 1.8 +59 -7 src/usr.sbin/mergemaster/mergemaster.8 http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/mergemaster/mergemaster.sh.diff?&r1=1.13&r2=1.14 http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/mergemaster/mergemaster.8.diff?&r1=1.7&r2=1.8 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message