<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There are currently 2 ways in Patchwork to autodelegate patches. Patchwork can either parse the hint header (X-Patchwork-Delegate), or it can lookup the fnmatch-formatted rules for the project.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Projects using a MAINTAINERS file might want to use the same rules they already have there for delegation. These rules can be in the hundreds, and they can change very often. Managing these manually in django’s admin interface can be a
 bit hard (I have even seen that Django will render them extremely slowly, will cause very high CPU usage, and 5xx timeouts when loading a project’s admin page).<o:p></o:p></p>
<p class="MsoNormal">Adding these rules can be automated using django’s management shell, however, there are cases where more complex rules might be needed to find the right delegate. An example is projects with a hierarchy of trees and maintainers, were patches
 changing files in more than a single sub-tree usually require delegating to the maintainer of a higher-level tree. Current rule priorities don’t support such a case, because we would need to consider all files changed at once, not separately.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Can we implement a hook that would call an external and project-specific script in parser.py (specifically in find_delegate_by_filename()) to resolve the issues above? The script would be expected to take the filenames as an argument, and
 output a delegates email. This way, any complicated rules could be managed by that script.<o:p></o:p></p>
<p class="MsoNormal">I realize there might be security implications to this though. Please let me know what you think.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<br>
Ali<o:p></o:p></p>
</div>
</body>
</html>