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 <zarych...@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

Reply via email to