Instructions on the new "push request" workflow for 3.5.0rc1+ through 3.5.0 final

As of Python 3.5.0rc1, the canonical repository for Python 3.5.0 is *no longer* on hg.python.org. Instead, it's hosted on Bitbucket on my personal account, here:
https://bitbucket.org/larry/cpython350
Since 3.5.0rc1 isn't out yet I'm keeping the repository private for now. Once 3.5.0 rc1 is released (hopefully Monday) I'll flip the switch and make the repository public. (I'll email python-dev and python-committers when that happens.)
Putting it succinctly, here's a table of versions and where you'd check in for your change to go there:
3.5.0 : https://bitbucket.org/larry/cpython350 (branch "3.5")
3.5.1 : hg.python.org/cpython (branch "3.5")
3.6.0 : hg.python.org/cpython (branch "default")
You'll notice nobody but myself has checkin permissions for my 3.5.0 repo on Bitbucket. That's on purpose. The only way you can get changes in to 3.5.0 now is by sending me a Bitbucket "pull request". This is a workflow experiment, to see if we as a community like this sort of new-fangled gizmo.
For now, we're only using Bitbucket for the actual final checking-in stage. Requests for fixes to be accepted into 3.5.0 and code review will all still happen on the Python issue tracker.
Also, I'm officially now asking you folks to do the forward-merge into 3.5.1 and 3.6.0 yourselves.
Here's how to get a fix checked in for 3.5.0, starting with 3.5.0rc1+ and continuing through until 3.5.0 final.
Pre-requisites:
- You must have a Bitbucket account.
- You must have commit rights to the CPython repository.
Create an issue on the Python issue tracker for the problem.
Submit a patch that fixes the problem.
Add me to the issue and get me to agree that it needs fixing in 3.5.0. (You can attempt this step before 2 if you prefer.)
Fork my repository into your Bitbucket account using their web GUI. To do that, go to Bitbucket, log in, then go to my 3.5.0 repo:
https://bitbucket.org/larry/cpython350
and press the "Fork" link in the left column. Bitbucket has a tutorial on how to do this, here:
https://confluence.atlassian.com/display/BITBUCKET/Fork+a+teammate%27s+repos...
Note: DO NOT start with a conventional CPython trunk cloned from
hg.python.org. The 3.5 branch in my repo and the 3.5 branch in normal
CPython trunk have intentionally diverged and *need* to stay
out-of-sync.
Make a local clone of your fork on your computer.
Bitbucket has a tutorial on how to do that, here:
https://confluence.atlassian.com/display/BITBUCKET/Copy+your+Mercurial+repos...
Reminder: switch to the 3.5 branch!
Apply your change to the 3.5 branch and check in.
Reminder: check in to the 3.5 branch!
Make sure you checked in your change to the 3.5 branch.
Reminder: Seriously. I keep messing this up. I say, the more
reminders, the better.
Push your change back to *your* fork on *your* Bitbucket account.
Just normal "hg push" should work here.
In case it helps, I recommend using the "https" protocol for this
step, as it sidesteps ssh authentication and prompts you for your Bitbucket username and password.
Create a pull request using Bitbucket's web GUI.
Bitbucket has a tutorial on how to create a pull request, here:
https://confluence.atlassian.com/display/BITBUCKET/Create+a+pull+request
On the "Create pull request" web GUI, make sure that you specify
branch "3.5" for *both* your repo *and* my repo. Also, make sure
you *don't* check the "Close 3.5 after the pull request is merged"
check box.
(If you use the "Compare" page, you also need to select "3.5" in both
drop-down lists--one for my repo, and one for yours.)
Paste a link to the pull request into the issue tracker issue for this change request.
Wait for confirmation that I've accepted your pull request into the 3.5.0 repo.
Pull your accepted change from your local Bitbucket fork repo into a normal hg.cpython.org CPython repo, merge into 3.5, then merge into 3.6, then push.
For the record, here's what *my* workflow looks like when I accept your pull request:
Click on the URL you pasted into the pull request.
Visually check that the diff matches the approved diff in the issue on the issue tracker.
Click on the "Merge" button.
Frequently Asked Questions
Q: What if someone sends me a "pull request" for a change that doesn't merge cleanly? A: Then I'll decline it, and ask you on the issue tracker to rebase and resubmit.
Q: What if someone sends me a "pull request" but they don't have commit rights to CPython? A: I'll ignore it. I'll only pay attention to pull requests pasted into the issue tracker by someone with commit rights.
Q: Whose name goes on the commit? A: It gets the name the checkin was made with. Don't worry, your name will stay on your commit.
Q: This seems like a lot more work than the old way. A: For you guys, yes. But notice how little work it is for *me*! Seriously.
Q: Can I reuse my fork / my local copy? Or do I have to create a fresh one each time? A: I don't care either way. All I care about are clean pull requests. If you're careful you should have no trouble reusing forks and local checkouts. If it were me, I'd probably use a fresh fork each time. Forks are cheap and this way is cleaner.
I'll add these instructions to the Python Dev Guide in the next day or two.
/arry
p.s. Remember to use the 3.5 branch!

