<div dir="ltr">Hi,<div><br></div><div>The cherry picker bot has just been deployed to CPython repo, codenamed miss-islington.</div><div><br></div><div><div>miss-islington made the very first backport PR for CPython and became a first time GitHub contributor: <a href="https://github.com/python/cpython/pull/3369">https://github.com/python/cpython/pull/3369</a> <br></div><div><br></div></div><div>GitHub repo: <a href="https://github.com/python/miss-islington">https://github.com/python/miss-islington</a></div><div><br></div><div>What is this?</div><div>==========</div><div><br></div><div><span style="font-family:arial,helvetica,sans-serif">As part of our </span>workflow,<span style="font-family:arial,helvetica,sans-serif"> quite often changes made on the master branch need to be backported to the earlier versions. (for example: from master to 3.6 and 2.7) </span><br></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Previously the backport has to be done manually by either a core developer or the original PR author.</font></div><div><br></div><div>With the bot, the backport PR is created automatically after the PR has been merged. A core developer will need to review the backport PR.</div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div>The issue was tracked in <a href="https://github.com/python/core-workflow/issues/8">https://github.com/python/core-workflow/issues/8</a></div></div><div><br></div><div>How it works</div><div>==========</div><div><br></div><div>1. If a PR needs to be backported to one of the maintenance branches, a core developer should apply the "needs backport to X.Y" label. Do this **before** you merge the PR. </div><div><br></div><div>2. Merge the PR</div><div><br></div><div>3. miss-islington will leave a comment on the PR, saying it is working on backporting the PR.</div><div><br></div><div>4. If there's no merge conflict, the PR should be created momentarily.</div><div><br></div><div>5. Review the backport PR created by miss-islington and merge it when you're ready.</div><div><br></div><div>Merge Conflicts / Problems?</div><div>======================</div><div><br></div><div>In case of merge conflicts, or if a backport PR was not created within 2 minutes, it likely failed and you should do the backport manually.</div><div><br></div><div>Manual backport can be done using cherry_picker: <a href="https://pypi.org/project/cherry-picker/">https://pypi.org/project/cherry-picker/</a> </div><div><br></div><div>Older merged PRs not yet backported?</div><div>==============================</div><div><br></div><div>At the moment, those need to be backported manually.</div><div><br></div><div>Don't want PR to be backported by a bot?</div><div>================================</div><div><br></div><div>My recommendation is to apply the "needs backport to X.Y" **after** the PR has been merged. The label is still useful to remind ourselves that this PR still needs backporting. </div><div><br></div><div>Who is Miss Islington?</div><div>=================</div><div><br></div><div>I found out from Wikipedia that Miss Islington is the name of the witch in Monty Python and The Holy Grail.</div><div><br></div><div>miss-islington has not signed the CLA!</div><div>=============================</div><div><br></div><div>A core dev can ignore the warning and merge the PR anyway.</div><div><br></div><div>Thanks!</div><div><br></div><div><br></div><div><div><div class="gmail_signature">Mariatta Wijaya</div></div>
</div></div>