get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2499/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2499,
    "url": "https://patches.dpdk.org/api/patches/2499/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com",
    "date": "2015-01-23T12:54:13",
    "name": "[dpdk-dev] maintainers: start a Linux-style file",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "68300c8ab4050ec2abcd6206304d952df7c8fa6a",
    "submitter": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/people/1/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas.monjalon@6wind.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/2499/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/2499/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 0F2CB5B02;\n\tFri, 23 Jan 2015 13:54:50 +0100 (CET)",
            "from mail-wg0-f41.google.com (mail-wg0-f41.google.com\n\t[74.125.82.41]) by dpdk.org (Postfix) with ESMTP id 43D785B01\n\tfor <dev@dpdk.org>; Fri, 23 Jan 2015 13:54:48 +0100 (CET)",
            "by mail-wg0-f41.google.com with SMTP id a1so7348661wgh.0\n\tfor <dev@dpdk.org>; Fri, 23 Jan 2015 04:54:48 -0800 (PST)",
            "from localhost.localdomain (136-92-190-109.dsl.ovh.fr.\n\t[109.190.92.136]) by mx.google.com with ESMTPSA id\n\tc10sm2133213wjy.4.2015.01.23.04.54.46 for <dev@dpdk.org>\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 23 Jan 2015 04:54:47 -0800 (PST)"
        ],
        "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:subject:date:message-id:mime-version\n\t:content-type:content-transfer-encoding;\n\tbh=4qD7m7HT3p5ML0hj4lZ3V34rOQesSg8P+iTlcHdnZ1o=;\n\tb=j+lUJcn3VYe1S4G4Cmtn8G+haSHvtw/rapOuag0sA4Il/D4HBp62fSl/GqWk/2axHM\n\t52RhfA3JZdnvStuu0KY2UquCyhvLXBYsVgwAG9K0i3FQ3xDXdsx4k3DW4LWVATBeJPe3\n\tFA0Y4xo68FKUYqRxbsAYiU94pab13qhRhX1d72MZ+cab7fCk1fOpJgA00x8sL2vbJ8Fc\n\tl9w6c2qYg5XhCsA/bMz0jOkUBBsHNmQf5II1hVxKOeJNVlKJbTZxhGaGD5wuGOEt2OQc\n\tLgCNQGNmEpWFKzRw7HMtzSfc4MN9xJfm9Et7En4Tpfbg8o+8ocxkLADXFXl3SqP7Y/0x\n\tR/sg==",
        "X-Gm-Message-State": "ALoCoQmc20EUIm0n5lQk1JtdBuxVmVOs0gWrdF3yxUeUB8Wwzs6BewVLIZH3O59ydkF0RhPQkarK",
        "X-Received": "by 10.194.236.200 with SMTP id uw8mr14188006wjc.10.1422017687926;\n\tFri, 23 Jan 2015 04:54:47 -0800 (PST)",
        "From": "Thomas Monjalon <thomas.monjalon@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 23 Jan 2015 13:54:13 +0100",
        "Message-Id": "<1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.2.2",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH] maintainers: start a Linux-style file",
        "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 MAINTAINERS file is inspired from the Linux one.\n\nAlmost all files are split into areas in order to identify maintainers of\neach DPDK area. Note that a maintainer is not a git tree manager.\nCandidates are welcome to send a patch to sign up for one or several areas.\n\nThere is a script to check covering, especially when adding or moving files.\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\n MAINTAINERS                  | 388 +++++++++++++++++++++++++++++++++++++++++++\n scripts/check-maintainers.sh |  85 ++++++++++\n 2 files changed, 473 insertions(+)\n create mode 100644 MAINTAINERS\n create mode 100755 scripts/check-maintainers.sh",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nnew file mode 100644\nindex 0000000..1f7d04a\n--- /dev/null\n+++ b/MAINTAINERS\n@@ -0,0 +1,388 @@\n+DPDK Maintainers\n+================\n+\n+The intention of this file is to provide a set of names that we can rely on\n+for helping in patch reviews and questions.\n+These names are additional recipients for emails sent to dev@dpdk.org.\n+Please avoid private emails.\n+\n+Descriptions of section entries:\n+\n+\tM: Maintainer's Full Name <address@domain>\n+\tT: Git tree location.\n+\tF: Files and directories with wildcard patterns.\n+\t   A trailing slash includes all files and subdirectory files.\n+\t   A wildcard includes all files but not subdirectories.\n+\t   One pattern per line. Multiple F: lines acceptable.\n+\tX: Files and directories exclusion, same rules as F:\n+\tK: Keyword regex pattern to match content.\n+\t   One regex pattern per line. Multiple K: lines acceptable.\n+\n+\n+General Project Administration\n+------------------------------\n+M: Thomas Monjalon <thomas.monjalon@6wind.com>\n+T: git://dpdk.org/dpdk\n+F: MAINTAINERS\n+F: scripts/check-maintainers.sh\n+\n+\n+Security Issues\n+---------------\n+M: maintainers@dpdk.org\n+\n+\n+Documentation (with overlaps)\n+-------------\n+F: doc/\n+\n+\n+Build System\n+------------\n+F: GNUmakefile\n+F: Makefile\n+F: config/\n+F: mk/\n+F: pkg/\n+F: scripts/depdirs-rule.sh\n+F: scripts/gen-build-mk.sh\n+F: scripts/gen-config-h.sh\n+F: scripts/relpath.sh\n+\n+\n+Environment Abstraction Layer\n+-----------------------------\n+\n+EAL API and common code\n+M: Thomas Monjalon <thomas.monjalon@6wind.com>\n+F: lib/librte_eal/common/*\n+F: lib/librte_eal/common/include/*\n+F: lib/librte_eal/common/include/generic/\n+F: app/test/test_alarm.c\n+F: app/test/test_atomic.c\n+F: app/test/test_byteorder.c\n+F: app/test/test_common.c\n+F: app/test/test_cpuflags.c\n+F: app/test/test_cycles.c\n+F: app/test/test_debug.c\n+F: app/test/test_devargs.c\n+F: app/test/test_eal*\n+F: app/test/test_errno.c\n+F: app/test/test_func_reentrancy.c\n+F: app/test/test_interrupts.c\n+F: app/test/test_logs.c\n+F: app/test/test_memcpy*\n+F: app/test/test_memory.c\n+F: app/test/test_memzone.c\n+F: app/test/test_pci.c\n+F: app/test/test_per_lcore.c\n+F: app/test/test_prefetch.c\n+F: app/test/test_rwlock.c\n+F: app/test/test_spinlock.c\n+F: app/test/test_string_fns.c\n+F: app/test/test_tailq.c\n+F: app/test/test_version.c\n+\n+Secondary process\n+K: RTE_PROC_\n+F: doc/guides/prog_guide/multi_proc_support.rst\n+F: app/test/test_mp_secondary.c\n+F: examples/multi_process/\n+F: doc/guides/sample_app_ug/multi_process.rst\n+\n+IBM Power\n+F: lib/librte_eal/common/include/arch/ppc_64/\n+\n+Intel x86\n+F: lib/librte_eal/common/include/arch/x86/\n+\n+Linux EAL (with overlaps)\n+F: lib/librte_eal/linuxapp/Makefile\n+F: lib/librte_eal/linuxapp/eal/\n+F: doc/guides/linux_gsg/\n+\n+Linux UIO\n+F: lib/librte_eal/linuxapp/igb_uio/\n+F: lib/librte_eal/linuxapp/eal/*uio*\n+\n+Linux VFIO\n+F: lib/librte_eal/linuxapp/eal/*vfio*\n+\n+Linux Xen\n+F: lib/librte_eal/linuxapp/xen_dom0/\n+F: lib/librte_eal/linuxapp/eal/*xen*\n+F: lib/librte_eal/linuxapp/eal/include/exec-env/rte_dom0_common.h\n+F: lib/librte_mempool/rte_dom0_mempool.c\n+F: lib/librte_pmd_xenvirt/\n+F: app/test-pmd/mempool_*\n+F: examples/vhost_xen/\n+F: doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst\n+\n+FreeBSD EAL (with overlaps)\n+F: lib/librte_eal/bsdapp/Makefile\n+F: lib/librte_eal/bsdapp/eal/\n+F: doc/guides/freebsd_gsg/\n+\n+FreeBSD contigmem\n+F: lib/librte_eal/bsdapp/contigmem/\n+\n+FreeBSD UIO\n+F: lib/librte_eal/bsdapp/nic_uio/\n+\n+\n+Core Libraries\n+--------------\n+\n+Memory management\n+F: lib/librte_malloc/\n+F: doc/guides/prog_guide/malloc_lib.rst\n+F: app/test/test_malloc.c\n+F: lib/librte_mempool/\n+F: doc/guides/prog_guide/mempool_lib.rst\n+F: app/test/test_mempool*\n+F: app/test/test_func_reentrancy.c\n+\n+Ring queue\n+F: lib/librte_ring/\n+F: app/test/test_ring*\n+F: app/test/test_func_reentrancy.c\n+\n+Packet buffer\n+F: lib/librte_mbuf/\n+F: doc/guides/prog_guide/mbuf_lib.rst\n+F: app/test/test_mbuf.c\n+\n+Ethernet API\n+M: Thomas Monjalon <thomas.monjalon@6wind.com>\n+F: lib/librte_ether/\n+\n+\n+Drivers\n+-------\n+\n+Link bonding\n+F: lib/librte_pmd_bond/\n+F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst\n+F: app/test/test_link_bonding.c\n+\n+Linux KNI\n+F: lib/librte_eal/linuxapp/kni/\n+F: lib/librte_kni/\n+F: doc/guides/prog_guide/kernel_nic_interface.rst\n+F: app/test/test_kni.c\n+F: examples/kni/\n+F: doc/guides/sample_app_ug/kernel_nic_interface.rst\n+\n+Linux AF_PACKET\n+F: lib/librte_pmd_af_packet/\n+\n+Cisco enic\n+F: lib/librte_pmd_enic/\n+\n+Intel e1000\n+F: lib/librte_pmd_e1000/\n+\n+Intel ixgbe\n+F: lib/librte_pmd_ixgbe/\n+\n+Intel i40e\n+F: lib/librte_pmd_i40e/\n+\n+RedHat virtio\n+F: lib/librte_pmd_virtio/\n+F: doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst\n+F: lib/librte_vhost/\n+F: doc/guides/prog_guide/vhost_lib.rst\n+F: examples/vhost/\n+F: doc/guides/sample_app_ug/vhost.rst\n+\n+VMware vmxnet3\n+F: lib/librte_pmd_vmxnet3/\n+F: doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst\n+\n+PCAP PMD\n+F: lib/librte_pmd_pcap/\n+F: doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst\n+\n+Ring PMD\n+F: lib/librte_pmd_ring/\n+F: doc/guides/prog_guide/ring_lib.rst\n+F: app/test/test_pmd_ring.c\n+\n+\n+Packet processing\n+-----------------\n+\n+Network headers\n+F: lib/librte_net/\n+\n+IP fragmentation & reassembly\n+F: lib/librte_ip_frag/\n+F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst\n+F: examples/ip_fragmentation/\n+F: doc/guides/sample_app_ug/ip_frag.rst\n+F: examples/ip_reassembly/\n+F: doc/guides/sample_app_ug/ip_reassembly.rst\n+\n+Distributor\n+F: lib/librte_distributor/\n+F: doc/guides/prog_guide/packet_distrib_lib.rst\n+F: app/test/test_distributor*\n+F: examples/distributor/\n+F: doc/guides/sample_app_ug/dist_app.rst\n+\n+Hierarchical scheduler\n+F: lib/librte_sched/\n+F: doc/guides/prog_guide/qos_framework.rst\n+F: app/test/test_red.c\n+F: app/test/test_sched.c\n+F: examples/qos_sched/\n+F: doc/guides/sample_app_ug/qos_scheduler.rst\n+\n+\n+Packet Framework\n+----------------\n+F: lib/librte_pipeline/\n+F: lib/librte_port/\n+F: lib/librte_table/\n+F: doc/guides/prog_guide/packet_framework.rst\n+F: app/test/test_table*\n+F: app/test-pipeline/\n+F: doc/guides/sample_app_ug/test_pipeline.rst\n+F: examples/ip_pipeline/\n+F: doc/guides/sample_app_ug/internet_proto_ip_pipeline.rst\n+\n+\n+Algorithms\n+----------\n+\n+ACL\n+F: lib/librte_acl/\n+F: doc/guides/prog_guide/packet_classif_access_ctrl.rst\n+F: app/test-acl/\n+F: app/test/test_acl.*\n+F: examples/l3fwd-acl/\n+F: doc/guides/sample_app_ug/l3_forward_access_ctrl.rst\n+\n+Hashes\n+F: lib/librte_hash/\n+F: doc/guides/prog_guide/hash_lib.rst\n+F: app/test/test_hash*\n+F: app/test/test_func_reentrancy.c\n+\n+LPM\n+F: lib/librte_lpm/\n+F: doc/guides/prog_guide/lpm*\n+F: app/test/test_lpm*\n+F: app/test/test_func_reentrancy.c\n+\n+Traffic metering\n+F: lib/librte_meter/\n+F: doc/guides/sample_app_ug/qos_scheduler.rst\n+F: app/test/test_meter.c\n+F: examples/qos_meter/\n+F: doc/guides/sample_app_ug/qos_metering.rst\n+\n+\n+Other libraries\n+---------------\n+\n+Configuration file\n+F: lib/librte_cfgfile/\n+\n+Interactive command line\n+F: lib/librte_cmdline/\n+F: app/cmdline_test/\n+F: app/test/test_cmdline*\n+F: examples/cmdline/\n+F: doc/guides/sample_app_ug/cmd_line.rst\n+\n+Qemu IVSHMEM\n+F: lib/librte_ivshmem/\n+F: lib/librte_eal/linuxapp/eal/eal_ivshmem.c\n+F: doc/guides/prog_guide/ivshmem_lib.rst\n+F: app/test/test_ivshmem.c\n+F: examples/l2fwd-ivshmem/\n+\n+Key/Value parsing\n+F: lib/librte_kvargs/\n+F: app/test/test_kvargs.c\n+\n+Power management\n+F: lib/librte_power/\n+F: doc/guides/prog_guide/power_man.rst\n+F: app/test/test_power*\n+F: examples/l3fwd-power/\n+F: doc/guides/sample_app_ug/l3_forward_power_man.rst\n+F: examples/vm_power_manager/\n+F: doc/guides/sample_app_ug/vm_power_management.rst\n+\n+Timers\n+F: lib/librte_timer/\n+F: doc/guides/prog_guide/timer_lib.rst\n+F: app/test/test_timer*\n+F: examples/timer/\n+F: doc/guides/sample_app_ug/timer.rst\n+\n+\n+Test Applications\n+-----------------\n+\n+Unit tests framework\n+F: app/test/autotest*\n+F: app/test/commands.c\n+F: app/test/packet_burst_generator.c\n+F: app/test/packet_burst_generator.h\n+F: app/test/process.h\n+F: app/test/test.c\n+F: app/test/test.h\n+F: app/test/test_pmd_perf.c\n+F: app/test/virtual_pmd.c\n+F: app/test/virtual_pmd.h\n+\n+Driver testing tool\n+F: app/test-pmd/\n+F: doc/guides/testpmd_app_ug/\n+\n+\n+Other Example Applications\n+--------------------------\n+\n+F: examples/dpdk_qat/\n+F: doc/guides/sample_app_ug/intel_quickassist.rst\n+\n+F: examples/exception_path/\n+F: doc/guides/sample_app_ug/exception_path.rst\n+\n+F: examples/helloworld/\n+F: doc/guides/sample_app_ug/hello_world.rst\n+\n+F: examples/ipv4_multicast/\n+F: doc/guides/sample_app_ug/ipv4_multicast.rst\n+\n+F: examples/l2fwd/\n+F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst\n+\n+F: examples/l3fwd/\n+F: doc/guides/sample_app_ug/l3_forward.rst\n+\n+F: examples/l3fwd-vf/\n+F: doc/guides/sample_app_ug/l3_forward_virtual.rst\n+\n+F: examples/link_status_interrupt/\n+F: doc/guides/sample_app_ug/link_status_intr.rst\n+\n+F: examples/load_balancer/\n+F: doc/guides/sample_app_ug/load_balancer.rst\n+\n+F: examples/netmap_compat/\n+F: doc/guides/sample_app_ug/netmap_compatibility.rst\n+\n+F: examples/quota_watermark/\n+F: doc/guides/sample_app_ug/quota_watermark.rst\n+\n+F: examples/skeleton/\n+\n+F: examples/vmdq/\n+F: examples/vmdq_dcb/\n+F: doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst\ndiff --git a/scripts/check-maintainers.sh b/scripts/check-maintainers.sh\nnew file mode 100755\nindex 0000000..fbee8bb\n--- /dev/null\n+++ b/scripts/check-maintainers.sh\n@@ -0,0 +1,85 @@\n+#! /bin/sh\n+\n+# Do some basic checks in MAINTAINERS file\n+\n+cd $(dirname $0)/..\n+\n+# Get files matching paths with wildcards and / meaning recursing\n+files () # <path> [<path> ...]\n+{\n+\tif [ -z \"$1\" ] ; then\n+\t\treturn\n+\tfi\n+\tif [ -d .git ] ; then\n+\t\tgit ls-files \"$1\"\n+\telse\n+\t\tfind \"$1\" -type f |\n+\t\tsed 's,^\\./,,'\n+\tfi |\n+\t# if not ended by /\n+\tif ! echo \"$1\" | grep -q '/[[:space:]]*$' ; then\n+\t\t# filter out deeper directories\n+\t\tsed \"/\\(\\/[^/]*\\)\\{$(($(echo \"$1\" | grep -o / | wc -l) + 1))\\}/d\"\n+\telse\n+\t\tcat\n+\tfi\n+\tshift\n+\tfiles \"$@\"\n+}\n+\n+# Get all files matching F: and X: fields\n+parse_fx () # <index file>\n+{\n+\tIFS='\n+'\n+\t# parse each line excepted underlining\n+\tfor line in $( (grep -v '^-\\+$' $1 && echo) | sed 's,^$,§,') ; do\n+\t\tif echo \"$line\" | grep -q '^§$' ; then\n+\t\t\t# empty line delimit end of section\n+\t\t\twhitelist=$(files $flines)\n+\t\t\tblacklist=$(files $xlines)\n+\t\t\tmatch=$(aminusb \"$whitelist\" \"$blacklist\")\n+\t\t\tif [ -n \"$match\" ] ; then\n+\t\t\t\techo \"# $title\"\n+\t\t\t\techo \"$match\"\n+\t\t\tfi\n+\t\t\t# flush section\n+\t\t\tunset flines\n+\t\t\tunset xlines\n+\t\telif echo \"$line\" | grep -q '^[A-Z]: ' ; then\n+\t\t\t# file matching pattern\n+\t\t\tflines=$(add_line_to_if \"$line\" \"$flines\" \"F: \")\n+\t\t\t# file exclusion pattern\n+\t\t\txlines=$(add_line_to_if \"$line\" \"$xlines\" \"X: \")\n+\t\telse # assume it is a title\n+\t\t\ttitle=\"$line\"\n+\t\tfi\n+\tdone\n+}\n+\n+# Add a line to a set of lines if it begins with right pattern\n+add_line_to_if () # <new line> <lines> <head pattern>\n+{\n+\t(\n+\techo \"$2\"\n+\techo \"$1\" | sed -rn \"s,^$3(.*),\\1,p\"\n+\t) |\n+\tsed '/^$/d'\n+}\n+\n+# Subtract two sets of lines\n+aminusb () # <lines a> <lines b>\n+{\n+\tprintf \"$1\\n$2\\n$2\" | sort | uniq -u | sed '/^$/d'\n+}\n+\n+all=$(files ./)\n+listed=$(parse_fx MAINTAINERS | grep -v '^#' | sort -u)\n+\n+echo '##########'\n+echo '# files not listed'\n+echo '##########'\n+aminusb \"$all\" \"$listed\"\n+\n+# TODO: check overlaps\n+# TODO: check orphan area\n",
    "prefixes": [
        "dpdk-dev"
    ]
}