A quick hg tip for making sure you check out the right branch: end the URL on #3.5 and it will start the repo out with the 3.5 as the active branch.
On Mon, Aug 10, 2015, 01:28 Larry Hastings larry@hastings.org wrote:
As of Python 3.5.0rc1, the canonical repository for Python 3.5.0 is *no longer* on hg.python.org. Instead, it's hosted on Bitbucket on my personal account, here:
https://bitbucket.org/larry/cpython350
Since 3.5.0rc1 isn't out yet I'm keeping the repository private for now. Once 3.5.0 rc1 is released (hopefully Monday) I'll flip the switch and make the repository public. (I'll email python-dev and python-committers when that happens.)
Putting it succinctly, here's a table of versions and where you'd check in for your change to go there:
3.5.0 : https://bitbucket.org/larry/cpython350 (branch "3.5") 3.5.1 : hg.python.org/cpython (branch "3.5") 3.6.0 : hg.python.org/cpython (branch "default")
You'll notice nobody but myself has checkin permissions for my 3.5.0 repo on Bitbucket. That's on purpose. The only way you can get changes in to 3.5.0 now is by sending me a Bitbucket "pull request". This is a workflow experiment, to see if we as a community like this sort of new-fangled gizmo.
For now, we're only using Bitbucket for the actual final checking-in stage. Requests for fixes to be accepted into 3.5.0 and code review will all still happen on the Python issue tracker.
Also, I'm officially now asking you folks to do the forward-merge into 3.5.1 and 3.6.0 yourselves.
Here's how to get a fix checked in for 3.5.0, starting with 3.5.0rc1+ and continuing through until 3.5.0 final.
Pre-requisites:
- You must have a Bitbucket account.
- You must have commit rights to the CPython repository.
Create an issue on the Python issue tracker for the problem.
Submit a patch that fixes the problem.
Add me to the issue and get me to agree that it needs fixing in 3.5.0. (You can attempt this step before 2 if you prefer.)
Fork my repository into your Bitbucket account using their web GUI. To do that, go to Bitbucket, log in, then go to my 3.5.0 repo:
https://bitbucket.org/larry/cpython350
and press the "Fork" link in the left column. Bitbucket has a
tutorial on how to do this, here:
https://confluence.atlassian.com/display/BITBUCKET/Fork+a+teammate%27s+repos...
Note: DO NOT start with a conventional CPython trunk cloned from hg.python.org. The 3.5 branch in my repo and the 3.5 branch in
normal CPython trunk have intentionally diverged and *need* to stay out-of-sync.
Make a local clone of your fork on your computer.
Bitbucket has a tutorial on how to do that, here:
https://confluence.atlassian.com/display/BITBUCKET/Copy+your+Mercurial+repos...
Reminder: switch to the 3.5 branch!
Apply your change to the 3.5 branch and check in.
Reminder: check in to the 3.5 branch!
Make sure you checked in your change to the 3.5 branch.
Reminder: Seriously. I keep messing this up. I say, the more
reminders, the better.
Push your change back to *your* fork on *your* Bitbucket account.
Just normal "hg push" should work here.
In case it helps, I recommend using the "https" protocol for this
step, as it sidesteps ssh authentication and prompts you for your Bitbucket username and password.
Create a pull request using Bitbucket's web GUI.
Bitbucket has a tutorial on how to create a pull request, here:
https://confluence.atlassian.com/display/BITBUCKET/Create+a+pull+request
On the "Create pull request" web GUI, make sure that you specify branch "3.5" for *both* your repo *and* my repo. Also, make sure you *don't* check the "Close 3.5 after the pull request is merged" check box. (If you use the "Compare" page, you also need to select "3.5" in both drop-down lists--one for my repo, and one for yours.)
Paste a link to the pull request into the issue tracker issue for this change request.
Wait for confirmation that I've accepted your pull request into the 3.5.0 repo.
Pull your accepted change from your local Bitbucket fork repo into a normal hg.cpython.org CPython repo, merge into 3.5, then merge into 3.6, then push.
For the record, here's what *my* workflow looks like when I accept your pull request:
Click on the URL you pasted into the pull request.
Visually check that the diff matches the approved diff in the issue on the issue tracker.
Click on the "Merge" button.
Frequently Asked Questions
Q: What if someone sends me a "pull request" for a change that doesn't merge cleanly? A: Then I'll decline it, and ask you on the issue tracker to rebase and resubmit.
Q: What if someone sends me a "pull request" but they don't have commit rights to CPython? A: I'll ignore it. I'll only pay attention to pull requests pasted into the issue tracker by someone with commit rights.
Q: Whose name goes on the commit? A: It gets the name the checkin was made with. Don't worry, your name will stay on your commit.
Q: This seems like a lot more work than the old way. A: For you guys, yes. But notice how little work it is for *me*! Seriously.
Q: Can I reuse my fork / my local copy? Or do I have to create a fresh one each time? A: I don't care either way. All I care about are clean pull requests. If you're careful you should have no trouble reusing forks and local checkouts. If it were me, I'd probably use a fresh fork each time. Forks are cheap and this way is cleaner.
I'll add these instructions to the Python Dev Guide in the next day or two.
/arry
p.s. Remember to use the 3.5 branch! _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/brett%40python.org

On 08/10/2015 01:27 AM, Larry Hastings wrote:
As of Python 3.5.0rc1, the canonical repository for Python 3.5.0 is *no longer* on hg.python.org. Instead, it's hosted on Bitbucket on my personal account, here:
https://bitbucket.org/larry/cpython350
Since 3.5.0rc1 isn't out yet I'm keeping the repository private for now. Once 3.5.0 rc1 is released (hopefully Monday) I'll flip the switch and make the repository public. (I'll email python-dev and python-committers when that happens.)
Python 3.5.0rc1 just went live. So, as promised, I've flipped the switch--my "cpython350" repository is now public.
En garde,
//arry/
participants (2)
-
Brett Cannon
-
Larry Hastings