Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/16210/?format=api
http://patches.dpdk.org/api/patches/16210/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1475142110-8294-1-git-send-email-thomas.monjalon@6wind.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1475142110-8294-1-git-send-email-thomas.monjalon@6wind.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1475142110-8294-1-git-send-email-thomas.monjalon@6wind.com", "date": "2016-09-29T09:41:50", "name": "[dpdk-dev] scripts: show fixes with release version of bug", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "160dba37421f0e337dff8ba291ab8c4302a95ec1", "submitter": { "id": 1, "url": "http://patches.dpdk.org/api/people/1/?format=api", "name": "Thomas Monjalon", "email": "thomas.monjalon@6wind.com" }, "delegate": { "id": 1, "url": "http://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/1475142110-8294-1-git-send-email-thomas.monjalon@6wind.com/mbox/", "series": [], "comments": "http://patches.dpdk.org/api/patches/16210/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/16210/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 3001238EB;\n\tThu, 29 Sep 2016 11:42:09 +0200 (CEST)", "from mail-wm0-f50.google.com (mail-wm0-f50.google.com\n\t[74.125.82.50]) by dpdk.org (Postfix) with ESMTP id 56750378E\n\tfor <dev@dpdk.org>; Thu, 29 Sep 2016 11:42:07 +0200 (CEST)", "by mail-wm0-f50.google.com with SMTP id 197so4912070wmk.1\n\tfor <dev@dpdk.org>; Thu, 29 Sep 2016 02:42:07 -0700 (PDT)", "from XPS13.localdomain (184.203.134.77.rev.sfr.net.\n\t[77.134.203.184]) by smtp.gmail.com with ESMTPSA id\n\tu72sm13581314wmu.10.2016.09.29.02.42.05\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tThu, 29 Sep 2016 02:42:06 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id;\n\tbh=63T9IniFM+Y9yKxr+fdhSDxnFFxcRxFOU9b7VpupckQ=;\n\tb=r4WGwfrQIrMtC4KoZUVw07bcw+NJrZogYotOGa5P1jzLu4MMjlUu+STKnfJq0WnBX/\n\tyiSmthufOiZ5qB7O4xMs2okwsZEWRBtYQaLJW0oyziP7JHSUXaJBGz0XOCKUq4TdW3S6\n\tkFAJqsnuyqR9aagAHhdZ2C5EaFPR3RMUbd/pup4ozlGA+5dvw++ObQfuHoz+bFgHcxmX\n\tvwlkTi8h6XTyBIV61mVOYH1/f589FrMyO1Yio3FbwzGQ+x0V0bt5BiNW06H8029PAV98\n\tfy1nw+JuFW2Dypgz5L5BGk478bwxiejsEXeJVAxsqYgwTyaxZ4eAEqTHirQnFtFiOKCs\n\t3qtw==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=63T9IniFM+Y9yKxr+fdhSDxnFFxcRxFOU9b7VpupckQ=;\n\tb=PVFqOMQaT5C5YYS/miSQAKtYKK5sQU88OUp+36r6x+tw/+OOsK6TibpxRVuUJXVJfw\n\tU+TBAddt6FDLAHCCCDGXiRwX2cli+EHlcn2mZkCTFh2jRqbUSN3Gia+lWASbVZHcn40N\n\tMgslSp7h9nh15XkNT8UOYZs1PecB2nW++rK9ZmXLsFyOkERsuBWQROsFPYiMkw//s1fY\n\tKQFwdbno0oE4GLvJLKbmb6HnxLBBKtQwAFGmX2fOJrW8pBJ1kXGYGPfIR5V/oc5sSVdh\n\tzdbDdt/7gMnx4FdOdXK+tM9/0XeGzQXn0/BWrY94079Lf3JxyFawS3GrMAvuPOFp3/IE\n\tSqiQ==", "X-Gm-Message-State": "AA6/9RmrrtsmDOW4Ck0CN0Z8dVlzDsAWg831K6k+I1qeau9nyJZCTtWulnhIcODIN0xUsuUl", "X-Received": "by 10.28.223.67 with SMTP id w64mr1780427wmg.84.1475142127066;\n\tThu, 29 Sep 2016 02:42:07 -0700 (PDT)", "From": "Thomas Monjalon <thomas.monjalon@6wind.com>", "To": "dev@dpdk.org", "Cc": "Yuanhan Liu <yuanhan.liu@linux.intel.com>", "Date": "Thu, 29 Sep 2016 11:41:50 +0200", "Message-Id": "<1475142110-8294-1-git-send-email-thomas.monjalon@6wind.com>", "X-Mailer": "git-send-email 2.7.0", "Subject": "[dpdk-dev] [PATCH] scripts: show fixes with release version of bug", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "patches and discussions about DPDK <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "This script can help to find commits to backport in stable branches.\n\nFixes are found if there is the word \"fix\" in the headline or\nif there is a tag Fixes: or Reverts: in the message.\nChained fixes of fixes are explored to find the oldest origin.\nFixes of not released bugs are ignored.\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\n scripts/git-log-fixes.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 63 insertions(+)\n create mode 100755 scripts/git-log-fixes.sh", "diff": "diff --git a/scripts/git-log-fixes.sh b/scripts/git-log-fixes.sh\nnew file mode 100755\nindex 0000000..cb7ed2e\n--- /dev/null\n+++ b/scripts/git-log-fixes.sh\n@@ -0,0 +1,63 @@\n+#! /bin/sh -e\n+\n+if [ $# -lt 1 ] ; then\n+\techo 'range argument required' >&2\n+\texit 1\n+fi\n+range=\"$*\"\n+\n+# get major release version of a commit\n+commit_version () # <hash>\n+{\n+\ttag=$(git tag -l --contains $1 | head -n1)\n+\tif [ -z \"$tag\" ] ; then\n+\t\t# before -rc1 tag of release in progress\n+\t\tmake showversion | cut -d'.' -f-2\n+\telse\n+\t\techo $tag | sed 's,^v,,' | sed 's,-rc.*,,'\n+\tfi\n+}\n+\n+# get bug origin hashes of a fix\n+origin_filter () # <hash>\n+{\n+\tgit log --format='%b' -1 $1 |\n+\tsed -n 's,^ *\\([Ff]ixes\\|[Rr]everts\\): *\\([0-9a-f]*\\).*,\\2,p'\n+}\n+\n+# get oldest major release version of bug origins\n+origin_version () # <origin_hash> ...\n+{\n+\tfor origin in $* ; do\n+\t\t# check hash is valid\n+\t\tgit rev-parse -q --verify $1 >&- || continue\n+\t\t# get version of this bug origin\n+\t\tlocal origver=$(commit_version $origin)\n+\t\tlocal roothashes=$(origin_filter $origin)\n+\t\tif [ -n \"$roothashes\" ] ; then\n+\t\t\t# look chained fix of fix recursively\n+\t\t\tlocal rootver=\"$(origin_version $roothashes)\"\n+\t\t\t[ -n \"$rootver\" ] || continue\n+\t\t\techo \"$rootver (partially fixed in $origver)\"\n+\t\telse\n+\t\t\techo \"$origver\"\n+\t\tfi\n+\t# filter the oldest origin\n+\tdone | sort -uV | head -n1\n+}\n+\n+git log --oneline --reverse $range |\n+while read id headline ; do\n+\torigins=$(origin_filter $id)\n+\t[ -n \"$origins\" ] || echo \"$headline\" | grep -q fix || continue\n+\tversion=$(commit_version $id)\n+\tif [ -n \"$origins\" ] ; then\n+\t\torigver=\"$(origin_version $origins)\"\n+\t\t[ -n \"$origver\" ] || continue\n+\t\t# ignore fix of bug introduced in the same release\n+\t\t! echo \"$origver\" | grep -q \"^$version\" || continue\n+\telse\n+\t\torigver='N/A'\n+\tfi\n+\tprintf '%s %7s %s (%s)\\n' $version $id \"$headline\" \"$origver\"\n+done\n", "prefixes": [ "dpdk-dev" ] }{ "id": 16210, "url": "