]> git.ipfire.org Git - thirdparty/squid.git/commit - CONTRIBUTORS
Maintenance: Improve CONTRIBUTORS and its updates (#980)
authorAmos Jeffries <yadij@users.noreply.github.com>
Mon, 13 Jun 2022 15:55:06 +0000 (15:55 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Mon, 13 Jun 2022 15:55:15 +0000 (15:55 +0000)
commit6e541c01f8e69f6781623ded7ce21a546a911805
tree0b5989d606845773ba0a0f14a5533237b61841e7
parent6a66e7b3ccbf49b6980a1e453c44d9223081e748
Maintenance: Improve CONTRIBUTORS and its updates (#980)

The Squid Project used a script to collect CONTRIBUTORS entries, but it
was not called from source-maintenance.sh, it did not really understand
the structure of those entries, and its results required significant
manual polishing efforts. CONTRIBUTORS file kept deteriorating.

This change consists of three major parts detailed further below:

* a major (semi-manual) CONTRIBUTORS update and cleanup;
* scripts/update-contributors.pl: Merges new entries into CONTRIBUTORS;
* collectAuthors() in source-maintenance.sh: Finds new entries.

Part 1: CONTRIBUTORS update: We collected (and then pruned/polished) all
contributors from the following (master and v3+ branches) sources:

* all commit authors;
* all commit co-authors (from Co-authored-by trailer and note entries);
* all CONTRIBUTORS file revisions (the latest one was missing entries).

Part 2: update-contributors.pl understands and enforces a more formal
CONTRIBUTORS structure. After a non-indented preamble text ending with
an empty line, indented CONTRIBUTORS entries now use these formats:

    name <email>
    name
    <email>

The entries are case-insensitively sorted by the two fields (name,
email), with several conflict-resolution rules aimed at achieving
natural and stable order. Non-ASCII entries are still banned (for now)
because properly supporting them requires a serious dedicated effort.

The program merges current CONTRIBUTORS and all well-formed contributor
entries (read from the standard input) except these:

* entries with an already represented email
* entries with an already represented name
* entries containing "squidadm" in name or email

The matching is case-insensitive. These filtering rules appear to work
better in Squid CONTRIBUTORS context than more accurate/strict rules do.

Part 3: collectAuthors() feeds update-contributors.pl with new
contributors collected from "git log" output. The function only looks at
the current git branch commits made after a "vetted" point. That point
is updated by certain CONTRIBUTORS commits, as detailed in the
collectAuthors() description inside source-maintenance.sh. It can also
be specified manually via the new --update-contributors-since option.

It is not critical (and is probably impossible) for CONTRIBUTORS
automation to properly detect and merge every single new contributor.
When the scripts get it wrong, a human can always update CONTRIBUTORS
manually. Rare mistakes are not a big deal in this context. For example,
if a past contributor now needs to be listed with another email (e.g.
representing a new employer), we manually add a second entry.

This change is a reference point for automated CONTRIBUTORS updates.
CONTRIBUTORS
scripts/Makefile.am
scripts/source-maintenance.sh
scripts/update-contributors.pl [new file with mode: 0755]