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