Re: discussion on future removal of empty $FreeBSD$ tags
Date: Mon, 02 May 2022 20:09:30 UTC
The current plans are to keep $FreeBSD$ in main until stable/12 is out of support. no new files will have it added, unless they are to be merged to stable/12 and are installed / managed by mergemaster. We'll do a coordinated sweep of the tree removing them after stable/12 drops out of support and we'll do similar commits to stable/13 to reduce as much as possible any merge conflicts after that point. stable/13 and newer they are, of course, just noise. mergemaster doesn't require them to be non-empty, but will skip modified files if they match. Though it's been a while since I've used mergemaster... It has no maintainer and only receives emergency fixes when something breaks (and it usually takes a while for the right people to notice). Warner On Mon, May 2, 2022 at 12:25 PM Marek Zarychta < zarychtam@plan-b.pwste.edu.pl> wrote: > Dear subscribers, > > after one of the recent commits[1] surprisingly we got rid of $FreeBSD$ > from among others, two configuration files: /etc/ssh/ssh_config and > /etc/ssh/sshd_config. I was told these IDs are going to be deprecated in > the whole source tree when 12.x branch reaches EoL, what is surprising > news, at least for me. While indeed empty $FreeBSD$ tags after the > transition to git became useless, leaving them in config files, still might > be handy. Please let me explain why. > > After the transition to git, a lot of people complained about breakage in > mergemaster(8). Finally, they were told that this tool is outdated, cannot > do 3-way merge, has no maintainer, etc. so it's going to be deprecated > soon. Then appropriate notice was added, the handbook got updated, so > seemingly everyone was fine with this depreciation. I am not going to bring > any serious arguments against etcupdate(8), but when providing support on > IRC, a few cases of foot shooting with this tool had been reported to me > and the last one happened this year IIRC. Moreover some people, including > me, just like and are used to old sdiff(1)-way work of mergemaster(8). So > soon after the transition to git to overcome this deficiency I wrote for > myself a git primer helping with quick creation of local repository > including $FreeBSD$ recreation for mergemaster(8) relying on empty > $FreeBSD$ tags. I will attach this primer[2] for users here, maybe someone > (noncommitter) will benefit from this (if it will not get burned with fire > here earlier). > > Please don't get me wrong, I am not fighting with etcupdate(8) which works > almost flawlessly in unison with freebsd-update(8), but people who follow > STABLE/CURRENT really do appreciate the existence of mergemaster(8) and > still use it behind the scenes, including probably members of core@ team. > I am only asking for leaving these empty $FreeBSD$ IDs in config files. > This will of course add some burden to committers' work but might be > beneficial in the future. I am neither committer, nor contributor, but the > voice from the userbase. > > Best regards, > > Marek Zarychta > > [1] https://cgit.freebsd.org/src/commit/?id=835ee05f > > [2] > > ######################################################## > # > # FreeBSD Git src with worktrees and clean/smudge filters > # for mergemaster(8) > # > ######################################################## > # Preparation of the tree > > zfs create zroot/usr/src_head > zfs create zroot/usr/src_13 > > ######################################################## > # Making src of stable/13 mountable in /usr/src > > echo "/usr/src_13 /usr/src nullfs rw,late 0 0" >> /etc/fstab > mount -al > > ######################################################## > # Cloning the repository > > cd /usr/src_head > git clone https://git.freebsd.org/src.git/ ./ > > ######################################################## > # Adding filters > # Filters require lang/ruby and lang/perl installed > > git config filter.freebsdid.smudge expand_freebsd > git config filter.freebsdid.clean 'perl -pe "s/\\\$FreeBSD[^\\\$]*\\\$/\\\$FreeBSD\\\$/"' > > ######################################################## > # Limiting filters scope > # In /usr/src_head create file .git/info/attributes with > # following contents (at least): > > ------------cut------------ > cat > .git/info/attributes << EOF > etc/* filter=freebsdid > etc/*/* filter=freebsdid > libexec/rc/* filter=freebsdid > libexec/rc/rc.d/* filter=freebsdid > *.conf filter=freebsdid > dot.??* filter=freebsdid > lib/libc/gen/shells filter=freebsdid > lib/libc/net/hosts filter=freebsdid > lib/libpam/pam.d/* filter=freebsdid > lib/libwrap/hosts.allow filter=freebsdid > usr.sbin/services_mkdb/services filter=freebsdid > usr.sbin/bsnmpd/bsnmpd/snmpd.config filter=freebsdid > usr.sbin/periodic/etc/* filter=freebsdid > usr.sbin/cron/cron/crontab filter=freebsdid > crypto/openssh/ssh*_config filter=freebsdid > EOF > ------------cut------------ > > ######################################################## > # Smudge filter setup > # Create file /usr/local/bin/expand_freebsd with following > # contents and make it executable. > > ------------cut------------ > #!/usr/bin/env ruby > data = STDIN.read > last_info = `git log --pretty=format:"%h %ae %ad" -1` > puts data.gsub('$FreeBSD$', '$FreeBSD: ' + last_info.to_s + '$') > ------------cut------------ > > chmod a+x /usr/local/bin/expand_freebsd > > ######################################################## > # Adding worktrees > # Add worktree for stable/13, filters will be applied > > git worktree add /usr/src_13 stable/13 > > # To have IDs in main (HEAD) > # do checkout of filtered files again > > cd /usr/src_head > rm etc/master.passwd etc/group > rm libexec/rc/rc.d/* > git checkout -f -- . > > ######################################################## > # To find more files with $FreeBSD tags which might > # be added to .git/info/attributes file issue command: > > find . -type f -a -not -name '*~' | xargs grep -l '$FreeBSD' > > -- > Marek Zarychta > >