Date: Wed, 18 Feb 2004 20:41:38 +0200 From: Ruslan Ermilov <ru@FreeBSD.org> To: Nate Lawson <nate@root.org> Cc: cvs-src@FreeBSD.org Subject: Re: cvs commit: src/contrib/groff FREEBSD-Xlist src/contrib/groff/src/include getopt.h src/contrib/groff/src/libs/libgroff getopt.c getopt1.c Message-ID: <20040218184138.GA954@ip.net.ua> In-Reply-To: <20040218094753.Q35672@root.org> References: <200402170343.i1H3hCot079054@repoman.freebsd.org> <20040217165128.GB27143@tara.freenix.org> <20040218012226.GA16022@nagual.pp.ru> <20040218060253.GA42832@tara.freenix.org> <20040218110713.GG54588@FreeBSD.org.ua> <20040218094753.Q35672@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Feb 18, 2004 at 09:52:55AM -0800, Nate Lawson wrote: > On Wed, 18 Feb 2004, Ruslan Ermilov wrote: > > On Wed, Feb 18, 2004 at 07:02:53AM +0100, Ollivier Robert wrote: > > > According to Andrey Chernov: > > > > > According to Andrey A. Chernov: > > > > > > 1.3 +2 -0 src/contrib/groff/FREEBSD-Xlist > > > > > > 1.2 +0 -169 src/contrib/groff/src/include/getopt.h (= dead) > > > > > > 1.2 +0 -1055 src/contrib/groff/src/libs/libgroff/geto= pt.c (dead) > > > > > > 1.2 +0 -188 src/contrib/groff/src/libs/libgroff/geto= pt1.c (dead) > > > > > > > that it will be replacement for gnu getopt (as for fnmatch, stpcpy = etc gnu > > > > pollution). getopt_long() was too long in the libc to really trigge= r the > > > > switch now. I don't take files off the branch, just remove unneded = junk, > > > > most of it is already in FREEBSD-Xlist. It always be our style to n= ot > > > > import unneeded files. > > > > > > Look at the commit message, these files were on the FSF vendor branch= , you > > > have taken these off that branch! That's _not_ the way you should ha= ve done > > > it. > > > > Removing files on the HEAD branch is somewhat rather special way > > to "take files off the vendor branch", and as Andrey already > > pointed out, we needed to remove at least getopt.h so the > > FreeBSD's native version of getopt.h gets used. And there was > > no point keeping other getopt*.c either with this change. >=20 > This is not the appropriate way to do it. des@, roberto@, and myself > have all explained this both times this has happened. >=20 I know, I just happen to have a different opinion on this subject. It's pretty legal (and always was) to remove unneeded files on HEAD, while preserving them on vendor branch. We did it this way all the time, with yacc(1) output files, etc. Yes, this creates a conflict with future imports (if these imports have and modify these files), but this conflict is intentional. Read this output: $ grep -C 'Never make local changes' /usr/src/contrib/*/FREEBSD-upgrade Removing files on a vendor branch, OTOH, implies that these files were removed by the vendor, which it's NOT. Consider this: - getopt.h got first imported with release tag v1_0, - getopt.h was removed on vendor branch (VENDOR), (so far so good) - getopt.h gets imported again with release tag v2_0. The last command will in effect un-delete this file, which is not probably what we need. Of course one could argue that we should also put getopt.h into FREEBSD-Xlist, so that the next import won't re-import it again, but then it is not different from simply removing it on HEAD -- there will be no conflict with future imports using the same exclude file. My preferences for handling the vendor branches are as follows: 1 checkout on vendor branch (-rVENDOR) should give the same output as checkout of the latest vendor release tag, if possible; the only exceptions are partial vendor fixes or upgrades, where vendor didn't release the new version. (David O'Brien has pointed this out to me recently when I simply committed on the vendor branch to upgrade our copy of one-true-awk to the latest version.) 2 local deletions should be done on HEAD, so that we are safe with respect to contents of FREEBSD-Xlist, as explained above 3 (follows from #1) after a new import, both vendor branch and HEAD, in that order, should be cleared to remove files that were not imported (either vendor has removed them, or these files are in our exclude list) with the commit log such as "Removed files not present in the latest import". Note the order here: old and excluded files should first be deleted on the vendor branch, and only then what's left on HEAD should be cleared: locally modified files that are no longer needed. The two working examples of this technique could be found in freefall:~ru/import/, and were used for some time now to handle Groff and Texinfo. Cheers, --=20 Ruslan Ermilov FreeBSD committer ru@FreeBSD.org --mYCpIKhGyMATD0i+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAM7HiUkv4P6juNwoRApa1AJ4/J2zg8Y38gfwhAhxB2xeJKkQgiACfRes2 FsD0c8la04ALbhfTdJZT8Og= =umzr -----END PGP SIGNATURE----- --mYCpIKhGyMATD0i+--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040218184138.GA954>