{"id":2665,"url":"https://patchwork.libcamera.org/api/1.1/patches/2665/?format=json","web_url":"https://patchwork.libcamera.org/patch/2665/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20200117191733.198897-6-nicolas@ndufresne.ca>","date":"2020-01-17T19:17:32","name":"[libcamera-devel,v2,5/6] checkstyle: Add support for checking style on amendments","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"332ddf092ee7cb39e95f60c834648423f2cf15c3","submitter":{"id":30,"url":"https://patchwork.libcamera.org/api/1.1/people/30/?format=json","name":"Nicolas Dufresne","email":"nicolas@ndufresne.ca"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/2665/mbox/","series":[{"id":634,"url":"https://patchwork.libcamera.org/api/1.1/series/634/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=634","date":"2020-01-17T19:17:27","name":"Add the ability to do pre-commit style check","version":2,"mbox":"https://patchwork.libcamera.org/series/634/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/2665/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/2665/checks/","tags":{},"headers":{"Return-Path":"<nicolas@ndufresne.ca>","Received":["from bhuna.collabora.co.uk (bhuna.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C510F60791\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Jan 2020 20:18:00 +0100 (CET)","from nicolas-tpx395.localdomain (unknown [IPv6:2610:98:8005::127])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits))\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby bhuna.collabora.co.uk (Postfix) with ESMTPSA id 3BE5E2949D4;\n\tFri, 17 Jan 2020 19:18:00 +0000 (GMT)"],"From":"Nicolas Dufresne <nicolas@ndufresne.ca>","To":"libcamera-devel@lists.libcamera.org","Cc":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","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","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 5/6] checkstyle: Add support for\n\tchecking style on amendments","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Fri, 17 Jan 2020 19:18:01 -0000"},"content":"From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\nThis introduce a new argument \"--amend\" and a new special type of\ncommit \"Amendment\". It will check the style of changes that are in\nthe index combined with the changes of the last commit. So this is\nthe changes that would be applied by \"git commit --amend\" hence the\nname of the argument.\n\nThis is needed to implement pre-commit hook.\n\nSigned-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n---\n utils/checkstyle.py | 24 ++++++++++++++++++++++++\n 1 file changed, 24 insertions(+)\n mode change 100644 => 100755 utils/checkstyle.py","diff":"diff --git a/utils/checkstyle.py b/utils/checkstyle.py\nold mode 100644\nnew mode 100755\nindex 8e456cd..7c2ce00\n--- a/utils/checkstyle.py\n+++ b/utils/checkstyle.py\n@@ -501,6 +501,26 @@ class Index(Commit):\n                               stdout=subprocess.PIPE).stdout.decode('utf-8')\n \n \n+class Amendment(Index):\n+    def __init__(self):\n+        Commit.__init__(self, None)\n+\n+    def det_info(self, top_level):\n+        # Create a title using HEAD commit\n+        ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-only', 'HEAD'],\n+                             stdout=subprocess.PIPE).stdout.decode('utf-8')\n+        title = 'Amendment of: ' + ret.splitlines()[0]\n+        # Extract the list of modifier files\n+        ret = subprocess.run(['git', 'diff', '--staged', '--name-only', 'HEAD~'],\n+                             stdout=subprocess.PIPE).stdout.decode('utf-8')\n+        return title, ret.splitlines()\n+\n+    def get_diff(self, top_level, filename):\n+        return subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',\n+                               '%s/%s' % (top_level, filename)],\n+                              stdout=subprocess.PIPE).stdout.decode('utf-8')\n+\n+\n def check_file(top_level, commit, filename):\n     # Extract the line numbers touched by the commit.\n     diff = commit.get_diff(top_level, filename)\n@@ -633,6 +653,8 @@ def main(argv):\n                         help='Code formatter. Default to clang-format if not specified.')\n     parser.add_argument('--staged', '-s', action='store_true',\n                         help='Include the changes in the index. Defaults to False')\n+    parser.add_argument('--amend', '-a', action='store_true',\n+                        help='Includes changes in the index and the previous patch combined. Defaults to False')\n     parser.add_argument('revision_range', type=str, default=None, nargs='?',\n                         help='Revision range (as defined by git rev-parse). Defaults to HEAD if not specified.')\n     args = parser.parse_args(argv[1:])\n@@ -671,6 +693,8 @@ def main(argv):\n     revlist = []\n     if args.staged:\n         revlist.append(Index())\n+    if args.amend:\n+        revlist.append(Amendment())\n \n     # If nothing of --staged or --amend was passed, defaults to HEAD\n     if len(revlist) == 0 and not args.revision_range:\n","prefixes":["libcamera-devel","v2","5/6"]}