From bfbb7fc24a36f09a1ade4775f22dc9e3c07e4597 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 12 Dec 2021 21:43:10 -0800 Subject: [PATCH] build,tools: automate enforcement of emeritus criteria MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/41155 Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Reviewed-By: Ruben Bridgewater Reviewed-By: Antoine du Hamel Reviewed-By: James M Snell Reviewed-By: Tobias Nießen Reviewed-By: Myles Borins Reviewed-By: Filip Skokan Reviewed-By: Stewart X Addison Reviewed-By: Luigi Pinca Reviewed-By: Danielle Adams Reviewed-By: Joyee Cheung Reviewed-By: Michael Dawson Reviewed-By: Richard Lau Reviewed-By: Gus Caplan --- .../workflows/find-inactive-collaborators.yml | 5 ++--- tools/find-inactive-collaborators.mjs | 16 ++++------------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 942fcd77c81791..643e3ea4a6b4b1 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -9,7 +9,6 @@ on: env: NODE_VERSION: lts/* - NUM_COMMITS: 5000 jobs: find: @@ -19,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v2 with: - fetch-depth: ${{ env.NUM_COMMITS }} + fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} @@ -28,7 +27,7 @@ jobs: node-version: ${{ env.NODE_VERSION }} - name: Find inactive collaborators - run: tools/find-inactive-collaborators.mjs ${{ env.NUM_COMMITS }} + run: tools/find-inactive-collaborators.mjs - name: Open pull request uses: gr2m/create-or-update-pull-request-action@v1 diff --git a/tools/find-inactive-collaborators.mjs b/tools/find-inactive-collaborators.mjs index a052ef34368765..4d7802a0ed30f5 100755 --- a/tools/find-inactive-collaborators.mjs +++ b/tools/find-inactive-collaborators.mjs @@ -8,7 +8,7 @@ import cp from 'node:child_process'; import fs from 'node:fs'; import readline from 'node:readline'; -const SINCE = +process.argv[2] || 5000; +const SINCE = process.argv[2] || '18 months ago'; async function runGitCommand(cmd, mapFn) { const childProcess = cp.spawn('/bin/sh', ['-c', cmd], { @@ -42,19 +42,13 @@ async function runGitCommand(cmd, mapFn) { // Get all commit authors during the time period. const authors = await runGitCommand( - `git shortlog -n -s --email --max-count="${SINCE}" HEAD`, - (line) => line.trim().split('\t', 2)[1] -); - -// Get all commit landers during the time period. -const landers = await runGitCommand( - `git shortlog -n -s -c --email --max-count="${SINCE}" HEAD`, + `git shortlog -n -s --email --since="${SINCE}" HEAD`, (line) => line.trim().split('\t', 2)[1] ); // Get all approving reviewers of landed commits during the time period. const approvingReviewers = await runGitCommand( - `git log --max-count="${SINCE}" | egrep "^ Reviewed-By: "`, + `git log --since="${SINCE}" | egrep "^ Reviewed-By: "`, (line) => /^ Reviewed-By: ([^<]+)/.exec(line)[1].trim() ); @@ -182,15 +176,13 @@ async function moveCollaboratorToEmeritus(peopleToMove) { // Get list of current collaborators from README.md. const collaborators = await getCollaboratorsFromReadme(); -console.log(`In the last ${SINCE} commits:\n`); +console.log(`Since ${SINCE}:\n`); console.log(`* ${authors.size.toLocaleString()} authors have made commits.`); -console.log(`* ${landers.size.toLocaleString()} landers have landed commits.`); console.log(`* ${approvingReviewers.size.toLocaleString()} reviewers have approved landed commits.`); console.log(`* ${collaborators.length.toLocaleString()} collaborators currently in the project.`); const inactive = collaborators.filter((collaborator) => !authors.has(collaborator.mailmap) && - !landers.has(collaborator.mailmap) && !approvingReviewers.has(collaborator.name) );