From patchwork Fri Jan 17 19:17:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nicolas Dufresne X-Patchwork-Id: 2665 Return-Path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C510F60791 for ; Fri, 17 Jan 2020 20:18:00 +0100 (CET) Received: from nicolas-tpx395.localdomain (unknown [IPv6:2610:98:8005::127]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: nicolas) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 3BE5E2949D4; Fri, 17 Jan 2020 19:18:00 +0000 (GMT) From: Nicolas Dufresne To: libcamera-devel@lists.libcamera.org Cc: Nicolas Dufresne Date: Fri, 17 Jan 2020 14:17:32 -0500 Message-Id: <20200117191733.198897-6-nicolas@ndufresne.ca> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200117191733.198897-1-nicolas@ndufresne.ca> References: <20200117191733.198897-1-nicolas@ndufresne.ca> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 5/6] checkstyle: Add support for checking style on amendments X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2020 19:18:01 -0000 From: Nicolas Dufresne This introduce a new argument "--amend" and a new special type of commit "Amendment". It will check the style of changes that are in the index combined with the changes of the last commit. So this is the changes that would be applied by "git commit --amend" hence the name of the argument. This is needed to implement pre-commit hook. Signed-off-by: Nicolas Dufresne Reviewed-by: Niklas Söderlund --- utils/checkstyle.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) mode change 100644 => 100755 utils/checkstyle.py diff --git a/utils/checkstyle.py b/utils/checkstyle.py old mode 100644 new mode 100755 index 8e456cd..7c2ce00 --- a/utils/checkstyle.py +++ b/utils/checkstyle.py @@ -501,6 +501,26 @@ class Index(Commit): stdout=subprocess.PIPE).stdout.decode('utf-8') +class Amendment(Index): + def __init__(self): + Commit.__init__(self, None) + + def det_info(self, top_level): + # Create a title using HEAD commit + ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-only', 'HEAD'], + stdout=subprocess.PIPE).stdout.decode('utf-8') + title = 'Amendment of: ' + ret.splitlines()[0] + # Extract the list of modifier files + ret = subprocess.run(['git', 'diff', '--staged', '--name-only', 'HEAD~'], + stdout=subprocess.PIPE).stdout.decode('utf-8') + return title, ret.splitlines() + + def get_diff(self, top_level, filename): + return subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--', + '%s/%s' % (top_level, filename)], + stdout=subprocess.PIPE).stdout.decode('utf-8') + + def check_file(top_level, commit, filename): # Extract the line numbers touched by the commit. diff = commit.get_diff(top_level, filename) @@ -633,6 +653,8 @@ def main(argv): help='Code formatter. Default to clang-format if not specified.') parser.add_argument('--staged', '-s', action='store_true', help='Include the changes in the index. Defaults to False') + parser.add_argument('--amend', '-a', action='store_true', + help='Includes changes in the index and the previous patch combined. Defaults to False') parser.add_argument('revision_range', type=str, default=None, nargs='?', help='Revision range (as defined by git rev-parse). Defaults to HEAD if not specified.') args = parser.parse_args(argv[1:]) @@ -671,6 +693,8 @@ def main(argv): revlist = [] if args.staged: revlist.append(Index()) + if args.amend: + revlist.append(Amendment()) # If nothing of --staged or --amend was passed, defaults to HEAD if len(revlist) == 0 and not args.revision_range: