Title: Clarify force-push usage for CPython PRs · Issue #579 · python/devguide · GitHub
Open Graph Title: Clarify force-push usage for CPython PRs · Issue #579 · python/devguide
X Title: Clarify force-push usage for CPython PRs · Issue #579 · python/devguide
Description: As someone who regularly reviews PRs from contributors with varying levels of experience with CPython's workflow, often times I find that they repeatedly squash old commits and force-push to the PR branch each time a new commit or round ...
Open Graph Description: As someone who regularly reviews PRs from contributors with varying levels of experience with CPython's workflow, often times I find that they repeatedly squash old commits and force-push to the PR...
X Description: As someone who regularly reviews PRs from contributors with varying levels of experience with CPython's workflow, often times I find that they repeatedly squash old commits and force-push to th...
Opengraph URL: https://github.com/python/devguide/issues/579
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Clarify force-push usage for CPython PRs","articleBody":"As someone who regularly reviews PRs from contributors with varying levels of experience with CPython's workflow, often times I find that they repeatedly squash old commits and force-push to the PR branch each time a new commit or round of commits are added (after it has been opened). In most cases, this makes the history of the PR much more difficult to follow for review purposes.\r\n\r\nI assume that their intention is to \"clean up\" the history and leave a single commit at the end for easier merging, but in reality this doesn't do much to help since core devs typically make use of GitHub's \"Squash and Merge\" feature or automerge via miss-islington to squash the commits.\r\n\r\nGuido mentioned this last year in https://discuss.python.org/t/pep-601-forbid-return-break-continue-breaking-out-of-finally/2239/42, but I just thought about it again after seeing it happen \"out in the wild\" recently across CPython PRs from different contributors.\r\n\r\nIt is mentioned at the end of [section 3.8](https://devguide.python.org/pullrequest/#submitting), but I think it could be made a bit more obvious since this seems to occur rather frequently, and can be disruptive to the PR review process. It's a fairly small, but repeated cost to core development resources that could be avoided.\r\n\r\nOne idea I had in mind was adding a note to the \"Quick Guide\", in [section 3.2](https://devguide.python.org/pullrequest/#quick-guide), which is likely what many contributors primarily consult and regularly refer back to:\r\n\r\nCurrent:\r\n```\r\nHere is a quick overview of how you can contribute to CPython:\r\n\r\n Create an issue that describes your change [*]\r\n Create a new branch in Git\r\n Work on changes (e.g. fix a bug or add a new feature)\r\n Run tests and make patchcheck\r\n Commit and push changes to your GitHub fork\r\n Create Pull Request on GitHub to merge a branch from your fork\r\n Review and address comments on your Pull Request\r\n When your changes are merged, you can delete the PR branch\r\n Celebrate contributing to CPython! :)\r\n``` \r\n\r\nRecommended:\r\n```\r\nHere is a quick overview of how you can contribute to CPython:\r\n\r\n Create an issue that describes your change [*]\r\n Create a new branch in Git\r\n Work on changes (e.g. fix a bug or add a new feature)\r\n Run tests and make patchcheck\r\n Commit and push changes to your GitHub fork\r\n Create Pull Request on GitHub to merge a branch from your fork\r\n Review and address comments on your Pull Request (without force-pushing)\r\n When your changes are merged, you can delete the PR branch\r\n Celebrate contributing to CPython! :)\r\n```\r\nAny other recommendations for locations that it could be mentioned would also be welcome, but that was the most impactful that I had in mind.","author":{"url":"https://github.com/aeros","@type":"Person","name":"aeros"},"datePublished":"2020-03-21T00:44:12.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/579/devguide/issues/579"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:a338d6a8-baa3-c492-22f4-77cca03fc981 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BE1A:E3F0D:1C3643E:24A8122:696B3922 |
| html-safe-nonce | 4d866f967ead4add94b7179d957647936f043fd82402e377785a8ee6c4a0507b |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRTFBOkUzRjBEOjFDMzY0M0U6MjRBODEyMjo2OTZCMzkyMiIsInZpc2l0b3JfaWQiOiI5MDkxNzM5NzQ3NzkxNjE2MjkwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 3b3f3376ad782a16a3fac17253c27e7c4813364a0e2eb05be159b176832af7b5 |
| hovercard-subject-tag | issue:585395335 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/devguide/579/issue_layout |
| twitter:image | https://opengraph.githubassets.com/fd157976f0ce0011d4f0904cabde2e3feed6fcc1eb4fff5995fea32c5ede61b9/python/devguide/issues/579 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/fd157976f0ce0011d4f0904cabde2e3feed6fcc1eb4fff5995fea32c5ede61b9/python/devguide/issues/579 |
| og:image:alt | As someone who regularly reviews PRs from contributors with varying levels of experience with CPython's workflow, often times I find that they repeatedly squash old commits and force-push to the PR... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | aeros |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| turbo-cache-control | no-preview |
| go-import | github.com/python/devguide git https://github.com/python/devguide.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 63972479 |
| octolytics-dimension-repository_nwo | python/devguide |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 63972479 |
| octolytics-dimension-repository_network_root_nwo | python/devguide |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 82560a55c6b2054555076f46e683151ee28a19bc |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width