Re: discussion on future removal of empty $FreeBSD$ tags
- In reply to: Warner Losh : "Re: discussion on future removal of empty $FreeBSD$ tags"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 02 May 2022 20:31:35 UTC
W dniu 2.05.2022 o 22:09, Warner Losh pisze: > 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 Thank you for the reply and for revealing your official plans regarding $FreeBSD$ tags. Marek Zarychta > > 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 clonehttps://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 >