From patchwork Mon Jun 13 22:21:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Palider X-Patchwork-Id: 112712 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A20ECA0093; Tue, 14 Jun 2022 00:22:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 867124068E; Tue, 14 Jun 2022 00:22:59 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 2F1184067C for ; Tue, 14 Jun 2022 00:22:58 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25DJcT7I006033; Mon, 13 Jun 2022 15:22:57 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=mQY/yGPAAe/iLbpQRZQMlGwCloSEv9gQleQOY7JKaPs=; b=QNpLfy8p7jfUMXLV2MtxCJaNGw2seof24MDVvrezVFYyaRy6OeoMQ1Hc8IDXMSZ4dlsa 6hmsjIcKn1V60LIZ3JVeYKsaMknCUv8LXn2DJWKWQ0h12ypz5r9eq/KHdCITjpXPB9F9 N3FDo1q26FzxR41xw+vLyIgW9xhkh+wqrCc/7mQ2kdYuO7pRoHk4diQFPRTDPxHKwX9B HXXnnEi2b8hvOQ4UmBGQKEWxheQB9vK0Jq+foTbsxtVGfEvkfAp8zZ7ddyNZsOQa2Qr5 5iKOOwtPZMnZL9riE/64rvcW+hEVpea5Zp/u43hqUVrkMZDen+IshuwwdsJ3UrUh23Jx Jw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3gmtjp0jc2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 13 Jun 2022 15:22:57 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 13 Jun 2022 15:22:55 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Mon, 13 Jun 2022 15:22:55 -0700 Received: from localhost.localdomain (unknown [10.28.34.39]) by maili.marvell.com (Postfix) with ESMTP id 8BA293F706B; Mon, 13 Jun 2022 15:22:53 -0700 (PDT) From: To: CC: , , Jakub Palider Subject: [PATCH v2] devtools: ensure proper tag sequence Date: Tue, 14 Jun 2022 00:21:43 +0200 Message-ID: <20220613222143.1436424-1-jpalider@marvell.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Proofpoint-GUID: 63nkB4SQC3aGIOjTtlTV_HRebumWjr-w X-Proofpoint-ORIG-GUID: 63nkB4SQC3aGIOjTtlTV_HRebumWjr-w X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-06-13_09,2022-06-13_01,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Jakub Palider This change to log checking procedure ensures that certain tags are in proper order. The order of tags is as follows: * Coverity issue * Bugzilla ID * Fixes * Cc * * Suggested-by * Reported-by + Signed-off-by where: * => 0 or more than one instance possible + => more than once instance possible In order to satisfy the above requirements an extra check is performed for obligatory tags. Signed-off-by: Jakub Palider v2: * narrowed down the tags under check --- devtools/check-git-log.sh | 48 +++++++++++++++++++++++++++++ doc/guides/contributing/patches.rst | 24 +++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/devtools/check-git-log.sh b/devtools/check-git-log.sh index 23c6a7d9bb..c4d1d475c2 100755 --- a/devtools/check-git-log.sh +++ b/devtools/check-git-log.sh @@ -54,6 +54,7 @@ fixes=$(git log --format='%h %s' --reverse $range | grep -i ': *fix' | cut -d' ' stablefixes=$($selfdir/git-log-fixes.sh $range | sed '/(N\/A)$/d' | cut -d' ' -f2) tags=$(git log --format='%b' --reverse $range | grep -i -e 'by *:' -e 'fix.*:') bytag='\(Reported\|Suggested\|Signed-off\|Acked\|Reviewed\|Tested\)-by:' +exttag='Coverity issue:\|Bugzilla ID:\|Fixes:\|Cc:' failure=false @@ -203,6 +204,53 @@ done) [ -z "$bad" ] || { printf "Is it candidate for Cc: stable@dpdk.org backport?\n$bad\n"\ && failure=true;} +# check tag sequence +bad=$(for commit in $commits; do + body=$(git log --format='%b' -1 $commit) + echo "$body" |\ + grep -o -e "$exttag\|^[[:blank:]]*$\|$bytag" | \ + # retrieve tags only + cut -f1 -d":" |\ + # it is okay to have several tags of the same type but for processing + # we need to squash them + uniq |\ + # make sure the tags are in the proper order as presented in SEQ + awk -v cmt="$commit" 'BEGIN{ + SEQ[0] = "Coverity issue"; + SEQ[1] = "Bugzilla ID"; + SEQ[2] = "Fixes"; + SEQ[3] = "Cc"; + SEQ[4] = "^$"; + SEQ[5] = "Suggested-by"; + SEQ[6] = "Reported-by"; + SEQ[7] = "Signed-off-by"; + latest = 0; + } + { + for (seq = 0; seq < length(SEQ); seq++) { + if (match($0, SEQ[seq])) { + if (seq < latest) { + print "\tCommit " cmt " (" $0 ":)"; + break; + } else { + latest = seq; + } + } + } + }' +done) +[ -z "$bad" ] || { printf "Wrong tag order: \n$bad\n"\ + && failure=true;} + +# check required tag +bad=$(for commit in $commits; do + body=$(git log --format='%b' -1 $commit) + echo $body | grep -q "Signed-off-by:" \ + || echo "\tCommit" $commit "(Signed-off-by:)" + done) +[ -z "$bad" ] || { printf "Missing obligatory tag: \n$bad\n"\ + && failure=true;} + total=$(echo "$commits" | wc -l) if $failure ; then printf "\nInvalid patch(es) found - checked $total patch" diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst index bebcaf3925..bbaaf10a42 100644 --- a/doc/guides/contributing/patches.rst +++ b/doc/guides/contributing/patches.rst @@ -360,6 +360,30 @@ Where ``NNNNN`` is patchwork ID for patch or series:: --- Depends-on: series-10000 ("Title of the series") +Tag order +~~~~~~~~~ + +There is a pattern indicating how certain tags should relate to each other. + +Example of proper tag sequence:: + + Coverity issue: + Bugzilla ID: + Fixes: + Cc: + + Suggested-by: + Reported-by: + Signed-off-by: + +Between first and second tag section there is and empty line. + +While ``Signed-off-by:`` is an obligatory tag and must exists in each commit, +all other tags are optional. Any tag, as long as it is in proper location +to other adjacent tags (if present), may occur multiple times. + +Other tags shall be laid out in a chronological order. + Creating Patches ----------------